TestWriterOrder ensures that some types that are traditionally not byte-comparable when serialized are byte-comparable using the writer.
(t *testing.T)
| 162 | // TestWriterOrder ensures that some types that are traditionally not byte-comparable when serialized are |
| 163 | // byte-comparable using the writer. |
| 164 | func TestWriterOrder(t *testing.T) { |
| 165 | t.Run("int8", func(t *testing.T) { |
| 166 | var serializedData [][]byte |
| 167 | integers := []int8{8, -1, 99, 0, -45, -103, 4, 127, 1, 10, 0, -128, -33, 56} |
| 168 | for _, integer := range integers { |
| 169 | writer := NewWriter(1) |
| 170 | writer.Int8(integer) |
| 171 | serializedData = append(serializedData, writer.Data()) |
| 172 | } |
| 173 | sort.Slice(integers, func(i, j int) bool { |
| 174 | return integers[i] < integers[j] |
| 175 | }) |
| 176 | sort.Slice(serializedData, func(i, j int) bool { |
| 177 | return bytes.Compare(serializedData[i], serializedData[j]) == -1 |
| 178 | }) |
| 179 | deserializedIntegers := make([]int8, len(integers)) |
| 180 | for i, data := range serializedData { |
| 181 | reader := NewReader(data) |
| 182 | deserializedIntegers[i] = reader.Int8() |
| 183 | } |
| 184 | require.Equal(t, integers, deserializedIntegers) |
| 185 | }) |
| 186 | t.Run("int16", func(t *testing.T) { |
| 187 | var serializedData [][]byte |
| 188 | integers := []int16{8, -1, 999, 0, -455, -103, 4, 32767, 1, 100, 0, -32768, -33, 56} |
| 189 | for _, integer := range integers { |
| 190 | writer := NewWriter(2) |
| 191 | writer.Int16(integer) |
| 192 | serializedData = append(serializedData, writer.Data()) |
| 193 | } |
| 194 | sort.Slice(integers, func(i, j int) bool { |
| 195 | return integers[i] < integers[j] |
| 196 | }) |
| 197 | sort.Slice(serializedData, func(i, j int) bool { |
| 198 | return bytes.Compare(serializedData[i], serializedData[j]) == -1 |
| 199 | }) |
| 200 | deserializedIntegers := make([]int16, len(integers)) |
| 201 | for i, data := range serializedData { |
| 202 | reader := NewReader(data) |
| 203 | deserializedIntegers[i] = reader.Int16() |
| 204 | } |
| 205 | require.Equal(t, integers, deserializedIntegers) |
| 206 | }) |
| 207 | t.Run("int32", func(t *testing.T) { |
| 208 | var serializedData [][]byte |
| 209 | integers := []int32{8, -1, 999, 0, -4559775, -103, 4, 2147483647, 1, 100, 0, -2147483648, -33, 5667845} |
| 210 | for _, integer := range integers { |
| 211 | writer := NewWriter(4) |
| 212 | writer.Int32(integer) |
| 213 | serializedData = append(serializedData, writer.Data()) |
| 214 | } |
| 215 | sort.Slice(integers, func(i, j int) bool { |
| 216 | return integers[i] < integers[j] |
| 217 | }) |
| 218 | sort.Slice(serializedData, func(i, j int) bool { |
| 219 | return bytes.Compare(serializedData[i], serializedData[j]) == -1 |
| 220 | }) |
| 221 | deserializedIntegers := make([]int32, len(integers)) |