28 lines
		
	
	
		
			728 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			728 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <ankerl/unordered_dense.h>
 | 
						|
 | 
						|
#include <app/doctest.h>
 | 
						|
 | 
						|
#include <cstddef> // for size_t
 | 
						|
#include <vector>  // for vector
 | 
						|
 | 
						|
// struct that provides both hash and equals operator
 | 
						|
struct hash_with_equal {
 | 
						|
    auto operator()(int x) const -> size_t {
 | 
						|
        return static_cast<size_t>(x);
 | 
						|
    }
 | 
						|
 | 
						|
    auto operator()(int a, int b) const -> bool {
 | 
						|
        return a == b;
 | 
						|
    }
 | 
						|
};
 | 
						|
 | 
						|
TYPE_TO_STRING_MAP(int, int, hash_with_equal, hash_with_equal);
 | 
						|
 | 
						|
// make sure the map works with the same type (check that it handles the diamond problem)
 | 
						|
TEST_CASE_MAP("diamond_problem", int, int, hash_with_equal, hash_with_equal) {
 | 
						|
    auto map = map_t();
 | 
						|
    map[1] = 2;
 | 
						|
    REQUIRE(map.size() == 1);
 | 
						|
    REQUIRE(map.find(1) != map.end());
 | 
						|
}
 |