Sha256: a0a45c155236c10e3e62242aca1b6e2568c2be0a12f11cefdb43da1c0e9a330f

Contents?: true

Size: 1.61 KB

Versions: 138

Compression:

Stored size: 1.61 KB

Contents

package etl

import "testing"

type given map[int][]string
type expectation map[string]int

var transformTests = []struct {
	input  given
	output expectation
}{
	{
		given{1: {"A"}},
		expectation{"a": 1},
	},
	{
		given{1: {"A", "E", "I", "O", "U"}},
		expectation{"a": 1, "e": 1, "i": 1, "o": 1, "u": 1},
	},
	{
		given{
			1: {"A", "E"},
			2: {"D", "G"},
		},
		expectation{
			"a": 1,
			"e": 1,
			"d": 2,
			"g": 2,
		},
	},
	{
		given{
			1:  {"A", "E", "I", "O", "U", "L", "N", "R", "S", "T"},
			2:  {"D", "G"},
			3:  {"B", "C", "M", "P"},
			4:  {"F", "H", "V", "W", "Y"},
			5:  {"K"},
			8:  {"J", "X"},
			10: {"Q", "Z"},
		},
		expectation{
			"a": 1, "e": 1, "i": 1, "o": 1, "u": 1, "l": 1, "n": 1, "r": 1, "s": 1, "t": 1,
			"d": 2, "g": 2,
			"b": 3, "c": 3, "m": 3, "p": 3,
			"f": 4, "h": 4, "v": 4, "w": 4, "y": 4,
			"k": 5,
			"j": 8, "x": 8,
			"q": 10, "z": 10,
		},
	},
}

func equal(actual map[string]int, expectation map[string]int) bool {
	if len(actual) != len(expectation) {
		return false
	}

	for k, actualVal := range actual {
		expectationVal, present := expectation[k]

		if !present || actualVal != expectationVal {
			return false
		}
	}

	return true
}

func TestTransform(t *testing.T) {
	for _, tt := range transformTests {
		actual := Transform(map[int][]string(tt.input))
		if !equal(actual, tt.output) {
			t.Fatalf("Transform(%v). Expected [%v], Actual [%v]", tt.input, tt.output, actual)
		}
	}
}

func BenchmarkTransform(b *testing.B) {
	b.StopTimer()
	for _, tt := range transformTests {
		b.StartTimer()

		for i := 0; i < b.N; i++ {
			Transform(map[int][]string(tt.input))
		}

		b.StopTimer()
	}
}

Version data entries

138 entries across 138 versions & 1 rubygems

Version Path
trackler-2.0.0.7 tracks/go/exercises/etl/etl_test.go
trackler-2.0.0.6 tracks/go/exercises/etl/etl_test.go
trackler-2.0.0.5 tracks/go/exercises/etl/etl_test.go
trackler-2.0.0.4 tracks/go/exercises/etl/etl_test.go
trackler-2.0.0.3 tracks/go/exercises/etl/etl_test.go
trackler-2.0.0.2 tracks/go/exercises/etl/etl_test.go
trackler-2.0.0.1 tracks/go/exercises/etl/etl_test.go
trackler-2.0.0.0 tracks/go/exercises/etl/etl_test.go
trackler-1.0.4.1 tracks/go/exercises/etl/etl_test.go
trackler-1.0.4.0 tracks/go/exercises/etl/etl_test.go
trackler-1.0.3.0 tracks/go/exercises/etl/etl_test.go
trackler-1.0.2.1 tracks/go/exercises/etl/etl_test.go
trackler-1.0.2.0 tracks/go/exercises/etl/etl_test.go
trackler-1.0.1.2 tracks/go/exercises/etl/etl_test.go
trackler-1.0.1.1 tracks/go/exercises/etl/etl_test.go
trackler-1.0.1.0 tracks/go/exercises/etl/etl_test.go
trackler-1.0.0.1 tracks/go/exercises/etl/etl_test.go
trackler-1.0.0 tracks/go/exercises/etl/etl_test.go