MCPcopy Create free account
hub / github.com/dolthub/doltgresql / TestWriterOrder

Function TestWriterOrder

utils/writer_test.go:164–295  ·  view source on GitHub ↗

TestWriterOrder ensures that some types that are traditionally not byte-comparable when serialized are byte-comparable using the writer.

(t *testing.T)

Source from the content-addressed store, hash-verified

162// TestWriterOrder ensures that some types that are traditionally not byte-comparable when serialized are
163// byte-comparable using the writer.
164func 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))

Callers

nothing calls this directly

Calls 15

Int8Method · 0.95
DataMethod · 0.95
Int8Method · 0.95
Int16Method · 0.95
Int16Method · 0.95
Int32Method · 0.95
Int32Method · 0.95
Int64Method · 0.95
Int64Method · 0.95
Float32Method · 0.95
Float32Method · 0.95
Float64Method · 0.95

Tested by

no test coverage detected