diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-18 15:30:18 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-18 15:30:18 +0100 |
commit | 8ab0709045667f8e1a67a9981c619980c9aebd1a (patch) | |
tree | f39812b3d216566de7c4dcdaacc7c607aa7e646c /test/core | |
parent | cd55519130c5f91d95107b3b1e1a8203caa5008a (diff) | |
parent | 372c67e0844654362fc7d440b0b4a31500a6d02a (diff) |
Merge branch 'master' of somweyr.de:ousia
Diffstat (limited to 'test/core')
-rw-r--r-- | test/core/common/VariantReaderTest.cpp | 36 | ||||
-rw-r--r-- | test/core/model/NodeTest.cpp | 2 | ||||
-rw-r--r-- | test/core/model/TypesystemTest.cpp | 45 | ||||
-rw-r--r-- | test/core/parser/StandaloneParserContext.hpp | 2 |
4 files changed, 83 insertions, 2 deletions
diff --git a/test/core/common/VariantReaderTest.cpp b/test/core/common/VariantReaderTest.cpp index 3ab38b9..9a9b694 100644 --- a/test/core/common/VariantReaderTest.cpp +++ b/test/core/common/VariantReaderTest.cpp @@ -762,6 +762,42 @@ TEST(VariantReader, parseGeneric) } } +TEST(VariantReader, parseGenericString) +{ + // Simple case, unescaped string + { + auto res = VariantReader::parseGenericString("foo", logger); + ASSERT_TRUE(res.first); + ASSERT_TRUE(res.second.isMagic()); + ASSERT_EQ("foo", res.second.asMagic()); + } + + // Simple case, unescaped string with space + { + auto res = VariantReader::parseGenericString("foo bar", logger); + ASSERT_TRUE(res.first); + ASSERT_FALSE(res.second.isMagic()); + ASSERT_TRUE(res.second.isString()); + ASSERT_EQ("foo bar", res.second.asString()); + } + + // Parse double + { + auto res = VariantReader::parseGenericString("12.3", logger); + ASSERT_TRUE(res.first); + ASSERT_TRUE(res.second.isDouble()); + ASSERT_EQ(12.3, res.second.asDouble()); + } + + // Parse string + { + auto res = VariantReader::parseGenericString("6 times 7 is 42", logger); + ASSERT_TRUE(res.first); + ASSERT_TRUE(res.second.isString()); + ASSERT_EQ("6 times 7 is 42", res.second.asString()); + } +} + TEST(VariantReader, parseGenericComplex) { CharReader reader("10 true [1, 2] [] [foo=bar,h]; []"); diff --git a/test/core/model/NodeTest.cpp b/test/core/model/NodeTest.cpp index 973ce22..8bbee05 100644 --- a/test/core/model/NodeTest.cpp +++ b/test/core/model/NodeTest.cpp @@ -26,7 +26,7 @@ namespace ousia { class TestNode : public Node { protected: - void continueResolve(ResolutionState &state) override + void doResolve(ResolutionState &state) override { continueResolveComposita(composita, composita.getIndex(), state); continueResolveReferences(references, state); diff --git a/test/core/model/TypesystemTest.cpp b/test/core/model/TypesystemTest.cpp index 5871092..5a2efdd 100644 --- a/test/core/model/TypesystemTest.cpp +++ b/test/core/model/TypesystemTest.cpp @@ -611,6 +611,51 @@ TEST(StructType, createValidated) } } +TEST(StructType, setParentStructure) +{ + Manager mgr; + Rooted<SystemTypesystem> sys{new SystemTypesystem(mgr)}; + Rooted<StructType> sa{new StructType(mgr, "a", sys)}; + Rooted<StructType> sb{new StructType(mgr, "b", sys)}; + Rooted<StructType> sc{new StructType(mgr, "c", sys)}; + + sa->addAttribute(new Attribute{mgr, "a", sys->getBoolType()}, logger); + sb->addAttribute(new Attribute{mgr, "b", sys->getStringType()}, logger); + sc->addAttribute(new Attribute{mgr, "a", sys->getIntType()}, logger); + sc->addAttribute(new Attribute{mgr, "b", sys->getIntType()}, logger); + + ASSERT_TRUE(sa->validate(logger)); + ASSERT_TRUE(sb->validate(logger)); + ASSERT_TRUE(sc->validate(logger)); + + logger.reset(); + sb->setParentStructure(sa, logger); + ASSERT_EQ(2U, sb->getAttributes().size()); + ASSERT_EQ("a", sb->getAttributes()[0]->getName()); + ASSERT_EQ("b", sb->getAttributes()[1]->getName()); + ASSERT_EQ(sys->getBoolType(), sb->getAttributes()[0]->getType()); + ASSERT_EQ(sys->getStringType(), sb->getAttributes()[1]->getType()); + ASSERT_FALSE(logger.hasError()); + + logger.reset(); + sc->setParentStructure(sb, logger); + ASSERT_EQ(4U, sc->getAttributes().size()); + ASSERT_EQ("a", sc->getAttributes()[0]->getName()); + ASSERT_EQ("b", sc->getAttributes()[1]->getName()); + ASSERT_EQ(sys->getBoolType(), sc->getAttributes()[0]->getType()); + ASSERT_EQ(sys->getStringType(), sc->getAttributes()[1]->getType()); + ASSERT_TRUE(logger.hasError()); + + logger.reset(); + sc->setParentStructure(nullptr, logger); + ASSERT_EQ(2U, sc->getAttributes().size()); + ASSERT_EQ("a", sc->getAttributes()[0]->getName()); + ASSERT_EQ("b", sc->getAttributes()[1]->getName()); + ASSERT_EQ(sys->getIntType(), sc->getAttributes()[0]->getType()); + ASSERT_EQ(sys->getIntType(), sc->getAttributes()[1]->getType()); + ASSERT_FALSE(logger.hasError()); +} + TEST(StructType, cast) { Manager mgr; diff --git a/test/core/parser/StandaloneParserContext.hpp b/test/core/parser/StandaloneParserContext.hpp index 64a245f..78d148d 100644 --- a/test/core/parser/StandaloneParserContext.hpp +++ b/test/core/parser/StandaloneParserContext.hpp @@ -26,10 +26,10 @@ namespace parser { struct StandaloneParserContext : public ParserContext { private: + Manager manager; Logger logger; Scope scope; Registry registry; - Manager manager; public: StandaloneParserContext() |