From 6dd1e1660e8d97ae1c93ff463c58a780c14b08f4 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Mon, 29 Dec 2014 00:44:34 +0100 Subject: fixed StructType::cast signature, more unit tests --- test/core/model/TypesystemTest.cpp | 41 +++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'test/core/model') diff --git a/test/core/model/TypesystemTest.cpp b/test/core/model/TypesystemTest.cpp index fd6e38f..9cbc5bc 100644 --- a/test/core/model/TypesystemTest.cpp +++ b/test/core/model/TypesystemTest.cpp @@ -496,7 +496,7 @@ TEST(StructType, cast) Variant val = structWithParentType->create(); - Variant casted = structType->cast(val, logger); + ASSERT_TRUE(structType->cast(val, logger)); ASSERT_EQ(4U, val.asArray().size()); const auto &arr = val.asArray(); @@ -523,6 +523,45 @@ TEST(StructType, indexOf) ASSERT_EQ(-1, structType->indexOf("#0")); } +TEST(StructType, buildWithDefaults) +{ + Logger logger; + Manager mgr; + Rooted structType = createStructType(mgr, logger); + + { + Variant var{{{"b", 42}, {"a", 5}}}; + ASSERT_TRUE(structType->build(var, logger)); + + const auto &arr = var.asArray(); + ASSERT_EQ(4U, arr.size()); + ASSERT_EQ("attr1default", arr[0].asString()); + ASSERT_EQ("42", arr[1].asString()); + ASSERT_EQ(3, arr[2].asInt()); + ASSERT_EQ(5, arr[3].asInt()); + } +} + +TEST(StructType, buildWithIndicesAndDefaults) +{ + Logger logger; + Manager mgr; + Rooted structType = createStructType(mgr, logger); + + { + Variant var{{{"b", 42}, {"#3", 5}, {"#0", "foo"}}}; + ASSERT_TRUE(structType->build(var, logger)); + + const auto &arr = var.asArray(); + ASSERT_EQ(4U, arr.size()); + ASSERT_EQ("foo", arr[0].asString()); + ASSERT_EQ("42", arr[1].asString()); + ASSERT_EQ(3, arr[2].asInt()); + ASSERT_EQ(5, arr[3].asInt()); + } +} + + /* Class ArrayType */ TEST(ArrayType, rtti) -- cgit v1.2.3