Sha256: 6e6691ba6bbc57ef6c22648a0523192c67a9b932e4b6784622d8ed81be8e4910

Contents?: true

Size: 1.62 KB

Versions: 76

Compression:

Stored size: 1.62 KB

Contents

package twobucket

import "testing"

func runTestCase(t *testing.T, tc bucketTestCase) {
	g, m, other, e := Solve(tc.bucketOne, tc.bucketTwo, tc.goal, tc.startBucket)
	var _ error = e
	if e == nil {
		if tc.errorExpected {
			t.Fatalf("FAIL: %s\nSolve(%d, %d, %d, %q)\nExpected error\nActual: %q, %d, %d",
				tc.description,
				tc.bucketOne, tc.bucketTwo, tc.goal, tc.startBucket,
				g, m, other)
		}
		if g != tc.goalBucket || m != tc.moves || other != tc.otherBucket {
			t.Fatalf("FAIL: %s\nSolve(%d, %d, %d, %q)\nExpected: %q, %d, %d\nActual: %q, %d, %d",
				tc.description,
				tc.bucketOne, tc.bucketTwo, tc.goal, tc.startBucket,
				tc.goalBucket, tc.moves, tc.otherBucket,
				g, m, other)
		}
	} else if e != nil {
		if !tc.errorExpected {
			t.Fatalf("FAIL: %s\nSolve(%d, %d, %d, %q)\nExpected: %q, %d, %d\nGot Error %q",
				tc.description,
				tc.bucketOne, tc.bucketTwo, tc.goal, tc.startBucket,
				tc.goalBucket, tc.moves, tc.otherBucket,
				e)
		}
	}
	t.Logf("PASS: %s", tc.description)
}

func TestSolve(t *testing.T) {
	for _, tc := range append(testCases, errorTestCases...) {
		runTestCase(t, tc)
	}
}

func BenchmarkSolve(b *testing.B) {
	for i := 0; i < b.N; i++ {
		for _, tc := range append(testCases, errorTestCases...) {
			Solve(tc.bucketOne, tc.bucketTwo, tc.goal, tc.startBucket)
		}
	}
}

var errorTestCases = []bucketTestCase{
	{
		"Invalid first bucket size",
		0, 5, 5, "one", "one", 1, 0, true,
	},
	{
		"Invalid second bucket size",
		3, 0, 3, "one", "one", 1, 0, true,
	},
	{
		"Invalid goal amount",
		1, 1, 0, "one", "one", 0, 1, true,
	},
	{
		"Invalid start bucket name",
		3, 5, 1, "three", "one", 4, 5, true,
	},
}

Version data entries

76 entries across 76 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.179 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.178 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.177 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.176 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.175 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.174 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.173 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.172 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.171 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.170 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.169 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.167 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.166 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.165 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.164 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.163 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.162 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.161 tracks/go/exercises/two-bucket/two_bucket_test.go
trackler-2.2.1.160 tracks/go/exercises/two-bucket/two_bucket_test.go