@@ -2389,106 +2389,6 @@ TEST(core_array, reserve_nontrivial_reloc_um)
2389
2389
}
2390
2390
#endif
2391
2391
2392
- // Regression test for a memory leak in axom::Array's copy/move/initialization
2393
- template <typename T1, typename T2>
2394
- auto make_arr_data (int SZ1, int SZ2)
2395
- -> std::pair<axom::Array<axom::Array<T1>>, axom::Array<axom::Array<T2>>>
2396
- {
2397
- using Arr1 = axom::Array<axom::Array<T1>>;
2398
- using Arr2 = axom::Array<axom::Array<T2>>;
2399
-
2400
- T1 val1 {};
2401
- T2 val2 {};
2402
-
2403
- Arr1 arr1 (SZ1, 2 * SZ1);
2404
- for (int i = 0 ; i < SZ1; ++i)
2405
- {
2406
- arr1[i].resize (i + 10 );
2407
- arr1[i].shrink ();
2408
- arr1[i].push_back (val1);
2409
- }
2410
-
2411
- Arr2 arr2 (SZ2, 2 * SZ2);
2412
- for (int i = 0 ; i < SZ2; ++i)
2413
- {
2414
- arr2[i].resize (i + 10 );
2415
- arr2[i].shrink ();
2416
- arr2[i].push_back (val2);
2417
- }
2418
- arr2.shrink ();
2419
-
2420
- return {std::move (arr1), std::move (arr2)};
2421
- }
2422
-
2423
- TEST (core_array, regression_array_move)
2424
- {
2425
- using T1 = int ;
2426
- using Arr1 = axom::Array<axom::Array<T1>>;
2427
-
2428
- using T2 = NonTriviallyRelocatable;
2429
- using Arr2 = axom::Array<axom::Array<T2>>;
2430
-
2431
- using PArrArr = std::pair<Arr1, Arr2>;
2432
-
2433
- constexpr int SZ1 = 20 ;
2434
- constexpr int SZ2 = 30 ;
2435
-
2436
- {
2437
- PArrArr pr;
2438
- pr = make_arr_data<T1, T2>(SZ1, SZ2);
2439
-
2440
- EXPECT_EQ (SZ1, pr.first .size ());
2441
- EXPECT_EQ (2 * SZ1, pr.first .capacity ());
2442
-
2443
- EXPECT_EQ (SZ2, pr.second .size ());
2444
- EXPECT_EQ (SZ2, pr.second .capacity ());
2445
- }
2446
-
2447
- {
2448
- auto pr = make_arr_data<T1, T2>(SZ1, SZ2);
2449
-
2450
- EXPECT_EQ (SZ1, pr.first .size ());
2451
- EXPECT_EQ (2 * SZ1, pr.first .capacity ());
2452
-
2453
- EXPECT_EQ (SZ2, pr.second .size ());
2454
- EXPECT_EQ (SZ2, pr.second .capacity ());
2455
- }
2456
-
2457
- {
2458
- auto pr = make_arr_data<T1, T2>(SZ1, SZ2);
2459
- EXPECT_EQ (SZ1, pr.first .size ());
2460
- EXPECT_EQ (2 * SZ1, pr.first .capacity ());
2461
- EXPECT_EQ (SZ2, pr.second .size ());
2462
- EXPECT_EQ (SZ2, pr.second .capacity ());
2463
-
2464
- pr = make_arr_data<T1, T2>(SZ2, SZ1);
2465
- EXPECT_EQ (SZ2, pr.first .size ());
2466
- EXPECT_EQ (2 * SZ2, pr.first .capacity ());
2467
- EXPECT_EQ (SZ1, pr.second .size ());
2468
- EXPECT_EQ (SZ1, pr.second .capacity ());
2469
- }
2470
-
2471
- // lots of copy and move assignments and constructions
2472
- {
2473
- auto pr = make_arr_data<T1, T2>(SZ1, SZ2);
2474
- pr = make_arr_data<T1, T2>(5 , 7 );
2475
-
2476
- auto pr2 = std::move (pr);
2477
- auto pr3 = pr2;
2478
-
2479
- pr2 = make_arr_data<T1, T2>(13 , 17 );
2480
-
2481
- auto pr4 {make_arr_data<T1, T2>(33 , 44 )};
2482
-
2483
- auto pr5 (std::move (pr4));
2484
-
2485
- EXPECT_EQ (33 , pr5.first .size ());
2486
- EXPECT_EQ (66 , pr5.first .capacity ());
2487
- EXPECT_EQ (44 , pr5.second .size ());
2488
- EXPECT_EQ (44 , pr5.second .capacity ());
2489
- }
2490
- }
2491
-
2492
2392
class AllocatingDefaultInit
2493
2393
{
2494
2394
public:
0 commit comments