summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/core/RegistryTest.cpp67
-rw-r--r--test/core/common/UtilsTest.cpp19
-rw-r--r--test/core/parser/ParserStackTest.cpp3
-rw-r--r--test/core/parser/StandaloneParserContext.hpp7
-rw-r--r--test/plugins/css/CSSParserTest.cpp4
-rw-r--r--test/plugins/filesystem/FileLocatorTest.cpp20
-rw-r--r--test/plugins/xml/XmlParserTest.cpp5
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)
}
}
}
-}
-}