summaryrefslogtreecommitdiff
path: root/test/core
diff options
context:
space:
mode:
Diffstat (limited to 'test/core')
-rw-r--r--test/core/common/VariantReaderTest.cpp36
-rw-r--r--test/core/model/NodeTest.cpp2
-rw-r--r--test/core/model/TypesystemTest.cpp45
-rw-r--r--test/core/parser/StandaloneParserContext.hpp2
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()