gorgonia.org/tensor@v0.9.24/dense_compat_test.go (about) 1 // Code generated by genlib2. DO NOT EDIT. 2 3 package tensor 4 5 import ( 6 "testing" 7 8 arrow "github.com/apache/arrow/go/arrow" 9 arrowArray "github.com/apache/arrow/go/arrow/array" 10 "github.com/apache/arrow/go/arrow/memory" 11 arrowTensor "github.com/apache/arrow/go/arrow/tensor" 12 "github.com/stretchr/testify/assert" 13 "gonum.org/v1/gonum/mat" 14 ) 15 16 var toMat64Tests = []struct { 17 data interface{} 18 sliced interface{} 19 shape Shape 20 dt Dtype 21 }{ 22 {Range(Int, 0, 6), []int{0, 1, 3, 4}, Shape{2, 3}, Int}, 23 {Range(Int8, 0, 6), []int8{0, 1, 3, 4}, Shape{2, 3}, Int8}, 24 {Range(Int16, 0, 6), []int16{0, 1, 3, 4}, Shape{2, 3}, Int16}, 25 {Range(Int32, 0, 6), []int32{0, 1, 3, 4}, Shape{2, 3}, Int32}, 26 {Range(Int64, 0, 6), []int64{0, 1, 3, 4}, Shape{2, 3}, Int64}, 27 {Range(Uint, 0, 6), []uint{0, 1, 3, 4}, Shape{2, 3}, Uint}, 28 {Range(Uint8, 0, 6), []uint8{0, 1, 3, 4}, Shape{2, 3}, Uint8}, 29 {Range(Uint16, 0, 6), []uint16{0, 1, 3, 4}, Shape{2, 3}, Uint16}, 30 {Range(Uint32, 0, 6), []uint32{0, 1, 3, 4}, Shape{2, 3}, Uint32}, 31 {Range(Uint64, 0, 6), []uint64{0, 1, 3, 4}, Shape{2, 3}, Uint64}, 32 {Range(Float32, 0, 6), []float32{0, 1, 3, 4}, Shape{2, 3}, Float32}, 33 {Range(Float64, 0, 6), []float64{0, 1, 3, 4}, Shape{2, 3}, Float64}, 34 {Range(Complex64, 0, 6), []complex64{0, 1, 3, 4}, Shape{2, 3}, Complex64}, 35 {Range(Complex128, 0, 6), []complex128{0, 1, 3, 4}, Shape{2, 3}, Complex128}, 36 } 37 38 func TestToMat64(t *testing.T) { 39 assert := assert.New(t) 40 for i, tmt := range toMat64Tests { 41 T := New(WithBacking(tmt.data), WithShape(tmt.shape...)) 42 var m *mat.Dense 43 var err error 44 if m, err = ToMat64(T); err != nil { 45 t.Errorf("ToMat basic test %d failed : %v", i, err) 46 continue 47 } 48 conv := anyToFloat64s(tmt.data) 49 assert.Equal(conv, m.RawMatrix().Data, "i %d from %v", i, tmt.dt) 50 51 if T, err = sliceDense(T, nil, makeRS(0, 2)); err != nil { 52 t.Errorf("Slice failed %v", err) 53 continue 54 } 55 if m, err = ToMat64(T); err != nil { 56 t.Errorf("ToMat of slice test %d failed : %v", i, err) 57 continue 58 } 59 conv = anyToFloat64s(tmt.sliced) 60 assert.Equal(conv, m.RawMatrix().Data, "sliced test %d from %v", i, tmt.dt) 61 t.Logf("Done") 62 63 if tmt.dt == Float64 { 64 T = New(WithBacking(tmt.data), WithShape(tmt.shape...)) 65 if m, err = ToMat64(T, UseUnsafe()); err != nil { 66 t.Errorf("ToMat64 unsafe test %d failed: %v", i, err) 67 } 68 conv = anyToFloat64s(tmt.data) 69 assert.Equal(conv, m.RawMatrix().Data, "float64 unsafe i %d from %v", i, tmt.dt) 70 conv[0] = 1000 71 assert.Equal(conv, m.RawMatrix().Data, "float64 unsafe i %d from %v", i, tmt.dt) 72 conv[0] = 0 // reset for future tests that use the same backing 73 } 74 } 75 // idiocy test 76 T := New(Of(Float64), WithShape(2, 3, 4)) 77 _, err := ToMat64(T) 78 if err == nil { 79 t.Error("Expected an error when trying to convert a 3-T to *mat.Dense") 80 } 81 } 82 83 func TestFromMat64(t *testing.T) { 84 assert := assert.New(t) 85 var m *mat.Dense 86 var T *Dense 87 var backing []float64 88 89 for i, tmt := range toMat64Tests { 90 backing = Range(Float64, 0, 6).([]float64) 91 m = mat.NewDense(2, 3, backing) 92 T = FromMat64(m) 93 conv := anyToFloat64s(tmt.data) 94 assert.Equal(conv, T.Float64s(), "test %d: []float64 from %v", i, tmt.dt) 95 assert.True(T.Shape().Eq(tmt.shape)) 96 97 T = FromMat64(m, As(tmt.dt)) 98 assert.Equal(tmt.data, T.Data()) 99 assert.True(T.Shape().Eq(tmt.shape)) 100 101 if tmt.dt == Float64 { 102 backing = Range(Float64, 0, 6).([]float64) 103 m = mat.NewDense(2, 3, backing) 104 T = FromMat64(m, UseUnsafe()) 105 assert.Equal(backing, T.Float64s()) 106 assert.True(T.Shape().Eq(tmt.shape)) 107 backing[0] = 1000 108 assert.Equal(backing, T.Float64s(), "test %d - unsafe float64", i) 109 } 110 } 111 } 112 113 var toArrowArrayTests = []struct { 114 data interface{} 115 valid []bool 116 dt arrow.DataType 117 shape Shape 118 }{ 119 { 120 data: Range(Int8, 0, 6), 121 valid: []bool{true, true, true, false, true, true}, 122 dt: arrow.PrimitiveTypes.Int8, 123 shape: Shape{6, 1}, 124 }, 125 { 126 data: Range(Int16, 0, 6), 127 valid: []bool{true, true, true, false, true, true}, 128 dt: arrow.PrimitiveTypes.Int16, 129 shape: Shape{6, 1}, 130 }, 131 { 132 data: Range(Int32, 0, 6), 133 valid: []bool{true, true, true, false, true, true}, 134 dt: arrow.PrimitiveTypes.Int32, 135 shape: Shape{6, 1}, 136 }, 137 { 138 data: Range(Int64, 0, 6), 139 valid: []bool{true, true, true, false, true, true}, 140 dt: arrow.PrimitiveTypes.Int64, 141 shape: Shape{6, 1}, 142 }, 143 { 144 data: Range(Uint8, 0, 6), 145 valid: []bool{true, true, true, false, true, true}, 146 dt: arrow.PrimitiveTypes.Uint8, 147 shape: Shape{6, 1}, 148 }, 149 { 150 data: Range(Uint16, 0, 6), 151 valid: []bool{true, true, true, false, true, true}, 152 dt: arrow.PrimitiveTypes.Uint16, 153 shape: Shape{6, 1}, 154 }, 155 { 156 data: Range(Uint32, 0, 6), 157 valid: []bool{true, true, true, false, true, true}, 158 dt: arrow.PrimitiveTypes.Uint32, 159 shape: Shape{6, 1}, 160 }, 161 { 162 data: Range(Uint64, 0, 6), 163 valid: []bool{true, true, true, false, true, true}, 164 dt: arrow.PrimitiveTypes.Uint64, 165 shape: Shape{6, 1}, 166 }, 167 { 168 data: Range(Float32, 0, 6), 169 valid: []bool{true, true, true, false, true, true}, 170 dt: arrow.PrimitiveTypes.Float32, 171 shape: Shape{6, 1}, 172 }, 173 { 174 data: Range(Float64, 0, 6), 175 valid: []bool{true, true, true, false, true, true}, 176 dt: arrow.PrimitiveTypes.Float64, 177 shape: Shape{6, 1}, 178 }, 179 } 180 181 func TestFromArrowArray(t *testing.T) { 182 assert := assert.New(t) 183 var T *Dense 184 pool := memory.NewGoAllocator() 185 186 for i, taat := range toArrowArrayTests { 187 var m arrowArray.Interface 188 189 switch taat.dt { 190 case arrow.BinaryTypes.String: 191 b := arrowArray.NewStringBuilder(pool) 192 defer b.Release() 193 b.AppendValues( 194 []string{"0", "1", "2", "3", "4", "5"}, 195 taat.valid, 196 ) 197 m = b.NewArray() 198 defer m.Release() 199 case arrow.FixedWidthTypes.Boolean: 200 b := arrowArray.NewBooleanBuilder(pool) 201 defer b.Release() 202 b.AppendValues( 203 []bool{true, false, true, false, true, false}, 204 taat.valid, 205 ) 206 m = b.NewArray() 207 defer m.Release() 208 case arrow.PrimitiveTypes.Int8: 209 b := arrowArray.NewInt8Builder(pool) 210 defer b.Release() 211 b.AppendValues( 212 Range(Int8, 0, 6).([]int8), 213 taat.valid, 214 ) 215 m = b.NewArray() 216 defer m.Release() 217 case arrow.PrimitiveTypes.Int16: 218 b := arrowArray.NewInt16Builder(pool) 219 defer b.Release() 220 b.AppendValues( 221 Range(Int16, 0, 6).([]int16), 222 taat.valid, 223 ) 224 m = b.NewArray() 225 defer m.Release() 226 case arrow.PrimitiveTypes.Int32: 227 b := arrowArray.NewInt32Builder(pool) 228 defer b.Release() 229 b.AppendValues( 230 Range(Int32, 0, 6).([]int32), 231 taat.valid, 232 ) 233 m = b.NewArray() 234 defer m.Release() 235 case arrow.PrimitiveTypes.Int64: 236 b := arrowArray.NewInt64Builder(pool) 237 defer b.Release() 238 b.AppendValues( 239 Range(Int64, 0, 6).([]int64), 240 taat.valid, 241 ) 242 m = b.NewArray() 243 defer m.Release() 244 case arrow.PrimitiveTypes.Uint8: 245 b := arrowArray.NewUint8Builder(pool) 246 defer b.Release() 247 b.AppendValues( 248 Range(Uint8, 0, 6).([]uint8), 249 taat.valid, 250 ) 251 m = b.NewArray() 252 defer m.Release() 253 case arrow.PrimitiveTypes.Uint16: 254 b := arrowArray.NewUint16Builder(pool) 255 defer b.Release() 256 b.AppendValues( 257 Range(Uint16, 0, 6).([]uint16), 258 taat.valid, 259 ) 260 m = b.NewArray() 261 defer m.Release() 262 case arrow.PrimitiveTypes.Uint32: 263 b := arrowArray.NewUint32Builder(pool) 264 defer b.Release() 265 b.AppendValues( 266 Range(Uint32, 0, 6).([]uint32), 267 taat.valid, 268 ) 269 m = b.NewArray() 270 defer m.Release() 271 case arrow.PrimitiveTypes.Uint64: 272 b := arrowArray.NewUint64Builder(pool) 273 defer b.Release() 274 b.AppendValues( 275 Range(Uint64, 0, 6).([]uint64), 276 taat.valid, 277 ) 278 m = b.NewArray() 279 defer m.Release() 280 case arrow.PrimitiveTypes.Float32: 281 b := arrowArray.NewFloat32Builder(pool) 282 defer b.Release() 283 b.AppendValues( 284 Range(Float32, 0, 6).([]float32), 285 taat.valid, 286 ) 287 m = b.NewArray() 288 defer m.Release() 289 case arrow.PrimitiveTypes.Float64: 290 b := arrowArray.NewFloat64Builder(pool) 291 defer b.Release() 292 b.AppendValues( 293 Range(Float64, 0, 6).([]float64), 294 taat.valid, 295 ) 296 m = b.NewArray() 297 defer m.Release() 298 default: 299 t.Errorf("DataType not supported in tests: %v", taat.dt) 300 } 301 302 T = FromArrowArray(m) 303 switch taat.dt { 304 case arrow.PrimitiveTypes.Int8: 305 conv := taat.data.([]int8) 306 assert.Equal(conv, T.Int8s(), "test %d: []int8 from %v", i, taat.dt) 307 case arrow.PrimitiveTypes.Int16: 308 conv := taat.data.([]int16) 309 assert.Equal(conv, T.Int16s(), "test %d: []int16 from %v", i, taat.dt) 310 case arrow.PrimitiveTypes.Int32: 311 conv := taat.data.([]int32) 312 assert.Equal(conv, T.Int32s(), "test %d: []int32 from %v", i, taat.dt) 313 case arrow.PrimitiveTypes.Int64: 314 conv := taat.data.([]int64) 315 assert.Equal(conv, T.Int64s(), "test %d: []int64 from %v", i, taat.dt) 316 case arrow.PrimitiveTypes.Uint8: 317 conv := taat.data.([]uint8) 318 assert.Equal(conv, T.Uint8s(), "test %d: []uint8 from %v", i, taat.dt) 319 case arrow.PrimitiveTypes.Uint16: 320 conv := taat.data.([]uint16) 321 assert.Equal(conv, T.Uint16s(), "test %d: []uint16 from %v", i, taat.dt) 322 case arrow.PrimitiveTypes.Uint32: 323 conv := taat.data.([]uint32) 324 assert.Equal(conv, T.Uint32s(), "test %d: []uint32 from %v", i, taat.dt) 325 case arrow.PrimitiveTypes.Uint64: 326 conv := taat.data.([]uint64) 327 assert.Equal(conv, T.Uint64s(), "test %d: []uint64 from %v", i, taat.dt) 328 case arrow.PrimitiveTypes.Float32: 329 conv := taat.data.([]float32) 330 assert.Equal(conv, T.Float32s(), "test %d: []float32 from %v", i, taat.dt) 331 case arrow.PrimitiveTypes.Float64: 332 conv := taat.data.([]float64) 333 assert.Equal(conv, T.Float64s(), "test %d: []float64 from %v", i, taat.dt) 334 default: 335 t.Errorf("DataType not supported in tests: %v", taat.dt) 336 } 337 for i, invalid := range T.Mask() { 338 assert.Equal(taat.valid[i], !invalid) 339 } 340 assert.True(T.Shape().Eq(taat.shape)) 341 } 342 } 343 344 var toArrowTensorTests = []struct { 345 rowMajorData interface{} 346 colMajorData interface{} 347 rowMajorValid []bool 348 colMajorValid []bool 349 dt arrow.DataType 350 shape Shape 351 }{ 352 { 353 rowMajorData: []int8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 354 colMajorData: []int8{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 355 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 356 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 357 dt: arrow.PrimitiveTypes.Int8, 358 shape: Shape{2, 5}, 359 }, 360 { 361 rowMajorData: []int16{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 362 colMajorData: []int16{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 363 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 364 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 365 dt: arrow.PrimitiveTypes.Int16, 366 shape: Shape{2, 5}, 367 }, 368 { 369 rowMajorData: []int32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 370 colMajorData: []int32{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 371 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 372 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 373 dt: arrow.PrimitiveTypes.Int32, 374 shape: Shape{2, 5}, 375 }, 376 { 377 rowMajorData: []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 378 colMajorData: []int64{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 379 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 380 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 381 dt: arrow.PrimitiveTypes.Int64, 382 shape: Shape{2, 5}, 383 }, 384 { 385 rowMajorData: []uint8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 386 colMajorData: []uint8{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 387 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 388 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 389 dt: arrow.PrimitiveTypes.Uint8, 390 shape: Shape{2, 5}, 391 }, 392 { 393 rowMajorData: []uint16{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 394 colMajorData: []uint16{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 395 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 396 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 397 dt: arrow.PrimitiveTypes.Uint16, 398 shape: Shape{2, 5}, 399 }, 400 { 401 rowMajorData: []uint32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 402 colMajorData: []uint32{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 403 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 404 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 405 dt: arrow.PrimitiveTypes.Uint32, 406 shape: Shape{2, 5}, 407 }, 408 { 409 rowMajorData: []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 410 colMajorData: []uint64{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 411 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 412 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 413 dt: arrow.PrimitiveTypes.Uint64, 414 shape: Shape{2, 5}, 415 }, 416 { 417 rowMajorData: []float32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 418 colMajorData: []float32{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 419 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 420 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 421 dt: arrow.PrimitiveTypes.Float32, 422 shape: Shape{2, 5}, 423 }, 424 { 425 rowMajorData: []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 426 colMajorData: []float64{1, 6, 2, 7, 3, 8, 4, 9, 5, 10}, 427 rowMajorValid: []bool{true, false, true, false, true, false, true, false, true, false}, 428 colMajorValid: []bool{true, false, false, true, true, false, false, true, true, false}, 429 dt: arrow.PrimitiveTypes.Float64, 430 shape: Shape{2, 5}, 431 }, 432 } 433 434 func TestFromArrowTensor(t *testing.T) { 435 assert := assert.New(t) 436 var rowMajorT *Dense 437 var colMajorT *Dense 438 pool := memory.NewGoAllocator() 439 440 for i, taat := range toArrowTensorTests { 441 var rowMajorArr arrowArray.Interface 442 var colMajorArr arrowArray.Interface 443 var rowMajor arrowTensor.Interface 444 var colMajor arrowTensor.Interface 445 446 switch taat.dt { 447 case arrow.PrimitiveTypes.Int8: 448 b := arrowArray.NewInt8Builder(pool) 449 defer b.Release() 450 b.AppendValues( 451 []int8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 452 taat.rowMajorValid, 453 ) 454 rowMajorArr = b.NewArray() 455 defer rowMajorArr.Release() 456 457 b.AppendValues( 458 []int8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 459 taat.rowMajorValid, 460 ) 461 colMajorArr = b.NewArray() 462 defer colMajorArr.Release() 463 464 rowMajor = arrowTensor.NewInt8(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 465 defer rowMajor.Release() 466 colMajor = arrowTensor.NewInt8(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Int8SizeBytes), int64(arrow.Int8SizeBytes * 2)}, []string{"x", "y"}) 467 defer colMajor.Release() 468 case arrow.PrimitiveTypes.Int16: 469 b := arrowArray.NewInt16Builder(pool) 470 defer b.Release() 471 b.AppendValues( 472 []int16{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 473 taat.rowMajorValid, 474 ) 475 rowMajorArr = b.NewArray() 476 defer rowMajorArr.Release() 477 478 b.AppendValues( 479 []int16{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 480 taat.rowMajorValid, 481 ) 482 colMajorArr = b.NewArray() 483 defer colMajorArr.Release() 484 485 rowMajor = arrowTensor.NewInt16(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 486 defer rowMajor.Release() 487 colMajor = arrowTensor.NewInt16(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Int16SizeBytes), int64(arrow.Int16SizeBytes * 2)}, []string{"x", "y"}) 488 defer colMajor.Release() 489 case arrow.PrimitiveTypes.Int32: 490 b := arrowArray.NewInt32Builder(pool) 491 defer b.Release() 492 b.AppendValues( 493 []int32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 494 taat.rowMajorValid, 495 ) 496 rowMajorArr = b.NewArray() 497 defer rowMajorArr.Release() 498 499 b.AppendValues( 500 []int32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 501 taat.rowMajorValid, 502 ) 503 colMajorArr = b.NewArray() 504 defer colMajorArr.Release() 505 506 rowMajor = arrowTensor.NewInt32(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 507 defer rowMajor.Release() 508 colMajor = arrowTensor.NewInt32(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Int32SizeBytes), int64(arrow.Int32SizeBytes * 2)}, []string{"x", "y"}) 509 defer colMajor.Release() 510 case arrow.PrimitiveTypes.Int64: 511 b := arrowArray.NewInt64Builder(pool) 512 defer b.Release() 513 b.AppendValues( 514 []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 515 taat.rowMajorValid, 516 ) 517 rowMajorArr = b.NewArray() 518 defer rowMajorArr.Release() 519 520 b.AppendValues( 521 []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 522 taat.rowMajorValid, 523 ) 524 colMajorArr = b.NewArray() 525 defer colMajorArr.Release() 526 527 rowMajor = arrowTensor.NewInt64(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 528 defer rowMajor.Release() 529 colMajor = arrowTensor.NewInt64(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Int64SizeBytes), int64(arrow.Int64SizeBytes * 2)}, []string{"x", "y"}) 530 defer colMajor.Release() 531 case arrow.PrimitiveTypes.Uint8: 532 b := arrowArray.NewUint8Builder(pool) 533 defer b.Release() 534 b.AppendValues( 535 []uint8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 536 taat.rowMajorValid, 537 ) 538 rowMajorArr = b.NewArray() 539 defer rowMajorArr.Release() 540 541 b.AppendValues( 542 []uint8{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 543 taat.rowMajorValid, 544 ) 545 colMajorArr = b.NewArray() 546 defer colMajorArr.Release() 547 548 rowMajor = arrowTensor.NewUint8(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 549 defer rowMajor.Release() 550 colMajor = arrowTensor.NewUint8(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Uint8SizeBytes), int64(arrow.Uint8SizeBytes * 2)}, []string{"x", "y"}) 551 defer colMajor.Release() 552 case arrow.PrimitiveTypes.Uint16: 553 b := arrowArray.NewUint16Builder(pool) 554 defer b.Release() 555 b.AppendValues( 556 []uint16{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 557 taat.rowMajorValid, 558 ) 559 rowMajorArr = b.NewArray() 560 defer rowMajorArr.Release() 561 562 b.AppendValues( 563 []uint16{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 564 taat.rowMajorValid, 565 ) 566 colMajorArr = b.NewArray() 567 defer colMajorArr.Release() 568 569 rowMajor = arrowTensor.NewUint16(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 570 defer rowMajor.Release() 571 colMajor = arrowTensor.NewUint16(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Uint16SizeBytes), int64(arrow.Uint16SizeBytes * 2)}, []string{"x", "y"}) 572 defer colMajor.Release() 573 case arrow.PrimitiveTypes.Uint32: 574 b := arrowArray.NewUint32Builder(pool) 575 defer b.Release() 576 b.AppendValues( 577 []uint32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 578 taat.rowMajorValid, 579 ) 580 rowMajorArr = b.NewArray() 581 defer rowMajorArr.Release() 582 583 b.AppendValues( 584 []uint32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 585 taat.rowMajorValid, 586 ) 587 colMajorArr = b.NewArray() 588 defer colMajorArr.Release() 589 590 rowMajor = arrowTensor.NewUint32(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 591 defer rowMajor.Release() 592 colMajor = arrowTensor.NewUint32(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Uint32SizeBytes), int64(arrow.Uint32SizeBytes * 2)}, []string{"x", "y"}) 593 defer colMajor.Release() 594 case arrow.PrimitiveTypes.Uint64: 595 b := arrowArray.NewUint64Builder(pool) 596 defer b.Release() 597 b.AppendValues( 598 []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 599 taat.rowMajorValid, 600 ) 601 rowMajorArr = b.NewArray() 602 defer rowMajorArr.Release() 603 604 b.AppendValues( 605 []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 606 taat.rowMajorValid, 607 ) 608 colMajorArr = b.NewArray() 609 defer colMajorArr.Release() 610 611 rowMajor = arrowTensor.NewUint64(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 612 defer rowMajor.Release() 613 colMajor = arrowTensor.NewUint64(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Uint64SizeBytes), int64(arrow.Uint64SizeBytes * 2)}, []string{"x", "y"}) 614 defer colMajor.Release() 615 case arrow.PrimitiveTypes.Float32: 616 b := arrowArray.NewFloat32Builder(pool) 617 defer b.Release() 618 b.AppendValues( 619 []float32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 620 taat.rowMajorValid, 621 ) 622 rowMajorArr = b.NewArray() 623 defer rowMajorArr.Release() 624 625 b.AppendValues( 626 []float32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 627 taat.rowMajorValid, 628 ) 629 colMajorArr = b.NewArray() 630 defer colMajorArr.Release() 631 632 rowMajor = arrowTensor.NewFloat32(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 633 defer rowMajor.Release() 634 colMajor = arrowTensor.NewFloat32(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Float32SizeBytes), int64(arrow.Float32SizeBytes * 2)}, []string{"x", "y"}) 635 defer colMajor.Release() 636 case arrow.PrimitiveTypes.Float64: 637 b := arrowArray.NewFloat64Builder(pool) 638 defer b.Release() 639 b.AppendValues( 640 []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 641 taat.rowMajorValid, 642 ) 643 rowMajorArr = b.NewArray() 644 defer rowMajorArr.Release() 645 646 b.AppendValues( 647 []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 648 taat.rowMajorValid, 649 ) 650 colMajorArr = b.NewArray() 651 defer colMajorArr.Release() 652 653 rowMajor = arrowTensor.NewFloat64(rowMajorArr.Data(), []int64{2, 5}, nil, []string{"x", "y"}) 654 defer rowMajor.Release() 655 colMajor = arrowTensor.NewFloat64(colMajorArr.Data(), []int64{2, 5}, []int64{int64(arrow.Float64SizeBytes), int64(arrow.Float64SizeBytes * 2)}, []string{"x", "y"}) 656 defer colMajor.Release() 657 default: 658 t.Errorf("DataType not supported in tests: %v", taat.dt) 659 } 660 661 rowMajorT = FromArrowTensor(rowMajor) 662 colMajorT = FromArrowTensor(colMajor) 663 664 assert.Equal(taat.rowMajorData, rowMajorT.Data(), "test %d: row major %v", i, taat.dt) 665 assert.Equal(len(taat.rowMajorValid), len(rowMajorT.Mask()), "test %d: row major %v mask length incorrect", i, taat.dt) 666 for i, invalid := range rowMajorT.Mask() { 667 assert.Equal(taat.rowMajorValid[i], !invalid, "test %d: row major %v mask value incorrect", i, taat.dt) 668 } 669 assert.True(colMajorT.Shape().Eq(taat.shape)) 670 671 assert.Equal(taat.colMajorData, colMajorT.Data(), "test %d: column major %v", i, taat.dt) 672 assert.Equal(len(taat.colMajorValid), len(colMajorT.Mask()), "test %d: column major %v mask length incorrect", i, taat.dt) 673 for i, invalid := range colMajorT.Mask() { 674 assert.Equal(taat.colMajorValid[i], !invalid, "test %d: column major %v mask value incorrect", i, taat.dt) 675 } 676 assert.True(rowMajorT.Shape().Eq(taat.shape)) 677 } 678 }