Sha256: 08e912d0fb6830cc4694b6bc33f3f5681c813f5754fd10e70adbf3c023152b11

Contents?: true

Size: 1.8 KB

Versions: 177

Compression:

Stored size: 1.8 KB

Contents

package etl

import "testing"

const targetTestVersion = 1

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 TestTestVersion(t *testing.T) {
	if testVersion != targetTestVersion {
		t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
	}
}

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

177 entries across 177 versions & 1 rubygems

Version Path
trackler-2.0.8.13 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.12 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.11 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.10 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.9 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.8 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.7 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.6 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.5 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.4 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.3 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.2 tracks/go/exercises/etl/etl_test.go
trackler-2.0.8.1 tracks/go/exercises/etl/etl_test.go
trackler-2.0.7.0 tracks/go/exercises/etl/etl_test.go
trackler-2.0.6.44 tracks/go/exercises/etl/etl_test.go
trackler-2.0.6.43 tracks/go/exercises/etl/etl_test.go
trackler-2.0.6.42 tracks/go/exercises/etl/etl_test.go