github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/xslices/diff_test.go (about) 1 package xslices 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestDiff(t *testing.T) { 10 for _, tt := range []struct { 11 name string 12 previous []int 13 newest []int 14 steady []int 15 added []int 16 dropped []int 17 }{ 18 { 19 name: "WithoutChanges", 20 previous: []int{ 21 2, 22 1, 23 0, 24 3, 25 }, 26 newest: []int{ 27 1, 28 3, 29 2, 30 0, 31 }, 32 steady: []int{ 33 0, 34 1, 35 2, 36 3, 37 }, 38 added: []int{}, 39 dropped: []int{}, 40 }, 41 { 42 name: "OnlyAdded", 43 previous: []int{ 44 1, 45 0, 46 3, 47 }, 48 newest: []int{ 49 1, 50 3, 51 2, 52 0, 53 }, 54 steady: []int{ 55 0, 56 1, 57 3, 58 }, 59 added: []int{ 60 2, 61 }, 62 dropped: []int{}, 63 }, 64 { 65 name: "OnlyAddedWithDuplicatesInPrevious", 66 previous: []int{ 67 1, 68 0, 69 1, 70 3, 71 }, 72 newest: []int{ 73 1, 74 3, 75 2, 76 0, 77 }, 78 steady: []int{ 79 0, 80 1, 81 3, 82 }, 83 added: []int{ 84 2, 85 }, 86 dropped: []int{ 87 1, 88 }, 89 }, 90 { 91 name: "OnlyAddedWithDuplicatesInNewest", 92 previous: []int{ 93 1, 94 0, 95 3, 96 }, 97 newest: []int{ 98 1, 99 1, 100 3, 101 1, 102 2, 103 0, 104 }, 105 steady: []int{ 106 0, 107 1, 108 3, 109 }, 110 added: []int{ 111 1, 112 1, 113 2, 114 }, 115 dropped: []int{}, 116 }, 117 { 118 name: "OnlyDropped", 119 previous: []int{ 120 1, 121 2, 122 0, 123 3, 124 }, 125 newest: []int{ 126 1, 127 3, 128 0, 129 }, 130 steady: []int{ 131 0, 132 1, 133 3, 134 }, 135 added: []int{}, 136 dropped: []int{ 137 2, 138 }, 139 }, 140 { 141 name: "AddedAndDropped1", 142 previous: []int{ 143 4, 144 7, 145 8, 146 }, 147 newest: []int{ 148 1, 149 3, 150 0, 151 }, 152 steady: []int{}, 153 added: []int{ 154 0, 155 1, 156 3, 157 }, 158 dropped: []int{ 159 4, 160 7, 161 8, 162 }, 163 }, 164 { 165 name: "AddedAndDropped2", 166 previous: []int{ 167 1, 168 3, 169 0, 170 }, 171 newest: []int{ 172 4, 173 7, 174 8, 175 }, 176 steady: []int{}, 177 added: []int{ 178 4, 179 7, 180 8, 181 }, 182 dropped: []int{ 183 0, 184 1, 185 3, 186 }, 187 }, 188 { 189 name: "AddedWithDuplicates", 190 previous: []int{ 191 1, 192 3, 193 3, 194 0, 195 }, 196 newest: []int{ 197 4, 198 7, 199 7, 200 8, 201 }, 202 steady: []int{}, 203 added: []int{ 204 4, 205 7, 206 7, 207 8, 208 }, 209 dropped: []int{ 210 0, 211 1, 212 3, 213 3, 214 }, 215 }, 216 } { 217 t.Run(tt.name, func(t *testing.T) { 218 steady, added, dropped := Diff(tt.previous, tt.newest, func(lhs, rhs int) int { 219 return lhs - rhs 220 }) 221 require.Equal(t, tt.added, added) 222 require.Equal(t, tt.dropped, dropped) 223 require.Equal(t, tt.steady, steady) 224 }) 225 } 226 }