From bc5eb58c47855e1a20f2709fa52a0f9a08603d51 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Tue, 23 Dec 2014 23:39:27 +0100 Subject: some more work on the Typesystem front (documentation and unit tests, still not done) --- test/core/model/TestDomain.hpp | 3 +-- test/core/model/TypesystemTest.cpp | 51 +++++++++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/core/model/TestDomain.hpp b/test/core/model/TestDomain.hpp index d4421a4..55a5d9b 100644 --- a/test/core/model/TestDomain.hpp +++ b/test/core/model/TestDomain.hpp @@ -36,8 +36,7 @@ static Rooted constructTypeSystem(Manager &mgr) Rooted string{new StringType(mgr, sys)}; sys->addType(string); Rooted string_struct{new StructType( - mgr, "text", sys, {new StructType::AttributeDescriptor( - mgr, "content", "", false, string)})}; + mgr, "text", sys, {new Attribute(mgr, "content", string, "", false)})}; sys->addType(string_struct); return sys; diff --git a/test/core/model/TypesystemTest.cpp b/test/core/model/TypesystemTest.cpp index 0e2dc8a..3447b1c 100644 --- a/test/core/model/TypesystemTest.cpp +++ b/test/core/model/TypesystemTest.cpp @@ -144,7 +144,7 @@ TEST(IntType, conversion) } } -/* Class IntType */ +/* Class DoubleType */ TEST(DoubleType, rtti) { @@ -192,6 +192,55 @@ TEST(DoubleType, conversion) } } +/* Class BoolType */ + +TEST(BoolType, rtti) +{ + Manager mgr; + Rooted boolType{new BoolType(mgr, nullptr)}; + ASSERT_TRUE(boolType->isa(RttiTypes::BoolType)); + ASSERT_TRUE(boolType->isa(typeOf())); + ASSERT_TRUE(boolType->isa(typeOf())); +} + +TEST(BoolType, creation) +{ + Manager mgr; + Rooted boolType{new BoolType(mgr, nullptr)}; + Variant val = boolType->create(); + ASSERT_TRUE(val.isBool()); + ASSERT_FALSE(val.asBool()); +} + +TEST(BoolType, conversion) +{ + Logger logger; + Manager mgr; + Rooted boolType{new BoolType(mgr, nullptr)}; + + { + Variant val{true}; + ASSERT_TRUE(boolType->build(val, logger)); + ASSERT_TRUE(val.isBool()); + ASSERT_TRUE(val.asBool()); + } + + { + Variant val{false}; + ASSERT_TRUE(boolType->build(val, logger)); + ASSERT_TRUE(val.isBool()); + ASSERT_FALSE(val.asBool()); + } + + { + Variant val{314}; + ASSERT_FALSE(boolType->build(val, logger)); + ASSERT_TRUE(val.isBool()); + ASSERT_FALSE(val.asBool()); + } +} + + /* Class ArrayType */ TEST(ArrayType, rtti) -- cgit v1.2.3