package cc import ( "reflect" "testing" ) var lastUniqueElementsTestCases = []struct { in []string out []string }{ { in: []string{"a"}, out: []string{"a"}, }, { in: []string{"a", "b"}, out: []string{"a", "b"}, }, { in: []string{"a", "a"}, out: []string{"a"}, }, { in: []string{"a", "b", "a"}, out: []string{"b", "a"}, }, { in: []string{"b", "a", "a"}, out: []string{"b", "a"}, }, { in: []string{"a", "a", "b"}, out: []string{"a", "b"}, }, { in: []string{"a", "b", "a", "b"}, out: []string{"a", "b"}, }, { in: []string{"liblog", "libdl", "libc++", "libdl", "libc", "libm"}, out: []string{"liblog", "libc++", "libdl", "libc", "libm"}, }, } func TestLastUniqueElements(t *testing.T) { for _, testCase := range lastUniqueElementsTestCases { out := lastUniqueElements(testCase.in) if !reflect.DeepEqual(out, testCase.out) { t.Errorf("incorrect output:") t.Errorf(" input: %#v", testCase.in) t.Errorf(" expected: %#v", testCase.out) t.Errorf(" got: %#v", out) } } } var ( str11 = "01234567891" str10 = str11[:10] str9 = str11[:9] str5 = str11[:5] str4 = str11[:4] ) var splitListForSizeTestCases = []struct { in []string out [][]string size int }{ { in: []string{str10}, out: [][]string{{str10}}, size: 10, }, { in: []string{str9}, out: [][]string{{str9}}, size: 10, }, { in: []string{str5}, out: [][]string{{str5}}, size: 10, }, { in: []string{str11}, out: nil, size: 10, }, { in: []string{str10, str10}, out: [][]string{{str10}, {str10}}, size: 10, }, { in: []string{str9, str10}, out: [][]string{{str9}, {str10}}, size: 10, }, { in: []string{str10, str9}, out: [][]string{{str10}, {str9}}, size: 10, }, { in: []string{str5, str4}, out: [][]string{{str5, str4}}, size: 10, }, { in: []string{str5, str4, str5}, out: [][]string{{str5, str4}, {str5}}, size: 10, }, { in: []string{str5, str4, str5, str4}, out: [][]string{{str5, str4}, {str5, str4}}, size: 10, }, { in: []string{str5, str4, str5, str5}, out: [][]string{{str5, str4}, {str5}, {str5}}, size: 10, }, { in: []string{str5, str5, str5, str4}, out: [][]string{{str5}, {str5}, {str5, str4}}, size: 10, }, { in: []string{str9, str11}, out: nil, size: 10, }, { in: []string{str11, str9}, out: nil, size: 10, }, } func TestSplitListForSize(t *testing.T) { for _, testCase := range splitListForSizeTestCases { out, _ := splitListForSize(testCase.in, testCase.size) if !reflect.DeepEqual(out, testCase.out) { t.Errorf("incorrect output:") t.Errorf(" input: %#v", testCase.in) t.Errorf(" size: %d", testCase.size) t.Errorf(" expected: %#v", testCase.out) t.Errorf(" got: %#v", out) } } }