fix tests compilation

This commit is contained in:
2019-05-14 18:29:48 +07:00
parent f76461666e
commit b1ba916b17
2 changed files with 118 additions and 112 deletions

View File

@@ -53,7 +53,9 @@ namespace
private:
bool create_scene() {
auto scene_prefab_res = the<library>().load_asset<prefab_asset>("scene_prefab.json");
auto scene_go = scene_prefab_res ? the<world>().instantiate(scene_prefab_res) : nullptr;
auto scene_go = scene_prefab_res
? the<world>().instantiate(scene_prefab_res->content())
: nullptr;
return !!scene_go;
}

View File

@@ -25,7 +25,11 @@ namespace
class fake_node final : public node {
protected:
fake_node(world& world) : node(world) {
fake_node() : node() {
++s_ctor_count;
}
fake_node(const gobject_iptr& owner) : node(owner) {
++s_ctor_count;
}
@@ -40,12 +44,12 @@ namespace
static std::size_t s_ctor_count;
static std::size_t s_dtor_count;
public:
static intrusive_ptr<fake_node> create(world& world) {
return intrusive_ptr<fake_node>(new fake_node(world));
static intrusive_ptr<fake_node> create() {
return intrusive_ptr<fake_node>(new fake_node());
}
static intrusive_ptr<fake_node> create(world& world, const node_iptr& parent) {
auto child = create(world);
static intrusive_ptr<fake_node> create(const node_iptr& parent) {
auto child = create();
if ( parent ) {
parent->add_child(child);
}
@@ -61,7 +65,7 @@ TEST_CASE("node") {
safe_starter_initializer initializer;
world& w = the<world>();
SECTION("empty_node") {
auto n = node::create(w);
auto n = node::create();
REQUIRE(n);
REQUIRE(n->root() == n);
REQUIRE_FALSE(n->parent());
@@ -80,8 +84,8 @@ TEST_CASE("node") {
}
SECTION("parent/root") {
{
auto p = node::create(w);
auto n = node::create(w);
auto p = node::create();
auto n = node::create();
REQUIRE(p->add_child(n));
REQUIRE(n->parent() == p);
@@ -96,21 +100,21 @@ TEST_CASE("node") {
REQUIRE(p->child_count() == 1);
}
{
auto p = node::create(w);
auto p = node::create();
auto n1 = node::create(w, p);
auto n1 = node::create(p);
REQUIRE(n1->parent() == p);
REQUIRE(p->child_count() == 1);
auto n2 = node::create(w, nullptr);
auto n2 = node::create(node_iptr());
REQUIRE_FALSE(n2->parent());
REQUIRE(p->child_count() == 1);
}
{
auto p1 = node::create(w);
auto p2 = node::create(w);
auto p1 = node::create();
auto p2 = node::create();
auto n = node::create(w, p1);
auto n = node::create(p1);
REQUIRE(n->parent() == p1);
REQUIRE(p1->child_count() == 1);
REQUIRE(p2->child_count() == 0);
@@ -121,11 +125,11 @@ TEST_CASE("node") {
REQUIRE(p2->child_count() == 1);
}
{
auto p1 = node::create(w);
auto p2 = node::create(w, p1);
auto p1 = node::create();
auto p2 = node::create(p1);
auto n1 = node::create(w, p1);
auto n2 = node::create(w, p2);
auto n1 = node::create(p1);
auto n2 = node::create(p2);
REQUIRE(n1->parent() == p1);
REQUIRE(n2->parent() == p2);
@@ -133,7 +137,7 @@ TEST_CASE("node") {
REQUIRE(n1->root() == p1);
REQUIRE(n2->root() == p1);
auto n3 = node::create(w);
auto n3 = node::create();
REQUIRE_FALSE(n3->parent());
REQUIRE(n3->root() == n3);
@@ -147,18 +151,18 @@ TEST_CASE("node") {
REQUIRE(cn1->root() == p1);
REQUIRE(cn2->root() == p1);
const_node_iptr cn3 = node::create(w);
const_node_iptr cn3 = node::create();
REQUIRE_FALSE(cn3->parent());
REQUIRE(cn3->root() == cn3);
}
}
}
SECTION("has_parent/has_parent_recursive") {
auto p = node::create(w);
auto p = node::create();
REQUIRE_FALSE(p->has_parent());
REQUIRE_FALSE(p->has_parent_recursive(nullptr));
auto n = node::create(w, p);
auto n = node::create(p);
REQUIRE_FALSE(p->has_parent());
REQUIRE_FALSE(p->has_parent_recursive(n));
@@ -167,7 +171,7 @@ TEST_CASE("node") {
REQUIRE(n->has_parent_recursive(p));
REQUIRE_FALSE(n->has_parent_recursive(nullptr));
auto pp = node::create(w);
auto pp = node::create();
REQUIRE_FALSE(n->has_parent_recursive(pp));
REQUIRE_FALSE(pp->has_parent_recursive(pp));
@@ -179,11 +183,11 @@ TEST_CASE("node") {
REQUIRE_FALSE(pp->has_parent_recursive(pp));
}
SECTION("has_children/has_child_recursive") {
auto p = node::create(w);
auto p = node::create();
REQUIRE_FALSE(p->has_children());
REQUIRE_FALSE(p->has_child_recursive(nullptr));
auto n = node::create(w, p);
auto n = node::create(p);
REQUIRE(p->has_children());
REQUIRE(p->has_child_recursive(n));
@@ -193,7 +197,7 @@ TEST_CASE("node") {
REQUIRE_FALSE(n->has_child_recursive(p));
REQUIRE_FALSE(n->has_child_recursive(nullptr));
auto pp = node::create(w);
auto pp = node::create();
REQUIRE_FALSE(n->has_child_recursive(pp));
REQUIRE_FALSE(pp->has_child_recursive(pp));
@@ -205,21 +209,21 @@ TEST_CASE("node") {
}
SECTION("auto_remove/remove_all_children") {
{
auto p = node::create(w);
auto n = node::create(w, p);
auto p = node::create();
auto n = node::create(p);
n->remove_from_parent();
REQUIRE(p->child_count() == 0);
}
{
auto p = node::create(w);
auto n = node::create(w, p);
auto p = node::create();
auto n = node::create(p);
p.reset();
REQUIRE_FALSE(n->parent());
}
{
auto p = node::create(w);
auto n1 = node::create(w, p);
auto n2 = node::create(w, p);
auto p = node::create();
auto n1 = node::create(p);
auto n2 = node::create(p);
REQUIRE(p->child_count() == 2);
REQUIRE(p->remove_all_children() == 2);
REQUIRE_FALSE(n1->parent());
@@ -229,11 +233,11 @@ TEST_CASE("node") {
}
}
SECTION("remove_from_parent") {
auto p = node::create(w);
auto n1 = node::create(w, p);
auto n2 = node::create(w, p);
auto p = node::create();
auto n1 = node::create(p);
auto n2 = node::create(p);
auto np = node::create(w);
auto np = node::create();
np->remove_from_parent();
REQUIRE(np->root() == np);
REQUIRE_FALSE(np->parent());
@@ -251,18 +255,18 @@ TEST_CASE("node") {
REQUIRE(p->child_count() == 0);
}
SECTION("child_count/child_count_recursive") {
auto p1 = node::create(w);
auto p1 = node::create();
REQUIRE(p1->child_count() == 0);
REQUIRE(p1->child_count_recursive() == 0);
auto p2 = node::create(w, p1);
auto p2 = node::create(p1);
REQUIRE(p1->child_count() == 1);
REQUIRE(p1->child_count_recursive() == 1);
REQUIRE(p2->child_count() == 0);
REQUIRE(p2->child_count_recursive() == 0);
auto n1 = node::create(w, p2);
auto n2 = node::create(w, p2);
auto n1 = node::create(p2);
auto n2 = node::create(p2);
REQUIRE(p1->child_count() == 1);
REQUIRE(p1->child_count_recursive() == 3);
REQUIRE(p2->child_count() == 2);
@@ -270,10 +274,10 @@ TEST_CASE("node") {
}
SECTION("send_backward/bring_to_back") {
{
auto p = node::create(w);
auto n1 = node::create(w, p);
auto n2 = node::create(w, p);
auto n3 = node::create(w, p);
auto p = node::create();
auto n1 = node::create(p);
auto n2 = node::create(p);
auto n3 = node::create(p);
REQUIRE(n3->send_backward()); // n1 n3 n2
REQUIRE(n1->next_sibling() == n3);
@@ -291,17 +295,17 @@ TEST_CASE("node") {
REQUIRE(n2->next_sibling() == n3);
}
{
auto n = node::create(w);
auto n = node::create();
REQUIRE_FALSE(n->send_backward());
REQUIRE_FALSE(n->bring_to_back());
}
}
SECTION("send_backward/bring_to_back/events") {
{
auto p = fake_node::create(w);
auto n1 = fake_node::create(w, p);
auto n2 = fake_node::create(w, p);
auto n3 = fake_node::create(w, p);
auto p = fake_node::create();
auto n1 = fake_node::create(p);
auto n2 = fake_node::create(p);
auto n3 = fake_node::create(p);
REQUIRE(n3->send_backward()); // n1 n3 n2
REQUIRE(n3->send_backward()); // n3 n1 n2
@@ -310,17 +314,17 @@ TEST_CASE("node") {
REQUIRE(n2->bring_to_back()); // n2 n3 n1
}
{
auto n = fake_node::create(w);
auto n = fake_node::create();
REQUIRE_FALSE(n->send_backward());
REQUIRE_FALSE(n->bring_to_back());
}
}
SECTION("send_forward/bring_to_front") {
{
auto p = node::create(w);
auto n1 = node::create(w, p);
auto n2 = node::create(w, p);
auto n3 = node::create(w, p);
auto p = node::create();
auto n1 = node::create(p);
auto n2 = node::create(p);
auto n3 = node::create(p);
REQUIRE(n1->send_forward()); // n2 n1 n3
REQUIRE(n2->next_sibling() == n1);
@@ -338,17 +342,17 @@ TEST_CASE("node") {
REQUIRE(n1->next_sibling() == n2);
}
{
auto n = node::create(w);
auto n = node::create();
REQUIRE_FALSE(n->send_forward());
REQUIRE_FALSE(n->bring_to_back());
}
}
SECTION("send_forward/bring_to_front/events") {
{
auto p = fake_node::create(w);
auto n1 = fake_node::create(w, p);
auto n2 = fake_node::create(w, p);
auto n3 = fake_node::create(w, p);
auto p = fake_node::create();
auto n1 = fake_node::create(p);
auto n2 = fake_node::create(p);
auto n3 = fake_node::create(p);
REQUIRE(n1->send_forward()); // n2 n1 n3
REQUIRE(n1->send_forward()); // n2 n3 n1
@@ -357,13 +361,13 @@ TEST_CASE("node") {
REQUIRE(n2->bring_to_front()); // n3 n1 n2
}
{
auto n = fake_node::create(w);
auto n = fake_node::create();
REQUIRE_FALSE(n->send_forward());
REQUIRE_FALSE(n->bring_to_back());
}
}
SECTION("last_child/first_child") {
auto p = node::create(w);
auto p = node::create();
REQUIRE_FALSE(p->last_child());
REQUIRE_FALSE(p->first_child());
@@ -374,9 +378,9 @@ TEST_CASE("node") {
REQUIRE_FALSE(cp->first_child());
}
auto n1 = node::create(w, p);
auto n2 = node::create(w, p);
auto n3 = node::create(w, p);
auto n1 = node::create(p);
auto n2 = node::create(p);
auto n3 = node::create(p);
REQUIRE(p->last_child() == n3);
REQUIRE(p->first_child() == n1);
@@ -389,11 +393,11 @@ TEST_CASE("node") {
}
}
SECTION("prev_sibling/next_sibling") {
auto p = node::create(w);
auto p = node::create();
auto n1 = node::create(w, p);
auto n2 = node::create(w, p);
auto n3 = node::create(w, p);
auto n1 = node::create(p);
auto n2 = node::create(p);
auto n3 = node::create(p);
REQUIRE_FALSE(n1->prev_sibling());
REQUIRE(n1->next_sibling() == n2);
@@ -404,7 +408,7 @@ TEST_CASE("node") {
REQUIRE(n3->prev_sibling() == n2);
REQUIRE_FALSE(n3->next_sibling());
auto n4 = node::create(w);
auto n4 = node::create();
REQUIRE_FALSE(n4->prev_sibling());
REQUIRE_FALSE(n4->next_sibling());
@@ -428,10 +432,10 @@ TEST_CASE("node") {
}
}
SECTION("add_child_to_back/add_child_to_front") {
auto p = node::create(w);
auto n1 = node::create(w);
auto n2 = node::create(w);
auto n3 = node::create(w);
auto p = node::create();
auto n1 = node::create();
auto n2 = node::create();
auto n3 = node::create();
{
p->remove_all_children();
REQUIRE(p->add_child_to_back(n1));
@@ -456,7 +460,7 @@ TEST_CASE("node") {
REQUIRE_FALSE(n1->prev_sibling());
// add to another parent
auto p2 = node::create(w);
auto p2 = node::create();
REQUIRE(p2->add_child_to_back(n1));
REQUIRE(n1->parent() == p2);
REQUIRE_FALSE(n1->prev_sibling());
@@ -491,7 +495,7 @@ TEST_CASE("node") {
REQUIRE_FALSE(n1->next_sibling());
// add to another parent
auto p2 = node::create(w);
auto p2 = node::create();
REQUIRE(p2->add_child_to_front(n1));
REQUIRE(n1->parent() == p2);
REQUIRE_FALSE(n1->prev_sibling());
@@ -504,10 +508,10 @@ TEST_CASE("node") {
}
}
SECTION("add_child_after/add_child_before") {
auto p = node::create(w);
auto n1 = node::create(w);
auto n2 = node::create(w);
auto n3 = node::create(w);
auto p = node::create();
auto n1 = node::create();
auto n2 = node::create();
auto n3 = node::create();
{
p->remove_all_children();
REQUIRE(p->add_child(n1)); // n1
@@ -533,8 +537,8 @@ TEST_CASE("node") {
REQUIRE(n2->next_sibling() == n1);
// to another parent
auto p2 = node::create(w);
auto n4 = node::create(w, p2); // n4
auto p2 = node::create();
auto n4 = node::create(p2); // n4
REQUIRE(n4->add_sibling_before(n2)); // n2 n4
REQUIRE(n2->parent() == p2);
@@ -571,8 +575,8 @@ TEST_CASE("node") {
REQUIRE(n2->next_sibling() == n3);
// to another parent
auto p2 = node::create(w);
auto n4 = node::create(w, p2); // n4
auto p2 = node::create();
auto n4 = node::create(p2); // n4
REQUIRE(n4->add_sibling_after(n2)); // n4 n2
REQUIRE(n2->parent() == p2);
@@ -586,11 +590,11 @@ TEST_CASE("node") {
}
}
SECTION("for_each_child") {
auto p = node::create(w);
auto p = node::create();
array<node_iptr, 3> ns{
node::create(w, p),
node::create(w, p),
node::create(w, p)};
node::create(p),
node::create(p),
node::create(p)};
{
std::size_t count = 0;
p->for_each_child([&ns, &count](const node_iptr& n){
@@ -608,10 +612,10 @@ TEST_CASE("node") {
}
}
SECTION("extract_all_nodes") {
auto p = node::create(w);
auto c1 = node::create(w, p);
auto c2 = node::create(w, c1);
auto c3 = node::create(w, p);
auto p = node::create();
auto c1 = node::create(p);
auto c2 = node::create(c1);
auto c3 = node::create(p);
const vector<node_iptr> ns{p, c1, c2, c3};
{
vector<node_iptr> ns2;
@@ -629,10 +633,10 @@ TEST_CASE("node") {
}
}
SECTION("destroy_node") {
auto p1 = node::create(w);
auto p2 = node::create(w, p1);
auto n1 = node::create(w, p2);
auto n2 = node::create(w, p2);
auto p1 = node::create();
auto p2 = node::create(p1);
auto n1 = node::create(p2);
auto n2 = node::create(p2);
p2->remove_from_parent();
p2.reset();
@@ -651,7 +655,7 @@ TEST_CASE("node") {
REQUIRE_FALSE(n2->next_sibling());
}
SECTION("transform") {
auto p = node::create(w);
auto p = node::create();
REQUIRE(p->transform() == t3f::identity());
REQUIRE(p->translation() == v3f::zero());
@@ -669,10 +673,10 @@ TEST_CASE("node") {
}
SECTION("local_matrix") {
{
auto p = node::create(w);
auto p = node::create();
p->transform(math::make_translation_trs3(v3f{10.f,0.f,0.f}));
auto n = node::create(w, p);
auto n = node::create(p);
n->transform(math::make_translation_trs3(v3f{20.f,0.f,0.f}));
REQUIRE(n->local_matrix() == math::make_translation_matrix4(20.f,0.f,0.f));
@@ -685,10 +689,10 @@ TEST_CASE("node") {
}
SECTION("world_matrix") {
{
auto p = node::create(w);
auto p = node::create();
p->translation({10.f,0.f,0.f});
auto n = node::create(w, p);
auto n = node::create(p);
n->translation({20.f,0.f,0.f});
auto v = v4f(5.f,0.f,0.f,1.f);
@@ -700,12 +704,12 @@ TEST_CASE("node") {
math::make_translation_matrix4(10.f,0.f,0.f));
}
{
auto n = node::create(w);
auto n = node::create();
n->translation({20.f,0.f,0.f});
REQUIRE(n->world_matrix() ==
math::make_translation_matrix4(20.f,0.f,0.f));
auto p = node::create(w);
auto p = node::create();
p->transform(math::make_translation_trs3(v3f{10.f,0.f,0.f}));
p->add_child(n);
@@ -713,13 +717,13 @@ TEST_CASE("node") {
math::make_translation_matrix4(30.f,0.f,0.f));
}
{
auto p1 = node::create(w);
auto p1 = node::create();
p1->translation({10.f,0.f,0.f});
auto p2 = node::create(w);
auto p2 = node::create();
p2->transform(math::make_translation_trs3(v3f{20.f,0.f,0.f}));
auto n = node::create(w, p2);
auto n = node::create(p2);
n->transform(math::make_translation_trs3(v3f{30.f,0.f,0.f}));
REQUIRE(n->world_matrix() ==
@@ -734,9 +738,9 @@ TEST_CASE("node") {
SECTION("lifetime") {
{
fake_node::reset_counters();
auto p = fake_node::create(w);
auto p = fake_node::create();
auto n = fake_node::create(w);
auto n = fake_node::create();
p->add_child(n);
REQUIRE(fake_node::s_ctor_count == 2);
REQUIRE(fake_node::s_dtor_count == 0);
@@ -752,10 +756,10 @@ TEST_CASE("node") {
}
{
fake_node::reset_counters();
auto p = fake_node::create(w);
auto p = fake_node::create();
{
auto n1 = fake_node::create(w, p);
auto n2 = fake_node::create(w, p);
auto n1 = fake_node::create(p);
auto n2 = fake_node::create(p);
}
REQUIRE(fake_node::s_ctor_count == 3);
REQUIRE(fake_node::s_dtor_count == 0);