|
@@ -0,0 +1,115 @@
|
|
|
+#include "../Tests.h"
|
|
|
+#include "core/Components.h"
|
|
|
+
|
|
|
+static void testAddForEach() {
|
|
|
+ CoreComponents c = CORE_COMPONENTS(sizeof(int));
|
|
|
+ int* i1 = coreComponentsGetOrAdd(&c, 1);
|
|
|
+ if(CORE_TEST_NOT_NULL(i1)) {
|
|
|
+ *i1 = 10;
|
|
|
+ }
|
|
|
+ int* i2 = coreComponentsGetOrAdd(&c, 1);
|
|
|
+ if(CORE_TEST_NOT_NULL(i2)) {
|
|
|
+ *i2 = 15;
|
|
|
+ }
|
|
|
+ int* i3 = coreComponentsGetOrAdd(&c, 5);
|
|
|
+ if(CORE_TEST_NOT_NULL(i3)) {
|
|
|
+ *i3 = 20;
|
|
|
+ }
|
|
|
+ int* i4 = coreComponentsGetOrAdd(&c, 10);
|
|
|
+ if(CORE_TEST_NOT_NULL(i4)) {
|
|
|
+ *i4 = 30;
|
|
|
+ }
|
|
|
+ CORE_TEST_TRUE(i1 == i2);
|
|
|
+
|
|
|
+ CoreComponentIterator iter = CORE_COMPONENTS_ITERATOR(&c);
|
|
|
+ if(CORE_TEST_TRUE(coreComponentsHasNext(iter))) {
|
|
|
+ CoreComponentNode* n = coreComponentsNext(&iter);
|
|
|
+ CORE_TEST_SIZE(1, n->entity);
|
|
|
+ CORE_TEST_INT(15, *(int*)n->component);
|
|
|
+ }
|
|
|
+ if(CORE_TEST_TRUE(coreComponentsHasNext(iter))) {
|
|
|
+ CoreComponentNode* n = coreComponentsNext(&iter);
|
|
|
+ CORE_TEST_SIZE(5, n->entity);
|
|
|
+ CORE_TEST_INT(20, *(int*)n->component);
|
|
|
+ }
|
|
|
+ if(CORE_TEST_TRUE(coreComponentsHasNext(iter))) {
|
|
|
+ CoreComponentNode* n = coreComponentsNext(&iter);
|
|
|
+ CORE_TEST_SIZE(10, n->entity);
|
|
|
+ CORE_TEST_INT(30, *(int*)n->component);
|
|
|
+ }
|
|
|
+ CORE_TEST_FALSE(coreComponentsHasNext(iter));
|
|
|
+ coreDestroyComponents(&c);
|
|
|
+}
|
|
|
+
|
|
|
+static void testAddComponentForEach() {
|
|
|
+ CoreComponents c = CORE_COMPONENTS(sizeof(int));
|
|
|
+ int* i1 = coreComponentsGetOrAdd(&c, 1);
|
|
|
+ if(CORE_TEST_NOT_NULL(i1)) {
|
|
|
+ *i1 = 10;
|
|
|
+ }
|
|
|
+ int* i2 = coreComponentsGetOrAdd(&c, 5);
|
|
|
+ if(CORE_TEST_NOT_NULL(i2)) {
|
|
|
+ *i2 = 20;
|
|
|
+ }
|
|
|
+ int* i3 = coreComponentsGetOrAdd(&c, 10);
|
|
|
+ if(CORE_TEST_NOT_NULL(i3)) {
|
|
|
+ *i3 = 30;
|
|
|
+ }
|
|
|
+
|
|
|
+ int* iter = coreComponentsBegin(&c);
|
|
|
+ int* end = coreComponentsEnd(&c);
|
|
|
+ if(CORE_TEST_TRUE(iter != end)) {
|
|
|
+ CORE_TEST_INT(10, *(iter++));
|
|
|
+ }
|
|
|
+ if(CORE_TEST_TRUE(iter != end)) {
|
|
|
+ CORE_TEST_INT(20, *(iter++));
|
|
|
+ }
|
|
|
+ if(CORE_TEST_TRUE(iter != end)) {
|
|
|
+ CORE_TEST_INT(30, *(iter++));
|
|
|
+ }
|
|
|
+ CORE_TEST_TRUE(iter == end);
|
|
|
+ coreDestroyComponents(&c);
|
|
|
+}
|
|
|
+
|
|
|
+static void testRemove() {
|
|
|
+ CoreComponents c = CORE_COMPONENTS(sizeof(int));
|
|
|
+ *(int*)coreComponentsGetOrAdd(&c, 1) = 10;
|
|
|
+ *(int*)coreComponentsGetOrAdd(&c, 5) = 20;
|
|
|
+ *(int*)coreComponentsGetOrAdd(&c, 10) = 30;
|
|
|
+
|
|
|
+ CORE_TEST_FALSE(coreComponentsRemove(&c, 20));
|
|
|
+ CORE_TEST_TRUE(coreComponentsRemove(&c, 5));
|
|
|
+ CORE_TEST_FALSE(coreComponentsRemove(&c, 30));
|
|
|
+
|
|
|
+ *(int*)coreComponentsGetOrAdd(&c, 20) = 40;
|
|
|
+ CORE_TEST_TRUE(coreComponentsRemove(&c, 20));
|
|
|
+
|
|
|
+ int* i1 = coreComponentsSearch(&c, 1);
|
|
|
+ int* i3 = coreComponentsSearch(&c, 10);
|
|
|
+ CORE_TEST_NULL(coreComponentsSearch(&c, 5));
|
|
|
+ if(CORE_TEST_NOT_NULL(i1) && CORE_TEST_NOT_NULL(i3)) {
|
|
|
+ CORE_TEST_INT(10, *i1);
|
|
|
+ CORE_TEST_INT(30, *i3);
|
|
|
+ }
|
|
|
+
|
|
|
+ CORE_TEST_TRUE(coreComponentsRemove(&c, 10));
|
|
|
+ i1 = coreComponentsSearch(&c, 1);
|
|
|
+ CORE_TEST_NULL(coreComponentsSearch(&c, 5));
|
|
|
+ CORE_TEST_NULL(coreComponentsSearch(&c, 10));
|
|
|
+ if(CORE_TEST_NOT_NULL(i1)) {
|
|
|
+ CORE_TEST_INT(10, *i1);
|
|
|
+ }
|
|
|
+
|
|
|
+ CORE_TEST_TRUE(coreComponentsRemove(&c, 1));
|
|
|
+ CORE_TEST_NULL(coreComponentsSearch(&c, 1));
|
|
|
+ CORE_TEST_NULL(coreComponentsSearch(&c, 5));
|
|
|
+ CORE_TEST_NULL(coreComponentsSearch(&c, 10));
|
|
|
+
|
|
|
+ coreDestroyComponents(&c);
|
|
|
+}
|
|
|
+
|
|
|
+void coreTestComponents() {
|
|
|
+ testAddForEach();
|
|
|
+ testAddComponentForEach();
|
|
|
+ testRemove();
|
|
|
+}
|