Home | History | Annotate | Download | only in cc
      1 package cc
      2 
      3 import (
      4 	"reflect"
      5 	"testing"
      6 )
      7 
      8 var lastUniqueElementsTestCases = []struct {
      9 	in  []string
     10 	out []string
     11 }{
     12 	{
     13 		in:  []string{"a"},
     14 		out: []string{"a"},
     15 	},
     16 	{
     17 		in:  []string{"a", "b"},
     18 		out: []string{"a", "b"},
     19 	},
     20 	{
     21 		in:  []string{"a", "a"},
     22 		out: []string{"a"},
     23 	},
     24 	{
     25 		in:  []string{"a", "b", "a"},
     26 		out: []string{"b", "a"},
     27 	},
     28 	{
     29 		in:  []string{"b", "a", "a"},
     30 		out: []string{"b", "a"},
     31 	},
     32 	{
     33 		in:  []string{"a", "a", "b"},
     34 		out: []string{"a", "b"},
     35 	},
     36 	{
     37 		in:  []string{"a", "b", "a", "b"},
     38 		out: []string{"a", "b"},
     39 	},
     40 	{
     41 		in:  []string{"liblog", "libdl", "libc++", "libdl", "libc", "libm"},
     42 		out: []string{"liblog", "libc++", "libdl", "libc", "libm"},
     43 	},
     44 }
     45 
     46 func TestLastUniqueElements(t *testing.T) {
     47 	for _, testCase := range lastUniqueElementsTestCases {
     48 		out := lastUniqueElements(testCase.in)
     49 		if !reflect.DeepEqual(out, testCase.out) {
     50 			t.Errorf("incorrect output:")
     51 			t.Errorf("     input: %#v", testCase.in)
     52 			t.Errorf("  expected: %#v", testCase.out)
     53 			t.Errorf("       got: %#v", out)
     54 		}
     55 	}
     56 }
     57 
     58 var (
     59 	str11 = "01234567891"
     60 	str10 = str11[:10]
     61 	str9  = str11[:9]
     62 	str5  = str11[:5]
     63 	str4  = str11[:4]
     64 )
     65 
     66 var splitListForSizeTestCases = []struct {
     67 	in   []string
     68 	out  [][]string
     69 	size int
     70 }{
     71 	{
     72 		in:   []string{str10},
     73 		out:  [][]string{{str10}},
     74 		size: 10,
     75 	},
     76 	{
     77 		in:   []string{str9},
     78 		out:  [][]string{{str9}},
     79 		size: 10,
     80 	},
     81 	{
     82 		in:   []string{str5},
     83 		out:  [][]string{{str5}},
     84 		size: 10,
     85 	},
     86 	{
     87 		in:   []string{str11},
     88 		out:  nil,
     89 		size: 10,
     90 	},
     91 	{
     92 		in:   []string{str10, str10},
     93 		out:  [][]string{{str10}, {str10}},
     94 		size: 10,
     95 	},
     96 	{
     97 		in:   []string{str9, str10},
     98 		out:  [][]string{{str9}, {str10}},
     99 		size: 10,
    100 	},
    101 	{
    102 		in:   []string{str10, str9},
    103 		out:  [][]string{{str10}, {str9}},
    104 		size: 10,
    105 	},
    106 	{
    107 		in:   []string{str5, str4},
    108 		out:  [][]string{{str5, str4}},
    109 		size: 10,
    110 	},
    111 	{
    112 		in:   []string{str5, str4, str5},
    113 		out:  [][]string{{str5, str4}, {str5}},
    114 		size: 10,
    115 	},
    116 	{
    117 		in:   []string{str5, str4, str5, str4},
    118 		out:  [][]string{{str5, str4}, {str5, str4}},
    119 		size: 10,
    120 	},
    121 	{
    122 		in:   []string{str5, str4, str5, str5},
    123 		out:  [][]string{{str5, str4}, {str5}, {str5}},
    124 		size: 10,
    125 	},
    126 	{
    127 		in:   []string{str5, str5, str5, str4},
    128 		out:  [][]string{{str5}, {str5}, {str5, str4}},
    129 		size: 10,
    130 	},
    131 	{
    132 		in:   []string{str9, str11},
    133 		out:  nil,
    134 		size: 10,
    135 	},
    136 	{
    137 		in:   []string{str11, str9},
    138 		out:  nil,
    139 		size: 10,
    140 	},
    141 }
    142 
    143 func TestSplitListForSize(t *testing.T) {
    144 	for _, testCase := range splitListForSizeTestCases {
    145 		out, _ := splitListForSize(testCase.in, testCase.size)
    146 		if !reflect.DeepEqual(out, testCase.out) {
    147 			t.Errorf("incorrect output:")
    148 			t.Errorf("     input: %#v", testCase.in)
    149 			t.Errorf("      size: %d", testCase.size)
    150 			t.Errorf("  expected: %#v", testCase.out)
    151 			t.Errorf("       got: %#v", out)
    152 		}
    153 	}
    154 }
    155