diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/core/RegistryTest.cpp | 67 | ||||
| -rw-r--r-- | test/core/common/UtilsTest.cpp | 19 | ||||
| -rw-r--r-- | test/core/parser/ParserStackTest.cpp | 3 | ||||
| -rw-r--r-- | test/core/parser/StandaloneParserContext.hpp | 7 | ||||
| -rw-r--r-- | test/plugins/css/CSSParserTest.cpp | 4 | ||||
| -rw-r--r-- | test/plugins/filesystem/FileLocatorTest.cpp | 20 | ||||
| -rw-r--r-- | test/plugins/xml/XmlParserTest.cpp | 5 | 
7 files changed, 110 insertions, 15 deletions
diff --git a/test/core/RegistryTest.cpp b/test/core/RegistryTest.cpp index 45e09d3..21195f2 100644 --- a/test/core/RegistryTest.cpp +++ b/test/core/RegistryTest.cpp @@ -20,18 +20,83 @@  #include <sstream> +#include <core/common/Exceptions.hpp> +#include <core/parser/Parser.hpp> +#include <core/parser/ParserContext.hpp>  #include <core/resource/ResourceLocator.hpp>  #include <core/Registry.hpp>  namespace ousia { +namespace { +class TestParser : public Parser { +protected: +	Rooted<Node> doParse(CharReader &reader, ParserContext &ctx) override +	{ +		return new Node{ctx.manager}; +	} +}; +} + +static const Rtti rtti1{"rtti1"}; +static const Rtti rtti2{"rtti2"}; + +TEST(Registry, parsers) +{ +	Registry registry; + +	TestParser parser1; +	TestParser parser2; + +	registry.registerParser({"text/vnd.ousia.oxm", "text/vnd.ousia.oxd"}, +	                        {&rtti1, &rtti2}, &parser1); +	registry.registerParser({"text/vnd.ousia.opd"}, {&rtti2}, &parser2); + +	ASSERT_THROW( +	    registry.registerParser({"text/vnd.ousia.opd"}, {&rtti2}, &parser1), +	    OusiaException); + +	{ +		auto res = registry.getParserForMimetype("text/vnd.ousia.oxm"); +		ASSERT_EQ(&parser1, res.first); +		ASSERT_EQ(RttiSet({&rtti1, &rtti2}), res.second); +	} + +	{ +		auto res = registry.getParserForMimetype("text/vnd.ousia.opd"); +		ASSERT_EQ(&parser2, res.first); +		ASSERT_EQ(RttiSet({&rtti2}), res.second); +	} + +	{ +		auto res = registry.getParserForMimetype("application/javascript"); +		ASSERT_EQ(nullptr, res.first); +		ASSERT_EQ(RttiSet({}), res.second); +	} +} + +TEST(Registry, extensions) +{ +	Registry registry; + +	registry.registerExtension("oxm", "text/vnd.ousia.oxm"); +	registry.registerExtension("oxd", "text/vnd.ousia.oxd"); +	ASSERT_EQ("text/vnd.ousia.oxm", registry.getMimetypeForExtension("oxm")); +	ASSERT_EQ("text/vnd.ousia.oxm", registry.getMimetypeForExtension("OXM")); +	ASSERT_EQ("text/vnd.ousia.oxd", registry.getMimetypeForExtension("OxD")); +	ASSERT_EQ("", registry.getMimetypeForExtension("pdf")); + +	ASSERT_THROW(registry.registerExtension("oxm", "text/vnd.ousia.oxm"), +	             OusiaException); +} +  TEST(Registry, locateResource)  {  	StaticResourceLocator locator;  	locator.store("path", "test");  	Registry registry; -	registry.registerResourceLocator(locator); +	registry.registerResourceLocator(&locator);  	Resource res;  	ASSERT_TRUE( diff --git a/test/core/common/UtilsTest.cpp b/test/core/common/UtilsTest.cpp index 53beb79..c8f6922 100644 --- a/test/core/common/UtilsTest.cpp +++ b/test/core/common/UtilsTest.cpp @@ -54,5 +54,24 @@ TEST(Utils, split)  	ASSERT_EQ(std::vector<std::string>({"", "a", "be", "c", ""}),  	          Utils::split(".a.be.c.", '.'));  } + +TEST(Utils, toLower) +{ +	ASSERT_EQ("", Utils::toLower("")); +	ASSERT_EQ("foo00", Utils::toLower("foo00")); +	ASSERT_EQ("foo00", Utils::toLower("fOO00")); +} + +TEST(Utils, extractFileExtension) +{ +	ASSERT_EQ("", Utils::extractFileExtension("")); +	ASSERT_EQ("", Utils::extractFileExtension("test")); +	ASSERT_EQ("ext", Utils::extractFileExtension("test.ext")); +	ASSERT_EQ("", Utils::extractFileExtension("foo.bar/test")); +	ASSERT_EQ("", Utils::extractFileExtension("foo.bar\\test")); +	ASSERT_EQ("ext", Utils::extractFileExtension("foo.bar/test.ext")); +	ASSERT_EQ("ext", Utils::extractFileExtension("foo.bar/test.EXT")); +} +  } diff --git a/test/core/parser/ParserStackTest.cpp b/test/core/parser/ParserStackTest.cpp index 69978b0..81160da 100644 --- a/test/core/parser/ParserStackTest.cpp +++ b/test/core/parser/ParserStackTest.cpp @@ -24,7 +24,6 @@  #include <core/parser/StandaloneParserContext.hpp>  namespace ousia { -namespace parser {  static const State STATE_DOCUMENT = 0;  static const State STATE_BODY = 1; @@ -168,7 +167,5 @@ TEST(ParserStack, validation)  	ASSERT_FALSE(logger.hasError());  	s.end();  } - -}  } diff --git a/test/core/parser/StandaloneParserContext.hpp b/test/core/parser/StandaloneParserContext.hpp index 347d34f..51cd1e6 100644 --- a/test/core/parser/StandaloneParserContext.hpp +++ b/test/core/parser/StandaloneParserContext.hpp @@ -23,16 +23,18 @@  #include <core/model/Project.hpp>  #include <core/parser/Parser.hpp> +#include <core/parser/ParserScope.hpp> +#include <core/parser/ParserContext.hpp> +#include <core/Registry.hpp>  namespace ousia { -namespace parser {  struct StandaloneParserContext {  public:  	Manager manager;  	Logger logger; -	Scope scope;  	Registry registry; +	ParserScope scope;  	Rooted<model::Project> project;  	ParserContext context; @@ -47,7 +49,6 @@ public:  	      context(scope, registry, externalLogger, manager, project){};  };  } -}  #endif /* _OUSIA_STANDALONE_PARSER_CONTEXT_ */ diff --git a/test/plugins/css/CSSParserTest.cpp b/test/plugins/css/CSSParserTest.cpp index 84522b3..774c345 100644 --- a/test/plugins/css/CSSParserTest.cpp +++ b/test/plugins/css/CSSParserTest.cpp @@ -26,8 +26,6 @@  #include <core/parser/StandaloneParserContext.hpp>  namespace ousia { -namespace parser { -namespace css {  TEST(CSSParser, testParseSelectors)  {  	// create a string describing a SelectorTree @@ -296,5 +294,3 @@ TEST(CSSParser, testParseExceptions)  	assertException("A > ");  }  } -} -} diff --git a/test/plugins/filesystem/FileLocatorTest.cpp b/test/plugins/filesystem/FileLocatorTest.cpp index 17d43dd..beb091d 100644 --- a/test/plugins/filesystem/FileLocatorTest.cpp +++ b/test/plugins/filesystem/FileLocatorTest.cpp @@ -142,6 +142,26 @@ TEST(FileLocator, testLocate)  	assert_not_located(locator, "c.txt", "", ResourceType::SCRIPT);  } +TEST(FileLocator, testLocateRelative) +{ +	FileLocator locator; +	locator.addUnittestSearchPath("filesystem"); + +	// Add the respective search path +	locator.addUnittestSearchPath("filesystem/b"); + +	Resource resA, resC; +	ASSERT_TRUE(locator.locate(resA, "a.txt")); +	ASSERT_TRUE(locator.locate(resC, "c.txt")); + +	Resource resD; +	ASSERT_TRUE(locator.locate(resD, "d.txt")); +	ASSERT_TRUE(locator.locate(resD, "d.txt", ResourceType::UNKNOWN, resA)); +	ASSERT_TRUE(locator.locate(resD, "d.txt", ResourceType::UNKNOWN, resC)); +	ASSERT_FALSE(locator.locate(resD, "./d.txt", ResourceType::UNKNOWN, resA)); +	ASSERT_TRUE(locator.locate(resD, "./d.txt", ResourceType::UNKNOWN, resC)); +} +  TEST(FileLocator, testStream)  {  	FileLocator locator; diff --git a/test/plugins/xml/XmlParserTest.cpp b/test/plugins/xml/XmlParserTest.cpp index f1956e0..7785ae2 100644 --- a/test/plugins/xml/XmlParserTest.cpp +++ b/test/plugins/xml/XmlParserTest.cpp @@ -20,14 +20,13 @@  #include <gtest/gtest.h> +#include <core/common/CharReader.hpp>  #include <core/common/Logger.hpp>  #include <core/parser/StandaloneParserContext.hpp>  #include <plugins/xml/XmlParser.hpp>  namespace ousia { -namespace parser { -namespace xml {  static TerminalLogger logger(std::cerr, true); @@ -94,6 +93,4 @@ TEST(XmlParser, namespaces)  	}  }  } -} -}  | 
