summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2014-12-22 18:12:39 +0100
committerAndreas Stöckel <andreas@somweyr.de>2014-12-22 18:12:39 +0100
commit9c8d6b461246bbee6e3d8ac411c7f10da481acf2 (patch)
treea872597e79b588e8607d638aabb9415898c883a6 /test
parent10a46acdb1fb3b363edd5b9bb507fff63da9c24b (diff)
moved all Node and Typesystem RTTI information to own namespace, added Constant class and documentation for Typesystem and ArrayType class and unit test for ArrayType
Diffstat (limited to 'test')
-rw-r--r--test/core/model/TypesystemTest.cpp67
1 files changed, 61 insertions, 6 deletions
diff --git a/test/core/model/TypesystemTest.cpp b/test/core/model/TypesystemTest.cpp
index 6695b8e..4c57431 100644
--- a/test/core/model/TypesystemTest.cpp
+++ b/test/core/model/TypesystemTest.cpp
@@ -26,17 +26,20 @@
namespace ousia {
namespace model {
-TEST(Type, rtti)
+/* Class StringType */
+
+TEST(StringType, rtti)
{
- Manager mgr(1);
+ Manager mgr;
Rooted<StringType> strType{new StringType(mgr, nullptr)};
-
- ASSERT_TRUE(typeOf(*strType).isa(typeOf<Type>()));
+ ASSERT_TRUE(strType->isa(typeOf<Type>()));
+ ASSERT_TRUE(strType->isa(typeOf<Node>()));
+ ASSERT_TRUE(strType->isa(RttiTypes::StringType));
}
TEST(StringType, creation)
{
- Manager mgr(1);
+ Manager mgr;
Rooted<StringType> strType{new StringType(mgr, nullptr)};
Variant val = strType->create();
@@ -47,7 +50,7 @@ TEST(StringType, creation)
TEST(StringType, conversion)
{
Logger logger;
- Manager mgr(1);
+ Manager mgr;
Rooted<StringType> strType{new StringType(mgr, nullptr)};
{
@@ -98,7 +101,59 @@ TEST(StringType, conversion)
ASSERT_TRUE(val.isString());
ASSERT_EQ("", val.asString());
}
+}
+
+/* Class ArrayType */
+
+TEST(ArrayType, rtti)
+{
+ Manager mgr;
+ Rooted<StringType> stringType{new StringType(mgr, nullptr)};
+ Rooted<ArrayType> arrayType{new ArrayType(mgr, stringType)};
+ ASSERT_TRUE(arrayType->isa(RttiTypes::ArrayType));
+ ASSERT_TRUE(arrayType->isa(typeOf<Type>()));
+ ASSERT_TRUE(arrayType->isa(typeOf<Node>()));
+}
+TEST(ArrayType, creation)
+{
+ Manager mgr;
+ Rooted<StringType> stringType{new StringType(mgr, nullptr)};
+ Rooted<ArrayType> arrayType{new ArrayType(mgr, stringType)};
+
+ Variant val = arrayType->create();
+ ASSERT_TRUE(val.isArray());
+}
+
+TEST(ArrayType, conversion)
+{
+ Logger logger;
+ Manager mgr;
+ Rooted<StringType> stringType{new StringType(mgr, nullptr)};
+ Rooted<ArrayType> arrayType{new ArrayType(mgr, stringType)};
+
+ {
+ Variant val{{1, "test", false, 42.5}};
+ ASSERT_TRUE(arrayType->build(val, logger));
+ ASSERT_TRUE(val.isArray());
+
+ auto arr = val.asArray();
+ ASSERT_EQ(4U, arr.size());
+ for (size_t i = 0; i < arr.size(); i++) {
+ ASSERT_TRUE(arr[i].isString());
+ }
+ ASSERT_EQ("1", arr[0].asString());
+ ASSERT_EQ("test", arr[1].asString());
+ ASSERT_EQ("false", arr[2].asString());
+ ASSERT_EQ("42.5", arr[3].asString());
+ }
+
+ {
+ Variant val{1};
+ ASSERT_FALSE(arrayType->build(val, logger));
+ ASSERT_TRUE(val.isArray());
+ ASSERT_EQ(0U, val.asArray().size());
+ }
}
}