github.com/dahs81/otto@v0.2.1-0.20160126165905-6400716cf085/foundation/tuple_test.go (about) 1 package foundation 2 3 import ( 4 "reflect" 5 "sort" 6 "testing" 7 ) 8 9 func TestTupleSlice_sort(t *testing.T) { 10 tuples := []Tuple{ 11 {"go", "aws", "b"}, 12 {"rails", "aws", "b"}, 13 {"go", "google", "a"}, 14 {"go", "aws", "a"}, 15 } 16 17 expected := []Tuple{ 18 {"go", "aws", "a"}, 19 {"go", "aws", "b"}, 20 {"go", "google", "a"}, 21 {"rails", "aws", "b"}, 22 } 23 24 sort.Sort(TupleSlice(tuples)) 25 if !reflect.DeepEqual(tuples, expected) { 26 t.Fatalf("bad: %#v", tuples) 27 } 28 } 29 30 func TestTupleMap_Lookup(t *testing.T) { 31 var value int 32 factory := func(v int) Factory { 33 return func() (Foundation, error) { 34 value = v 35 return nil, nil 36 } 37 } 38 39 cases := []struct { 40 M TupleMap 41 T Tuple 42 Expected int 43 }{ 44 { 45 map[Tuple]Factory{ 46 Tuple{"foo", "bar", "baz"}: factory(7), 47 }, 48 Tuple{"foo", "bar", "baz"}, 49 7, 50 }, 51 52 { 53 map[Tuple]Factory{ 54 Tuple{"foo", "*", "baz"}: factory(7), 55 }, 56 Tuple{"foo", "bar", "baz"}, 57 7, 58 }, 59 60 { 61 map[Tuple]Factory{ 62 Tuple{"foo", "bar", "*"}: factory(7), 63 }, 64 Tuple{"foo", "bar", "baz"}, 65 7, 66 }, 67 68 { 69 map[Tuple]Factory{ 70 Tuple{"foo", "*", "*"}: factory(7), 71 }, 72 Tuple{"foo", "bar", "baz"}, 73 7, 74 }, 75 76 { 77 map[Tuple]Factory{ 78 Tuple{"foo", "*", "*"}: factory(12), 79 Tuple{"foo", "bar", "baz"}: factory(7), 80 }, 81 Tuple{"foo", "bar", "baz"}, 82 7, 83 }, 84 } 85 86 for i, tc := range cases { 87 // Reset the value 88 value = 0 89 90 f := tc.M.Lookup(tc.T) 91 if f != nil { 92 f() 93 } 94 95 if value != tc.Expected { 96 t.Fatalf("%d: bad: %d", i, value) 97 } 98 } 99 }