diff options
author | 2016-10-29 09:11:50 +0200 | |
---|---|---|
committer | 2016-10-29 09:11:50 +0200 | |
commit | a3b4058bf7266f1291cf38c30425d9948250fcd9 (patch) | |
tree | 46116c48b60368ac9c782c1d5e6e8ae16e558987 /3rdparty/bx/tests/handle_test.cpp | |
parent | b99be73f2db5d3f81edc96a92ac4839e7f1cc3ab (diff) |
Updated BGFX and BX and recompiled shaders (nw)
Diffstat (limited to '3rdparty/bx/tests/handle_test.cpp')
-rw-r--r-- | 3rdparty/bx/tests/handle_test.cpp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/3rdparty/bx/tests/handle_test.cpp b/3rdparty/bx/tests/handle_test.cpp new file mode 100644 index 00000000000..29019e318cf --- /dev/null +++ b/3rdparty/bx/tests/handle_test.cpp @@ -0,0 +1,119 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#include "test.h" +#include <bx/handlealloc.h> +#include <bx/string.h> + +TEST_CASE("HandleListT", "") +{ + bx::HandleListT<32> list; + + list.pushBack(16); + REQUIRE(list.getFront() == 16); + REQUIRE(list.getBack() == 16); + + list.pushFront(7); + REQUIRE(list.getFront() == 7); + REQUIRE(list.getBack() == 16); + + uint16_t expected0[] = { 15, 31, 7, 16, 17, 11, 13 }; + list.pushBack(17); + list.pushBack(11); + list.pushBack(13); + list.pushFront(31); + list.pushFront(15); + uint16_t count = 0; + for (uint16_t it = list.getFront(); it != UINT16_MAX; it = list.getNext(it), ++count) + { + REQUIRE(it == expected0[count]); + } + REQUIRE(count == BX_COUNTOF(expected0) ); + + list.remove(17); + list.remove(31); + list.remove(16); + list.pushBack(16); + uint16_t expected1[] = { 15, 7, 11, 13, 16 }; + count = 0; + for (uint16_t it = list.getFront(); it != UINT16_MAX; it = list.getNext(it), ++count) + { + REQUIRE(it == expected1[count]); + } + REQUIRE(count == BX_COUNTOF(expected1) ); + + list.popBack(); + list.popFront(); + list.popBack(); + list.popBack(); + + REQUIRE(list.getFront() == 7); + REQUIRE(list.getBack() == 7); + + list.popBack(); + REQUIRE(list.getFront() == UINT16_MAX); + REQUIRE(list.getBack() == UINT16_MAX); +} + +TEST_CASE("HandleAllocLruT", "") +{ + bx::HandleAllocLruT<16> lru; + + uint16_t handle[4] = + { + lru.alloc(), + lru.alloc(), + lru.alloc(), + lru.alloc(), + }; + + lru.touch(handle[1]); + + uint16_t expected0[] = { handle[1], handle[3], handle[2], handle[0] }; + uint16_t count = 0; + for (uint16_t it = lru.getFront(); it != UINT16_MAX; it = lru.getNext(it), ++count) + { + REQUIRE(it == expected0[count]); + } +} + +TEST_CASE("HandleHashTable", "") +{ + typedef bx::HandleHashMapT<512> HashMap; + + HashMap hm; + + REQUIRE(512 == hm.getMaxCapacity() ); + + bx::StringView sv0("test0"); + + bool ok = hm.insert(bx::hashMurmur2A(sv0), 0); + REQUIRE(ok); + + ok = hm.insert(bx::hashMurmur2A(sv0), 0); + REQUIRE(!ok); + REQUIRE(1 == hm.getNumElements() ); + + bx::StringView sv1("test1"); + + ok = hm.insert(bx::hashMurmur2A(sv1), 0); + REQUIRE(ok); + REQUIRE(2 == hm.getNumElements() ); + + hm.removeByHandle(0); + REQUIRE(0 == hm.getNumElements() ); + + ok = hm.insert(bx::hashMurmur2A(sv0), 0); + REQUIRE(ok); + + hm.removeByKey(bx::hashMurmur2A(sv0) ); + REQUIRE(0 == hm.getNumElements() ); + + for (uint32_t ii = 0, num = hm.getMaxCapacity(); ii < num; ++ii) + { + ok = hm.insert(ii, uint16_t(ii) ); + REQUIRE(ok); + } +} |