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.2.1.56 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.55 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.54 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.53 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.52 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.51 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.50 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.49 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.48 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.47 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.46 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.45 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.44 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.43 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.42 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.41 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.40 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.39 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.38 tracks/go/exercises/etl/etl_test.go
trackler-2.2.1.37 tracks/go/exercises/etl/etl_test.go