diff options
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()  | 
