@@ -427,14 +427,90 @@ TEST(Array, ISSUE_3534) {
427
427
// Following assignment failed silently without above copy()
428
428
// a(0,0) = 1234;
429
429
430
- array a = range (dim4 (5 , 5 ));
431
- a = a.rows (1 , 4 );
432
- a (1 , 1 ) = 1234 ;
430
+ // Testing rows
431
+ {
432
+ array a = range (dim4 (5 , 5 ));
433
+ af_array before_handle = a.get ();
434
+ const float *before_dev_pointer = a.device <float >();
433
435
434
- array b = range (dim4 (4 , 5 )) + 1.0 ;
435
- b (1 , 1 ) = 1234 ;
436
+ a = a.rows (1 , 4 );
437
+ af_array after_handle = a.get ();
438
+ const float *after_dev_pointer = a.device <float >();
436
439
437
- ASSERT_ARRAYS_EQ (a, b);
440
+ // We expect a copy to be created, so the handle and
441
+ // array pointers should be different
442
+ ASSERT_NE (before_handle, after_handle);
443
+ ASSERT_NE (before_dev_pointer, after_dev_pointer);
444
+
445
+ a (1 , 1 ) = -1234 ;
446
+
447
+ array b = range (dim4 (4 , 5 )) + 1.0 ;
448
+ b (1 , 1 ) = -1234 ;
449
+
450
+ ASSERT_ARRAYS_EQ (a, b);
451
+ }
452
+
453
+ // Testing columns
454
+ {
455
+ array a = range (dim4 (5 , 5 ));
456
+ af_array before_handle = a.get ();
457
+ const float *before_dev_pointer = a.device <float >();
458
+
459
+ a = a.cols (1 , 4 );
460
+ af_array after_handle = a.get ();
461
+ const float *after_dev_pointer = a.device <float >();
462
+
463
+ // We expect a copy to be created, so the handle and
464
+ // array pointers should be different
465
+ ASSERT_NE (before_handle, after_handle);
466
+ ASSERT_NE (before_dev_pointer, after_dev_pointer);
467
+
468
+ a (1 , 1 ) = -1234 ;
469
+
470
+ array b = range (dim4 (5 , 4 ));
471
+ b (1 , 1 ) = -1234 ;
472
+
473
+ ASSERT_ARRAYS_EQ (a, b);
474
+ }
475
+
476
+ // Testing subarrays with sizes of one page
477
+ {
478
+ array a = range (dim4 (64 , 64 ));
479
+ a = a.rows (31 , 57 );
480
+ a (1 , 1 ) = -123456 ;
481
+
482
+ array b = range (dim4 (27 , 64 )) + 31.0 ;
483
+ b (1 , 1 ) = -123456 ;
484
+
485
+ ASSERT_ARRAYS_EQ (a, b);
486
+
487
+ a = range (dim4 (128 , 128 ));
488
+ a = a.rows (0 , 63 );
489
+ a = a.cols (0 , 63 );
490
+ a (0 , 0 ) = -54321 ;
491
+ a (63 , 63 ) = -12345 ;
492
+
493
+ b = range (dim4 (64 , 64 ));
494
+ b (0 , 0 ) = -54321 ;
495
+ b (63 , 63 ) = -12345 ;
496
+
497
+ ASSERT_ARRAYS_EQ (a, b);
498
+
499
+ a = range (dim4 (128 , 128 ));
500
+ a (64 , 64 ) = -67890 ;
501
+ a (127 , 127 ) = -9876 ;
502
+ a = a.rows (64 , 127 );
503
+ a = a.cols (64 , 127 );
504
+
505
+ a (0 , 0 ) = -54321 ;
506
+ a (63 , 63 ) = -12345 ;
507
+
508
+ b = range (dim4 (64 , 64 )) + 64 ;
509
+ b (0 , 0 ) = -54321 ;
510
+ b (63 , 63 ) = -12345 ;
511
+
512
+ ASSERT_ARRAYS_EQ (a, b);
513
+ }
438
514
}
439
515
440
516
TEST (Array, CreateHandleInvalidNullDimsPointer) {
0 commit comments