sceneContainerTesting.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. #include "testing/unitTesting.h"
  2. #include "platform/platform.h"
  3. #include "console/simBase.h"
  4. #include "console/consoleTypes.h"
  5. #include "console/scriptObjects.h"
  6. #include "console/simBase.h"
  7. #include "console/engineAPI.h"
  8. #include "math/mMath.h"
  9. #include "console/stringStack.h"
  10. #include "scene/sceneContainer.h"
  11. using ::testing::Matcher;
  12. using ::testing::TypedEq;
  13. class LazyItemAllocatorTest : public ::testing::Test
  14. {
  15. protected:
  16. LazyItemAllocatorTest()
  17. {
  18. }
  19. void SetUp() override
  20. {
  21. }
  22. };
  23. TEST_F(LazyItemAllocatorTest, realloc)
  24. {
  25. LazyItemAllocator<U32> testAllocator(1024);
  26. EXPECT_EQ(testAllocator.isNull(), true);
  27. EXPECT_EQ(testAllocator.getPtr(), (U32*)NULL);
  28. EXPECT_EQ(testAllocator.canFit(1), false);
  29. // Should alloc memory
  30. testAllocator.realloc(1, false);
  31. void* oldPtr = testAllocator.getPtr();
  32. EXPECT_EQ(testAllocator.isNull(), false);
  33. EXPECT_NE(testAllocator.getPtr(), (U32*)NULL);
  34. EXPECT_EQ(testAllocator.canFit(1), true);
  35. EXPECT_EQ(testAllocator.canFit(2), true);
  36. EXPECT_EQ(testAllocator.canFit(1024), true);
  37. EXPECT_EQ(testAllocator.canFit(1025), false);
  38. // Should be the same
  39. testAllocator.realloc(2, false);
  40. EXPECT_EQ(testAllocator.canFit(3), true);
  41. EXPECT_EQ(testAllocator.getPtr(), oldPtr);
  42. // Alloc more and then return to normal
  43. testAllocator.realloc(1025, false);
  44. EXPECT_EQ(testAllocator.canFit(1025), true);
  45. testAllocator.realloc(1022, true);
  46. EXPECT_EQ(testAllocator.canFit(1025), false);
  47. }
  48. class SceneContainerBinRefListTest : public ::testing::Test
  49. {
  50. protected:
  51. SceneContainerBinRefListTest()
  52. {
  53. }
  54. void SetUp() override
  55. {
  56. }
  57. };
  58. TEST_F(SceneContainerBinRefListTest, getValues)
  59. {
  60. SceneContainerBinRefList<U32> testList;
  61. srand(11891830);
  62. // Add some items
  63. U32 valueList[10];
  64. U32 valueList2[10];
  65. for (U32 i = 0; i < 10; i++)
  66. {
  67. valueList[i] = rand() % 1024;
  68. valueList2[i] = rand() % 1024;
  69. }
  70. auto listHandle1 = testList.allocList(10, valueList);
  71. auto listHandle2 = testList.allocList(5, valueList2);
  72. // Grab some items
  73. U32 numValues1 = 0;
  74. U32 numValues2 = 0;
  75. auto newValueList1 = testList.getValues(listHandle1, numValues1);
  76. auto newValueList2 = testList.getValues(listHandle2, numValues2);
  77. // Should be sequential
  78. EXPECT_GT(newValueList2, newValueList1);
  79. EXPECT_EQ(numValues1, 10);
  80. EXPECT_EQ(numValues2, 5);
  81. bool allOk = true;
  82. for (U32 i = 0; i < 10; i++)
  83. {
  84. if (valueList[i] != newValueList1[i])
  85. allOk = false;
  86. }
  87. for (U32 i = 0; i < 5; i++)
  88. {
  89. if (valueList2[i] != newValueList2[i])
  90. allOk = false;
  91. }
  92. EXPECT_EQ(allOk, true);
  93. // Free item, no longer valid
  94. testList.freeList(listHandle1);
  95. auto newValueList3 = testList.getValues(listHandle1, numValues1);
  96. // NOTE: this is not NULL since item gets put in a free list
  97. EXPECT_NE(newValueList3, (U32*)NULL);
  98. EXPECT_EQ(numValues1, 0);
  99. // Grab some more items (they should appear AFTER the last alloc)
  100. U32 numValues4 = 0;
  101. auto listHandle4 = testList.allocList(1, valueList2);
  102. auto newValueList4 = testList.getValues(listHandle4, numValues4);
  103. EXPECT_EQ(numValues4, 1);
  104. EXPECT_GT(newValueList4, newValueList2);
  105. }
  106. TEST_F(SceneContainerBinRefListTest, getValueIterators)
  107. {
  108. SceneContainerBinRefList<U32> testList;
  109. srand(1111830);
  110. // Add some items
  111. U32 valueList[10];
  112. U32 valueList2[10];
  113. for (U32 i = 0; i < 10; i++)
  114. {
  115. valueList[i] = rand() % 1024;
  116. valueList2[i] = rand() % 1024;
  117. }
  118. auto listHandle1 = testList.allocList(10, valueList);
  119. auto listHandle2 = testList.allocList(5, valueList2);
  120. // Grab some items
  121. SceneContainerBinRefList<U32>::ValueIterator start1;
  122. SceneContainerBinRefList<U32>::ValueIterator end1;
  123. SceneContainerBinRefList<U32>::ValueIterator start2;
  124. SceneContainerBinRefList<U32>::ValueIterator end2;
  125. testList.getValueIterators(listHandle1, start1, end1);
  126. testList.getValueIterators(listHandle2, start2, end2);
  127. EXPECT_EQ((end1.getPtr() - start1.getPtr()), 10);
  128. EXPECT_EQ((end2.getPtr() - start2.getPtr()), 5);
  129. EXPECT_GT(start2.getPtr(), start1.getPtr());
  130. // We can update the value
  131. start1++;
  132. *start1 = 2040;
  133. EXPECT_EQ(*(start1.getPtr()), 2040);
  134. EXPECT_EQ((end1.getPtr() - 10)[1], 2040);
  135. // Iterators are NULL for an OOB item
  136. testList.getValueIterators(100, start1, end1);
  137. EXPECT_EQ((start1.getPtr()), (U32*)NULL);
  138. EXPECT_EQ((end1.getPtr()), (U32*)NULL);
  139. EXPECT_EQ((end1.isValid()), false);
  140. }
  141. TEST_F(SceneContainerBinRefListTest, getValueIterator)
  142. {
  143. SceneContainerBinRefList<U32> testList;
  144. srand(1111830);
  145. // Add some items
  146. U32 valueList[10];
  147. U32 valueList2[10];
  148. for (U32 i = 0; i < 10; i++)
  149. {
  150. valueList[i] = rand() % 1024;
  151. valueList2[i] = rand() % 1024;
  152. }
  153. testList.allocList(2, valueList);
  154. auto listHandle2 = testList.allocList(3, valueList2);
  155. auto handleItr = testList.getValueIterator(listHandle2);
  156. EXPECT_NE((handleItr.getPtr()), (U32*)NULL);
  157. EXPECT_EQ((handleItr.isValid()), true);
  158. EXPECT_EQ((*handleItr), valueList2[0]);
  159. EXPECT_EQ((handleItr.getCount()), 3);
  160. handleItr++;
  161. EXPECT_EQ((handleItr.getIndex()), 1);
  162. EXPECT_EQ((*handleItr), valueList2[1]);
  163. handleItr++;
  164. EXPECT_EQ((*handleItr), valueList2[2]);
  165. handleItr++;
  166. EXPECT_EQ((handleItr.isValid()), false);
  167. // Iterators are NULL for an OOB item
  168. auto oobItr = testList.getValueIterator(100);
  169. EXPECT_EQ((oobItr.getPtr()), (U32*)NULL);
  170. EXPECT_EQ((oobItr.isValid()), false);
  171. }
  172. TEST_F(SceneContainerBinRefListTest, allocList)
  173. {
  174. SceneContainerBinRefList<U32> testList;
  175. srand(1131830);
  176. // Set base values
  177. U32 valueList[10];
  178. U32 valueList2[10];
  179. for (U32 i = 0; i < 10; i++)
  180. {
  181. valueList[i] = rand() % 1024;
  182. valueList2[i] = rand() % 1024;
  183. }
  184. // Check allocations
  185. auto listHandle2 = testList.allocList(3, valueList2);
  186. EXPECT_EQ(testList.getBinLists().size(), 1);
  187. EXPECT_EQ(testList.getBinLists()[0].numValues, 3);
  188. EXPECT_EQ(testList.getBinLists()[0].startValue, 0);
  189. auto listHandle3 = testList.allocList(4, valueList);
  190. EXPECT_EQ(testList.getBinLists().size(), 2);
  191. EXPECT_EQ(testList.getBinLists()[1].numValues, 4);
  192. EXPECT_EQ(testList.getBinLists()[1].startValue, 3);
  193. // Zero alloc should still return a list
  194. auto listHandle5 = testList.allocList(0, NULL);
  195. EXPECT_EQ(testList.getBinLists().size(), 3);
  196. EXPECT_EQ(testList.getBinLists()[2].numValues, 0);
  197. EXPECT_EQ(testList.getBinLists()[2].startValue, 7);
  198. }
  199. TEST_F(SceneContainerBinRefListTest, reallocList)
  200. {
  201. SceneContainerBinRefList<U32> testList;
  202. srand(1131830);
  203. // Set base values
  204. U32 valueList[10];
  205. U32 valueList2[10];
  206. for (U32 i = 0; i < 10; i++)
  207. {
  208. valueList[i] = rand() % 1024;
  209. valueList2[i] = rand() % 1024;
  210. }
  211. // Reallocating should puts new items at the end
  212. auto listHandle1 = testList.allocList(2, valueList2);
  213. testList.reallocList(listHandle1, 1, valueList2);
  214. EXPECT_EQ(testList.getBinLists().size(), 1);
  215. EXPECT_EQ(testList.getBinLists()[0].numValues, 1);
  216. EXPECT_EQ(testList.getBinLists()[0].startValue, 2);
  217. auto listHandle3 = testList.allocList(3, valueList);
  218. testList.reallocList(listHandle3, 5, valueList2);
  219. EXPECT_EQ(testList.getBinLists().size(), 2);
  220. EXPECT_EQ(testList.getBinLists()[1].numValues, 5);
  221. EXPECT_EQ(testList.getBinLists()[1].startValue, 6);
  222. // Unless it has the same number of items
  223. testList.reallocList(listHandle3, 5, valueList2);
  224. EXPECT_EQ(testList.getBinLists().size(), 2);
  225. EXPECT_EQ(testList.getBinLists()[1].numValues, 5);
  226. EXPECT_EQ(testList.getBinLists()[1].startValue, 6);
  227. // Should handle invalid handles
  228. testList.reallocList(100, 5, valueList2);
  229. EXPECT_EQ(testList.getBinLists().size(), 2);
  230. EXPECT_EQ(testList.getBinLists()[0].numValues, 1);
  231. EXPECT_EQ(testList.getBinLists()[0].startValue, 2);
  232. EXPECT_EQ(testList.getBinLists()[1].numValues, 5);
  233. EXPECT_EQ(testList.getBinLists()[1].startValue, 6);
  234. }
  235. TEST_F(SceneContainerBinRefListTest, freeList)
  236. {
  237. SceneContainerBinRefList<U32> testList;
  238. srand(6131830);
  239. // Set base values
  240. U32 valueList[10];
  241. U32 valueList2[10];
  242. for (U32 i = 0; i < 10; i++)
  243. {
  244. valueList[i] = rand() % 1024;
  245. valueList2[i] = rand() % 1024;
  246. }
  247. // Make some items
  248. testList.allocList(2, valueList);
  249. auto listHandle2 = testList.allocList(3, valueList2);
  250. auto listHandle3 = testList.allocList(4, valueList);
  251. auto listHandle4 = testList.allocList(5, valueList2);
  252. // Free the middle one, should now be a hole
  253. testList.freeList(listHandle3);
  254. EXPECT_EQ(testList.getBinLists().size(), 4);
  255. //
  256. EXPECT_EQ(testList.getBinLists()[0].numValues, 2);
  257. EXPECT_EQ(testList.getBinLists()[0].startValue, 0);
  258. //
  259. EXPECT_EQ(testList.getBinLists()[1].numValues, 3);
  260. EXPECT_EQ(testList.getBinLists()[1].startValue, 2);
  261. //
  262. EXPECT_EQ(testList.getBinLists()[2].numValues, 0);
  263. EXPECT_EQ(testList.getBinLists()[2].startValue, 0);
  264. //
  265. EXPECT_EQ(testList.getBinLists()[3].numValues, 5);
  266. EXPECT_EQ(testList.getBinLists()[3].startValue, 9);
  267. EXPECT_EQ(testList.getNextFreeListIndex(), listHandle3);
  268. // Freeing more will make a stack
  269. testList.freeList(listHandle2);
  270. EXPECT_EQ(testList.getNextFreeListIndex(), listHandle2);
  271. EXPECT_EQ(testList.getBinLists().size(), 4);
  272. //
  273. EXPECT_EQ(testList.getBinLists()[0].numValues, 2);
  274. EXPECT_EQ(testList.getBinLists()[0].startValue, 0);
  275. //
  276. EXPECT_EQ(testList.getBinLists()[1].numValues, 0);
  277. EXPECT_EQ(testList.getBinLists()[1].startValue, 3);
  278. //
  279. EXPECT_EQ(testList.getBinLists()[2].numValues, 0);
  280. EXPECT_EQ(testList.getBinLists()[2].startValue, 0);
  281. //
  282. EXPECT_EQ(testList.getBinLists()[3].numValues, 5);
  283. EXPECT_EQ(testList.getBinLists()[3].startValue, 9);
  284. // ... which can be popped like this
  285. auto listHandle5 = testList.allocList(1, valueList);
  286. EXPECT_EQ(testList.getNextFreeListIndex(), listHandle3);
  287. auto listHandle6 = testList.allocList(1, valueList);
  288. EXPECT_EQ(testList.getNextFreeListIndex(), 0);
  289. EXPECT_EQ(testList.getBinLists().size(), 4);
  290. // Should handle invalid handles
  291. testList.freeList(10);
  292. EXPECT_EQ(testList.getBinLists().size(), 4);
  293. // Compaction will occur if we free more than CompactionThreshold items in total
  294. U32* bigList = new U32[SceneContainerBinRefList<U32>::CompactionThreshold];
  295. memset(bigList, 0, SceneContainerBinRefList<U32>::CompactionThreshold * sizeof(U32));
  296. auto listHandle8 = testList.allocList(SceneContainerBinRefList<U32>::CompactionThreshold, bigList);
  297. auto listHandle9 = testList.allocList(SceneContainerBinRefList<U32>::CompactionThreshold, bigList);
  298. EXPECT_EQ(testList.getBinLists().size(), 6);
  299. //
  300. EXPECT_EQ(testList.getBinLists()[4].numValues, SceneContainerBinRefList<U32>::CompactionThreshold);
  301. EXPECT_EQ(testList.getBinLists()[4].startValue, 16);
  302. //
  303. EXPECT_EQ(testList.getBinLists()[5].numValues, SceneContainerBinRefList<U32>::CompactionThreshold);
  304. EXPECT_EQ(testList.getBinLists()[5].startValue, 16 + (SceneContainerBinRefList<U32>::CompactionThreshold));
  305. //
  306. testList.freeList(listHandle8);
  307. EXPECT_EQ(testList.getBinLists().size(), 6);
  308. // NOTE: everying unused should get reset to 0
  309. //
  310. EXPECT_EQ(testList.getBinLists()[0].numValues, 2);
  311. EXPECT_EQ(testList.getBinLists()[0].startValue, 0);
  312. //
  313. EXPECT_EQ(testList.getBinLists()[1].numValues, 1); // listHandle5
  314. EXPECT_EQ(testList.getBinLists()[1].startValue, 2);
  315. //
  316. EXPECT_EQ(testList.getBinLists()[2].numValues, 1); // listHandle6
  317. EXPECT_EQ(testList.getBinLists()[2].startValue, 3);
  318. //
  319. EXPECT_EQ(testList.getBinLists()[3].numValues, 5);
  320. EXPECT_EQ(testList.getBinLists()[3].startValue, 4);
  321. //
  322. EXPECT_EQ(testList.getBinLists()[4].numValues, 0);
  323. EXPECT_EQ(testList.getBinLists()[4].startValue, 0);
  324. //
  325. EXPECT_EQ(testList.getBinLists()[5].numValues, SceneContainerBinRefList<U32>::CompactionThreshold);
  326. EXPECT_EQ(testList.getBinLists()[5].startValue, 9);
  327. }
  328. TEST_F(SceneContainerBinRefListTest, replaceListBin)
  329. {
  330. SceneContainerBinRefList<U32> testList;
  331. // Set base values
  332. U32 valueList[] = { 1, 2, 3, 1, 2 };
  333. U32 valueList2[] = { 256, 700, 1, 1000 };
  334. // Make some items
  335. auto listHandle2 = testList.allocList(5, valueList);
  336. auto listHandle3 = testList.allocList(4, valueList2);
  337. // Replace items in the list
  338. testList.replaceListBin(listHandle2, 1, 100);
  339. testList.replaceListBin(listHandle2, 2, 1010);
  340. testList.replaceListBin(listHandle2, 3, 101010);
  341. // First instances of the items should get replaced
  342. auto itr1 = testList.getValueIterator(listHandle2);
  343. auto itr2 = testList.getValueIterator(listHandle3);
  344. EXPECT_EQ(*itr1, 100); itr1++;
  345. EXPECT_EQ(*itr1, 1010); itr1++;
  346. EXPECT_EQ(*itr1, 101010); itr1++;
  347. EXPECT_EQ(*itr1, 1); itr1++;
  348. EXPECT_EQ(*itr1, 2); itr1++;
  349. //
  350. EXPECT_EQ(*itr2, 256); itr2++;
  351. EXPECT_EQ(*itr2, 700); itr2++;
  352. EXPECT_EQ(*itr2, 1); itr2++;
  353. EXPECT_EQ(*itr2, 1000); itr2++;
  354. }
  355. TEST_F(SceneContainerBinRefListTest, containsBinItem)
  356. {
  357. SceneContainerBinRefList<U32> testList;
  358. // Set base values
  359. U32 valueList[] = { 1,2,3 };
  360. U32 valueList2[] = { 256, 700, 900, 1000 };
  361. // Make some items
  362. auto listHandle2 = testList.allocList(3, valueList);
  363. auto listHandle3 = testList.allocList(4, valueList2);
  364. // Checks should pass
  365. EXPECT_EQ(testList.containsBinItem(listHandle2, 1), true);
  366. EXPECT_EQ(testList.containsBinItem(listHandle2, 2), true);
  367. EXPECT_EQ(testList.containsBinItem(listHandle2, 3), true);
  368. EXPECT_EQ(testList.containsBinItem(listHandle2, 256), false);
  369. EXPECT_EQ(testList.containsBinItem(listHandle2, 700), false);
  370. EXPECT_EQ(testList.containsBinItem(listHandle2, 900), false);
  371. EXPECT_EQ(testList.containsBinItem(listHandle2, 1000), false);
  372. //
  373. EXPECT_EQ(testList.containsBinItem(listHandle3, 1), false);
  374. EXPECT_EQ(testList.containsBinItem(listHandle3, 2), false);
  375. EXPECT_EQ(testList.containsBinItem(listHandle3, 3), false);
  376. EXPECT_EQ(testList.containsBinItem(listHandle3, 256), true);
  377. EXPECT_EQ(testList.containsBinItem(listHandle3, 700), true);
  378. EXPECT_EQ(testList.containsBinItem(listHandle3, 900), true);
  379. EXPECT_EQ(testList.containsBinItem(listHandle3, 1000), true);
  380. // Invalid handles should return false
  381. EXPECT_EQ(testList.containsBinItem(62, 1000), false);
  382. }
  383. TEST_F(SceneContainerBinRefListTest, compact)
  384. {
  385. SceneContainerBinRefList<U32> testList;
  386. srand(7131830);
  387. // Set base values
  388. U32 valueList[10];
  389. U32 valueList2[10];
  390. for (U32 i = 0; i < 10; i++)
  391. {
  392. valueList[i] = rand() % 1024;
  393. valueList2[i] = rand() % 1024;
  394. }
  395. // Unallocated list should do nothing
  396. testList.compact();
  397. EXPECT_EQ(testList.getBin(), (U32*)NULL);
  398. // Check allocations
  399. auto listHandle2 = testList.allocList(3, valueList2);
  400. auto listHandle3 = testList.allocList(4, valueList2);
  401. EXPECT_EQ(testList.getBinLists().size(), 2);
  402. //
  403. EXPECT_EQ(testList.getBinLists()[0].numValues, 3);
  404. EXPECT_EQ(testList.getBinLists()[0].startValue, 0);
  405. //
  406. EXPECT_EQ(testList.getBinLists()[1].numValues, 4);
  407. EXPECT_EQ(testList.getBinLists()[1].startValue, 3);
  408. testList.compact();
  409. EXPECT_EQ(testList.getBinLists().size(), 2);
  410. //
  411. EXPECT_EQ(testList.getBinLists()[0].numValues, 3);
  412. EXPECT_EQ(testList.getBinLists()[0].startValue, 0);
  413. //
  414. EXPECT_EQ(testList.getBinLists()[1].numValues, 4);
  415. EXPECT_EQ(testList.getBinLists()[1].startValue, 3);
  416. // Make lots of tiny allocations
  417. U32 totalAllocItems = 0;
  418. for (U32 i = 0; i < SceneContainerBinRefList<U32>::CompactionThreshold / 2; i++)
  419. {
  420. auto listHandle = testList.allocList(1, valueList2);
  421. testList.freeList(listHandle);
  422. totalAllocItems++;
  423. }
  424. //
  425. auto endListHandle = testList.allocList(4, valueList2);
  426. EXPECT_EQ(testList.getBinLists().size(), 3);
  427. //
  428. EXPECT_EQ(testList.getBinLists()[0].numValues, 3);
  429. EXPECT_EQ(testList.getBinLists()[0].startValue, 0);
  430. //
  431. EXPECT_EQ(testList.getBinLists()[1].numValues, 4);
  432. EXPECT_EQ(testList.getBinLists()[1].startValue, 3);
  433. //
  434. EXPECT_EQ(testList.getBinLists()[2].numValues, 4);
  435. EXPECT_EQ(testList.getBinLists()[2].startValue, 7 + totalAllocItems);
  436. // Compact should compact everything
  437. testList.compact();
  438. EXPECT_EQ(testList.getBinLists().size(), 3);
  439. //
  440. EXPECT_EQ(testList.getBinLists()[0].numValues, 3);
  441. EXPECT_EQ(testList.getBinLists()[0].startValue, 0);
  442. //
  443. EXPECT_EQ(testList.getBinLists()[1].numValues, 4);
  444. EXPECT_EQ(testList.getBinLists()[1].startValue, 3);
  445. //
  446. EXPECT_EQ(testList.getBinLists()[2].numValues, 4);
  447. EXPECT_EQ(testList.getBinLists()[2].startValue, 7);
  448. }
  449. TEST_F(SceneContainerBinRefListTest, clear)
  450. {
  451. SceneContainerBinRefList<U32> testList;
  452. srand(1131830);
  453. // Set base values
  454. U32 valueList[10];
  455. U32 valueList2[10];
  456. for (U32 i = 0; i < 10; i++)
  457. {
  458. valueList[i] = rand() % 1024;
  459. valueList2[i] = rand() % 1024;
  460. }
  461. testList.allocList(3, valueList);
  462. testList.allocList(4, valueList2);
  463. EXPECT_EQ(testList.getBinLists().size(), 2);
  464. testList.clear();
  465. EXPECT_EQ(testList.getBinLists().size(), 0);
  466. }
  467. class SceneContainerTest : public ::testing::Test
  468. {
  469. protected:
  470. SceneContainerTest()
  471. {
  472. }
  473. void SetUp() override
  474. {
  475. }
  476. };
  477. TEST_F(SceneContainerTest, findObjects)
  478. {
  479. }
  480. TEST_F(SceneContainerTest, polyhedronFindObjects)
  481. {
  482. }
  483. TEST_F(SceneContainerTest, findObjectList)
  484. {
  485. }
  486. TEST_F(SceneContainerTest, castRay)
  487. {
  488. }
  489. TEST_F(SceneContainerTest, castRayRendered)
  490. {
  491. }
  492. TEST_F(SceneContainerTest, collideBox)
  493. {
  494. }
  495. TEST_F(SceneContainerTest, buildPolyList)
  496. {
  497. }
  498. TEST_F(SceneContainerTest, addObject)
  499. {
  500. }
  501. TEST_F(SceneContainerTest, removeObject)
  502. {
  503. }
  504. TEST_F(SceneContainerTest, insertIntoBins)
  505. {
  506. }
  507. TEST_F(SceneContainerTest, removeFromBins)
  508. {
  509. }
  510. TEST_F(SceneContainerTest, checkBins)
  511. {
  512. }
  513. TEST_F(SceneContainerTest, initRadiusSearch)
  514. {
  515. }
  516. TEST_F(SceneContainerTest, initTypeSearch)
  517. {
  518. }
  519. TEST_F(SceneContainerTest, getBinRange)
  520. {
  521. }