From ee5a821286c48388a900c12b7c03190bed9b1f25 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Sat, 20 Dec 2014 00:16:18 +0100 Subject: added TypesystemTest --- test/core/model/TypesystemTest.cpp | 104 +++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 test/core/model/TypesystemTest.cpp (limited to 'test') diff --git a/test/core/model/TypesystemTest.cpp b/test/core/model/TypesystemTest.cpp new file mode 100644 index 0000000..9939adf --- /dev/null +++ b/test/core/model/TypesystemTest.cpp @@ -0,0 +1,104 @@ +/* + Ousía + Copyright (C) 2014, 2015 Benjamin Paaßen, Andreas Stöckel + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include + +#include + +#include + +namespace ousia { +namespace model { + +TEST(Type, rtti) +{ + Manager mgr(1); + Rooted strType{new StringType(mgr, nullptr)}; + + ASSERT_TRUE(typeOf(*strType).isa(typeOf())); +} + +TEST(StringType, creation) +{ + Manager mgr(1); + Rooted strType{new StringType(mgr, nullptr)}; + + Variant val = strType->create(); + ASSERT_TRUE(val.isString()); + ASSERT_EQ("", val.asString()); +} + +TEST(StringType, conversion) +{ + Logger logger; + Manager mgr(1); + Rooted strType{new StringType(mgr, nullptr)}; + + { + Variant val{42}; + ASSERT_TRUE(strType->build(val, logger)); + ASSERT_TRUE(val.isString()); + ASSERT_EQ("42", val.asString()); + } + + { + Variant val{42.5}; + ASSERT_TRUE(strType->build(val, logger)); + ASSERT_TRUE(val.isString()); + ASSERT_EQ("42.5", val.asString()); + } + + { + Variant val{true}; + ASSERT_TRUE(strType->build(val, logger)); + ASSERT_TRUE(val.isString()); + ASSERT_EQ("true", val.asString()); + } + + { + Variant val{false}; + ASSERT_TRUE(strType->build(val, logger)); + ASSERT_TRUE(val.isString()); + ASSERT_EQ("false", val.asString()); + } + + { + Variant val{nullptr}; + ASSERT_TRUE(strType->build(val, logger)); + ASSERT_TRUE(val.isString()); + ASSERT_EQ("null", val.asString()); + } + + { + Variant val{"test"}; + ASSERT_TRUE(strType->build(val, logger)); + ASSERT_TRUE(val.isString()); + ASSERT_EQ("test", val.asString()); + } + + { + Variant val{{1, 2, true, false}}; + ASSERT_FALSE(strType->build(val, logger)); + ASSERT_TRUE(val.isString()); + ASSERT_EQ("", val.asString()); + } + +} + +} +} -- cgit v1.2.3