123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- package gago
- import "testing"
- func TestSearch(t *testing.T) {
- var s = StringSlice{"イ", "ー", "ス", "タ", "ー"}
- if i, err := search("イ", s); i != 0 || err != nil {
- t.Error("Problem with search 1")
- }
- if i, err := search("ー", s); i != 1 || err != nil {
- t.Error("Problem with search 2")
- }
- if i, err := search("ス", s); i != 2 || err != nil {
- t.Error("Problem with search 3")
- }
- if i, err := search("タ", s); i != 3 || err != nil {
- t.Error("Problem with search 4")
- }
- if _, err := search("|", s); err == nil {
- t.Error("Problem with search 5")
- }
- }
- func TestNewIndexLookup(t *testing.T) {
- var testCases = []struct {
- slice Slice
- lookup map[interface{}]int
- }{
- {
- slice: IntSlice{1, 2, 3},
- lookup: map[interface{}]int{
- 1: 0,
- 2: 1,
- 3: 2,
- },
- },
- }
- for _, test := range testCases {
- var lookup = newIndexLookup(test.slice)
- for k, v := range lookup {
- if v != test.lookup[k] {
- t.Error("createLookup didn't work as expected")
- }
- }
- }
- }
- func TestGetCycles(t *testing.T) {
- var testCases = []struct {
- x []int
- y []int
- cycles [][]int
- }{
- {
- x: []int{1, 2, 3, 4, 5, 6, 7, 8, 9},
- y: []int{9, 3, 7, 8, 2, 6, 5, 1, 4},
- cycles: [][]int{
- []int{0, 8, 3, 7},
- []int{1, 2, 6, 4},
- []int{5},
- },
- },
- }
- for _, test := range testCases {
- var cycles = getCycles(IntSlice(test.x), IntSlice(test.y))
- for i, cycle := range cycles {
- for j, c := range cycle {
- if c != test.cycles[i][j] {
- t.Error("getCycles didn't work as expected")
- }
- }
- }
- }
- }
- func TestGetNeighbours(t *testing.T) {
- var testCases = []struct {
- x Slice
- neighbours map[interface{}]set
- }{
- {
- x: IntSlice{1, 2, 3, 4, 5, 6, 7, 8, 9},
- neighbours: map[interface{}]set{
- 1: set{9: true, 2: true},
- 2: set{1: true, 3: true},
- 3: set{2: true, 4: true},
- 4: set{3: true, 5: true},
- 5: set{4: true, 6: true},
- 6: set{5: true, 7: true},
- 7: set{6: true, 8: true},
- 8: set{7: true, 9: true},
- 9: set{8: true, 1: true},
- },
- },
- }
- for _, test := range testCases {
- var neighbours = getNeighbours(test.x)
- for i, set := range neighbours {
- for j := range set {
- if !test.neighbours[i][j] {
- t.Error("getNeighbours didn't work as expected")
- }
- }
- }
- }
- }
- func TestIntSliceAt(t *testing.T) {
- var ints = IntSlice{1, 2, 3}
- if ints.At(0) != 1 || ints.At(1) != 2 || ints.At(2) != 3 {
- t.Error("IntSlice At method has unexpected behavior")
- }
- }
- func TestIntSliceLen(t *testing.T) {
- var ints = IntSlice{1, 2, 3}
- if ints.Len() != 3 {
- t.Error("IntSlice Len method has unexpected behavior")
- }
- }
- func TestIntSliceSwap(t *testing.T) {
- var ints = IntSlice{1, 2, 3}
- ints.Swap(0, 2)
- if ints.At(0) != 3 || ints.At(2) != 1 {
- t.Error("IntSlice Swap method has unexpected behavior")
- }
- }
- func TestIntSliceSlice(t *testing.T) {
- var ints = IntSlice{1, 2, 3}.Slice(1, 2)
- if ints.Len() != 1 || ints.At(0) != 2 {
- t.Error("IntSlice Slice method has unexpected behavior")
- }
- }
- func TestIntSliceSplit(t *testing.T) {
- var a, b = IntSlice{1, 2, 3}.Split(1)
- if a.Len() != 1 || b.Len() != 2 || a.At(0) != 1 || b.At(0) != 2 || b.At(1) != 3 {
- t.Error("IntSlice Split method has unexpected behavior")
- }
- }
- func TestIntSliceAppend(t *testing.T) {
- var ints = IntSlice{1}.Append(IntSlice{2})
- if ints.Len() != 2 || ints.At(0) != 1 || ints.At(1) != 2 {
- t.Error("IntSlice Append method has unexpected behavior")
- }
- }
- func TestIntSliceReplace(t *testing.T) {
- var ints = IntSlice{1}
- ints.Replace(IntSlice{2})
- if ints.Len() != 1 || ints.At(0) != 2 {
- t.Error("IntSlice Replace method has unexpected behavior")
- }
- }
- func TestIntSliceCopy(t *testing.T) {
- var (
- ints = IntSlice{1}
- clone = ints.Copy()
- )
- clone.Replace(IntSlice{2})
- if ints.At(0) != 1 {
- t.Error("IntSlice Copy method has unexpected behavior")
- }
- }
- func TestFloat64SliceAt(t *testing.T) {
- var floats = Float64Slice{1, 2, 3}
- if floats.At(0) != 1.0 || floats.At(1) != 2.0 || floats.At(2) != 3.0 {
- t.Error("Float64Slice At method has unexpected behavior")
- }
- }
- func TestFloat64SliceLen(t *testing.T) {
- var floats = Float64Slice{1, 2, 3}
- if floats.Len() != 3 {
- t.Error("Float64Slice Len method has unexpected behavior")
- }
- }
- func TestFloat64SliceSwap(t *testing.T) {
- var floats = Float64Slice{1, 2, 3}
- floats.Swap(0, 2)
- if floats.At(0) != 3.0 || floats.At(2) != 1.0 {
- t.Error("Float64Slice Swap method has unexpected behavior")
- }
- }
- func TestFloat64SliceSlice(t *testing.T) {
- var floats = Float64Slice{1, 2, 3}.Slice(1, 2)
- if floats.Len() != 1 || floats.At(0) != 2.0 {
- t.Error("Float64Slice Slice method has unexpected behavior")
- }
- }
- func TestFloat64SliceSplit(t *testing.T) {
- var a, b = Float64Slice{1, 2, 3}.Split(1)
- if a.Len() != 1 || b.Len() != 2 || a.At(0) != 1.0 || b.At(0) != 2.0 || b.At(1) != 3.0 {
- t.Error("Float64Slice Split method has unexpected behavior")
- }
- }
- func TestFloat64SliceAppend(t *testing.T) {
- var floats = Float64Slice{1}.Append(Float64Slice{2})
- if floats.Len() != 2 || floats.At(0) != 1.0 || floats.At(1) != 2.0 {
- t.Error("Float64Slice Append method has unexpected behavior")
- }
- }
- func TestFloat64SliceReplace(t *testing.T) {
- var floats = Float64Slice{1}
- floats.Replace(Float64Slice{2})
- if floats.Len() != 1 || floats.At(0) != 2.0 {
- t.Error("Float64Slice Replace method has unexpected behavior")
- }
- }
- func TestFloat64SliceCopy(t *testing.T) {
- var (
- floats = Float64Slice{1}
- clone = floats.Copy()
- )
- clone.Replace(Float64Slice{2})
- if floats.At(0) != 1.0 {
- t.Error("IntSlice Copy method has unexpected behavior")
- }
- }
- func TestStringSliceAt(t *testing.T) {
- var strings = StringSlice{"a", "b", "c"}
- if strings.At(0) != "a" || strings.At(1) != "b" || strings.At(2) != "c" {
- t.Error("StringSlice At method has unexpected behavior")
- }
- }
- func TestStringSliceLen(t *testing.T) {
- var strings = StringSlice{"a", "b", "c"}
- if strings.Len() != 3 {
- t.Error("StringSlice Len method has unexpected behavior")
- }
- }
- func TestStringSliceSwap(t *testing.T) {
- var strings = StringSlice{"a", "b", "c"}
- strings.Swap(0, 2)
- if strings.At(0) != "c" || strings.At(2) != "a" {
- t.Error("StringSlice Swap method has unexpected behavior")
- }
- }
- func TestStringSliceSlice(t *testing.T) {
- var strings = StringSlice{"a", "b", "c"}.Slice(1, 2)
- if strings.Len() != 1 || strings.At(0) != "b" {
- t.Error("StringSlice Slice method has unexpected behavior")
- }
- }
- func TestStringSliceSplit(t *testing.T) {
- var a, b = StringSlice{"a", "b", "c"}.Split(1)
- if a.Len() != 1 || b.Len() != 2 || a.At(0) != "a" || b.At(0) != "b" || b.At(1) != "c" {
- t.Error("StringSlice Split method has unexpected behavior")
- }
- }
- func TestStringSliceAppend(t *testing.T) {
- var strings = StringSlice{"a"}.Append(StringSlice{"b"})
- if strings.Len() != 2 || strings.At(0) != "a" || strings.At(1) != "b" {
- t.Error("StringSlice Append method has unexpected behavior")
- }
- }
- func TestStringSliceReplace(t *testing.T) {
- var strings = StringSlice{"a"}
- strings.Replace(StringSlice{"b"})
- if strings.Len() != 1 || strings.At(0) != "b" {
- t.Error("StringSlice Replace method has unexpected behavior")
- }
- }
- func TestStringSliceCopy(t *testing.T) {
- var (
- strings = StringSlice{"a"}
- clone = strings.Copy()
- )
- clone.Replace(StringSlice{"b"})
- if strings.At(0) == "b" {
- t.Error("StringSlice Copy method has unexpected behavior")
- }
- }
|