Exemplo n.º 1
0
DECLARE_TEST( hashmap, erase )
{
	hashmap_t* map = hashmap_allocate( 0, 0 );
	void* prev = 0;
	
	EXPECT_EQ( hashmap_lookup( map, 0 ), 0 );
	EXPECT_EQ( hashmap_size( map ), 0 );

	prev = hashmap_insert( map, 0, map );
	EXPECT_EQ( prev, 0 );
	EXPECT_EQ( hashmap_size( map ), 1 );
	EXPECT_TRUE( hashmap_has_key( map, 0 ) );
	
	prev = hashmap_erase( map, 0 );
	EXPECT_EQ( prev, map );
	EXPECT_EQ( hashmap_size( map ), 0 );
	EXPECT_FALSE( hashmap_has_key( map, 0 ) );
	
	prev = hashmap_erase( map, 0 );
	EXPECT_EQ( prev, 0 );
	EXPECT_EQ( hashmap_size( map ), 0 );
	EXPECT_FALSE( hashmap_has_key( map, 0 ) );
	
	prev = hashmap_erase( map, (hash_t)(uintptr_t)map );
	EXPECT_EQ( prev, 0 );
	EXPECT_EQ( hashmap_size( map ), 0 );	
	EXPECT_FALSE( hashmap_has_key( map, (hash_t)(uintptr_t)map ) );

	hashmap_deallocate( map );

	return 0;
}
Exemplo n.º 2
0
DECLARE_TEST( hashmap, lookup )
{
	hashmap_t* map = hashmap_allocate( 31, 0 );
	char* value = (void*)(uintptr_t)1234;
	hash_t key = (hash_t)4321;
	unsigned int ikey = 0;

	for( ; ikey < 1024; ++ikey, ++key, ++value )
	{
		void* prev = hashmap_insert( map, key, value );
		EXPECT_EQ( prev, 0 );
	}
	
	for( ikey = 0, key = (hash_t)4321, value = (void*)(uintptr_t)1234; ikey < 1024; ++ikey, ++key, ++value )
	{
		void* prev = hashmap_lookup( map, key );
		EXPECT_EQ( prev, value );

		EXPECT_TRUE( hashmap_has_key( map, key ) );
		hashmap_erase( map, key );
		EXPECT_FALSE( hashmap_has_key( map, key ) );		
	}

	hashmap_deallocate( map );

	return 0;
}
Exemplo n.º 3
0
DECLARE_TEST(hashmap, allocation) {
	hashmap_t* map = hashmap_allocate(0, 0);

	EXPECT_EQ(hashmap_size(map), 0);
	EXPECT_EQ(hashmap_lookup(map, 0), 0);
	EXPECT_EQ(hashmap_lookup(map, (hash_t)(uintptr_t)map), 0);

	hashmap_deallocate(map);

	map = hashmap_allocate(13, 127);

	EXPECT_EQ(hashmap_size(map), 0);
	EXPECT_EQ(hashmap_lookup(map, 0), 0);
	EXPECT_EQ(hashmap_lookup(map, (hash_t)(uintptr_t)map), 0);

	hashmap_deallocate(map);

	return 0;
}
Exemplo n.º 4
0
void
lua_modulemap_finalize(void) {
	for (size_t ibucket = 0; ibucket < _lua_modulemap->num_buckets; ++ibucket) {
		hashmap_node_t* bucket = _lua_modulemap->bucket[ibucket];
		for (size_t inode = 0, nsize = array_size(bucket); inode < nsize; ++inode)
			memory_deallocate(bucket[inode].value);
	}
	hashmap_deallocate(_lua_modulemap);
	mutex_deallocate(_lua_modulemap_lock);
}
Exemplo n.º 5
0
DECLARE_TEST( hashmap, insert )
{
	hashmap_t* map = hashmap_allocate( 0, 0 );
	void* prev = 0;
	
	EXPECT_EQ( hashmap_lookup( map, 0 ), 0 );

	prev = hashmap_insert( map, 0, map );
	EXPECT_EQ( prev, 0 );
	
	prev = hashmap_insert( map, 0, map );
	EXPECT_EQ( prev, map );
	
	prev = hashmap_insert( map, 0, 0 );
	EXPECT_EQ( prev, map );

	prev = hashmap_insert( map, 0, map );
	EXPECT_EQ( prev, 0 );
	
	prev = hashmap_insert( map, (hash_t)(uintptr_t)map, map );
	EXPECT_EQ( prev, 0 );

	EXPECT_EQ( hashmap_size( map ), 2 );
	EXPECT_EQ( hashmap_lookup( map, 0 ), map );
	EXPECT_EQ( hashmap_lookup( map, (hash_t)(uintptr_t)map ), map );

	hashmap_insert( map, 0, 0 );
	hashmap_insert( map, (hash_t)(uintptr_t)map, 0 );

	EXPECT_EQ( hashmap_size( map ), 2 );
	EXPECT_EQ( hashmap_lookup( map, 0 ), 0 );
	EXPECT_EQ( hashmap_lookup( map, (hash_t)(uintptr_t)map ), 0 );

	hashmap_deallocate( map );
	
	return 0;
}
Exemplo n.º 6
0
void
lua_symbol_finalize(void) {
	hashmap_deallocate(_lua_symbols);
}