@@ -5056,78 +5056,78 @@ GTEST_TEST(hashmap, add_by_piecewise_construct_bitwise_different_type)
50565056
50575057GTEST_TEST (hashmap, add_by_piecewise_construct_non_bitwise_same_type)
50585058{
5059- // using key_type = hud_test::non_bitwise_type;
5060- // using value_type = hud_test::non_bitwise_type;
5061- // using hashmap_type = hud::hashmap<key_type, value_type, hud::hash_64<key_type>, hud::equal<key_type>, hud_test::allocator_watcher<1>>;
5062-
5063- // static_assert(hud::is_hashable_64_v<key_type, decltype(hud::forward_as_tuple(1, (i32 *)nullptr))>);
5064- // static_assert(hud::is_hashable_64_v<key_type, decltype(hud::forward_as_tuple(1, (i32 *)nullptr))>);
5065- // static_assert(hud::is_comparable_with_equal_v<key_type, decltype(hud::forward_as_tuple(1, (i32 *)nullptr))>) ;
5066- // const auto test = []()
5067- // {
5068- // constexpr usize reserved_size = 2 ;
5069- // i32 ptr[2];
5070- // hashmap_type map ;
5071- // map.reserve(reserved_size );
5072-
5073- // const auto it = map.add(hud::tag_piecewise_construct, hud::forward_as_tuple(1, ptr), hud::forward_as_tuple(2, ptr + 1));
5074-
5075- // return std::tuple {
5076- // map.count() == 1, // 0
5077- // it->key().constructor_count() == 1, // 1
5078- // it->key().move_constructor_count() == 0, // 2
5079- // it->key().copy_constructor_count() == 0, // 3
5080- // it->key().move_assign_count() == 0, // 4
5081- // it->key().copy_assign_count() == 0, // 5
5082- // it->key().id() == 1, // 6
5083- // it->key().destructor_counter() == ptr, // 7
5084- // it->value().constructor_count() == 1, // 8
5085- // it->value().move_constructor_count() == 0, // 9
5086- // it->value().copy_constructor_count() == 0, // 10
5087- // it->value().move_assign_count() == 0, // 11
5088- // it->value().copy_assign_count() == 0, // 12
5089- // it->value().id() == 2, // 13
5090- // it->value().destructor_counter() == ptr + 1 // 14
5091- // };
5092- // };
5093-
5094- // // Non constant
5095- // {
5096- // const auto result = test();
5097- // hud_assert_true(std::get<0>(result));
5098- // hud_assert_true(std::get<1>(result));
5099- // hud_assert_true(std::get<2>(result));
5100- // hud_assert_true(std::get<3>(result));
5101- // hud_assert_true(std::get<4>(result));
5102- // hud_assert_true(std::get<5>(result));
5103- // hud_assert_true(std::get<6>(result));
5104- // hud_assert_true(std::get<7>(result));
5105- // hud_assert_true(std::get<8>(result));
5106- // hud_assert_true(std::get<9>(result));
5107- // hud_assert_true(std::get<10>(result));
5108- // hud_assert_true(std::get<11>(result));
5109- // hud_assert_true(std::get<12>(result));
5110- // hud_assert_true(std::get<13>(result));
5111- // hud_assert_true(std::get<14>(result));
5112- // }
5113-
5114- // // Constant
5115- // {
5116- // constexpr auto result = test();
5117- // hud_assert_true(std::get<0>(result));
5118- // hud_assert_true(std::get<1>(result));
5119- // hud_assert_true(std::get<2>(result));
5120- // hud_assert_true(std::get<3>(result));
5121- // hud_assert_true(std::get<4>(result));
5122- // hud_assert_true(std::get<5>(result));
5123- // hud_assert_true(std::get<6>(result));
5124- // hud_assert_true(std::get<7>(result));
5125- // hud_assert_true(std::get<8>(result));
5126- // hud_assert_true(std::get<9>(result));
5127- // hud_assert_true(std::get<10>(result));
5128- // hud_assert_true(std::get<11>(result));
5129- // hud_assert_true(std::get<12>(result));
5130- // hud_assert_true(std::get<13>(result));
5131- // hud_assert_true(std::get<14>(result));
5132- // }
5059+ using key_type = hud_test::non_bitwise_type;
5060+ using value_type = hud_test::non_bitwise_type;
5061+ using hashmap_type = hud::hashmap<key_type, value_type, hud::hash_64<key_type>, hud::equal<key_type>, hud_test::allocator_watcher<1 >>;
5062+
5063+ const auto test = []()
5064+ {
5065+ constexpr usize reserved_size = 2 ;
5066+ i32 ptr[ 2 ];
5067+ hashmap_type map;
5068+ map. reserve ( reserved_size) ;
5069+
5070+ static_assert (hud::is_hashable_64_v<key_type, decltype ( hud::forward_as_tuple ( 1 , ptr))>) ;
5071+ static_assert (hud::is_comparable_with_equal_v<key_type, decltype ( hud::forward_as_tuple ( 2 , ptr + 1 ))> );
5072+
5073+ const auto it = map.add (hud::tag_piecewise_construct, hud::forward_as_tuple (1 , ptr), hud::forward_as_tuple (2 , ptr + 1 ));
5074+
5075+ return std::tuple {
5076+ map.count () == 1 , // 0
5077+ it->key ().constructor_count () == 1 , // 1
5078+ it->key ().move_constructor_count () == 0 , // 2
5079+ it->key ().copy_constructor_count () == 0 , // 3
5080+ it->key ().move_assign_count () == 0 , // 4
5081+ it->key ().copy_assign_count () == 0 , // 5
5082+ it->key ().id () == 1 , // 6
5083+ it->key ().destructor_counter () == ptr, // 7
5084+ it->value ().constructor_count () == 1 , // 8
5085+ it->value ().move_constructor_count () == 0 , // 9
5086+ it->value ().copy_constructor_count () == 0 , // 10
5087+ it->value ().move_assign_count () == 0 , // 11
5088+ it->value ().copy_assign_count () == 0 , // 12
5089+ it->value ().id () == 2 , // 13
5090+ it->value ().destructor_counter () == ptr + 1 // 14
5091+ };
5092+ };
5093+
5094+ // Non constant
5095+ {
5096+ const auto result = test ();
5097+ hud_assert_true (std::get<0 >(result));
5098+ hud_assert_true (std::get<1 >(result));
5099+ hud_assert_true (std::get<2 >(result));
5100+ hud_assert_true (std::get<3 >(result));
5101+ hud_assert_true (std::get<4 >(result));
5102+ hud_assert_true (std::get<5 >(result));
5103+ hud_assert_true (std::get<6 >(result));
5104+ hud_assert_true (std::get<7 >(result));
5105+ hud_assert_true (std::get<8 >(result));
5106+ hud_assert_true (std::get<9 >(result));
5107+ hud_assert_true (std::get<10 >(result));
5108+ hud_assert_true (std::get<11 >(result));
5109+ hud_assert_true (std::get<12 >(result));
5110+ hud_assert_true (std::get<13 >(result));
5111+ hud_assert_true (std::get<14 >(result));
5112+ }
5113+
5114+ // Constant
5115+ {
5116+ constexpr auto result = test ();
5117+ hud_assert_true (std::get<0 >(result));
5118+ hud_assert_true (std::get<1 >(result));
5119+ hud_assert_true (std::get<2 >(result));
5120+ hud_assert_true (std::get<3 >(result));
5121+ hud_assert_true (std::get<4 >(result));
5122+ hud_assert_true (std::get<5 >(result));
5123+ hud_assert_true (std::get<6 >(result));
5124+ hud_assert_true (std::get<7 >(result));
5125+ hud_assert_true (std::get<8 >(result));
5126+ hud_assert_true (std::get<9 >(result));
5127+ hud_assert_true (std::get<10 >(result));
5128+ hud_assert_true (std::get<11 >(result));
5129+ hud_assert_true (std::get<12 >(result));
5130+ hud_assert_true (std::get<13 >(result));
5131+ hud_assert_true (std::get<14 >(result));
5132+ }
51335133}
0 commit comments