diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2014-12-12 11:30:46 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2014-12-12 11:30:46 +0100 |
commit | 3a86b9dbe2c98c32f08942b07354a0361e8bafdb (patch) | |
tree | 890c45e664534f8ce49a0f4cb9aeba68520f7543 | |
parent | 5fde58b21baa7d92194c7910a85ab542a61897a9 (diff) |
Slight changes to logging mechanism.
-rw-r--r-- | src/core/common/Logger.cpp | 14 | ||||
-rw-r--r-- | src/core/common/Logger.hpp | 12 | ||||
-rw-r--r-- | test/core/common/LoggerTest.cpp | 2 | ||||
-rw-r--r-- | test/plugins/css/CSSParserTest.cpp | 47 |
4 files changed, 61 insertions, 14 deletions
diff --git a/src/core/common/Logger.cpp b/src/core/common/Logger.cpp index ab62b03..1811b68 100644 --- a/src/core/common/Logger.cpp +++ b/src/core/common/Logger.cpp @@ -118,6 +118,16 @@ public: return ss.str(); } + std::string bright() const + { + if (!active) { + return std::string{}; + } + std::stringstream ss; + ss << "\x1b[1m"; + return ss.str(); + } + std::string reset() const { if (!active) { @@ -152,7 +162,7 @@ void TerminalLogger::processMessage(Message msg) std::string filename = currentFilename(); bool hasFile = !filename.empty(); if (hasFile) { - os << t.color(Terminal::WHITE, true) << filename << t.reset(); + os << t.bright() << filename << t.reset(); } // Print line and column number @@ -160,7 +170,7 @@ void TerminalLogger::processMessage(Message msg) if (hasFile) { os << ':'; } - os << t.color(Terminal::WHITE, true) << msg.pos.line << t.reset(); + os << t.bright() << msg.pos.line << t.reset(); if (msg.pos.hasColumn()) { os << ':' << msg.pos.column; } diff --git a/src/core/common/Logger.hpp b/src/core/common/Logger.hpp index be82ea0..6604756 100644 --- a/src/core/common/Logger.hpp +++ b/src/core/common/Logger.hpp @@ -257,7 +257,7 @@ public: * context information. */ template <class PosType> - void logAt(Severity severity, std::string msg, PosType &pos) + void log(Severity severity, std::string msg, PosType &pos) { log(severity, std::move(msg), pos.getPosition(), pos.getContext()); } @@ -291,7 +291,7 @@ public: void debug(std::string msg, PosType &pos) { #ifndef NDEBUG - logAt(Severity::DEBUG, std::move(msg), pos); + log(Severity::DEBUG, std::move(msg), pos); #endif } @@ -319,7 +319,7 @@ public: template <class PosType> void note(std::string msg, PosType &pos) { - logAt(Severity::NOTE, std::move(msg), pos); + log(Severity::NOTE, std::move(msg), pos); } /** @@ -346,7 +346,7 @@ public: template <class PosType> void warning(std::string msg, PosType &pos) { - logAt(Severity::WARNING, std::move(msg), pos); + log(Severity::WARNING, std::move(msg), pos); } /** @@ -373,7 +373,7 @@ public: template <class PosType> void error(std::string msg, PosType &pos) { - logAt(Severity::ERROR, std::move(msg), pos); + log(Severity::ERROR, std::move(msg), pos); } /** @@ -401,7 +401,7 @@ public: template <class PosType> void fatalError(std::string msg, PosType &pos) { - logAt(Severity::FATAL_ERROR, std::move(msg), pos); + log(Severity::FATAL_ERROR, std::move(msg), pos); } /** diff --git a/test/core/common/LoggerTest.cpp b/test/core/common/LoggerTest.cpp index cc9f701..ee1fb6f 100644 --- a/test/core/common/LoggerTest.cpp +++ b/test/core/common/LoggerTest.cpp @@ -72,7 +72,7 @@ TEST(TerminalLogger, log) logger.log(ex); } - logger.logAt(Severity::ERROR, "This is a positioned log message", pos); + logger.log(Severity::ERROR, "This is a positioned log message", pos); } TEST(TerminalLogger, fork) diff --git a/test/plugins/css/CSSParserTest.cpp b/test/plugins/css/CSSParserTest.cpp index 3ea3a19..e043f60 100644 --- a/test/plugins/css/CSSParserTest.cpp +++ b/test/plugins/css/CSSParserTest.cpp @@ -18,6 +18,7 @@ #include <gtest/gtest.h> +#include <iostream> #include <sstream> #include <plugins/css/CSSParser.hpp> @@ -130,7 +131,6 @@ TEST(CSSParser, testParseSelectors) TEST(CSSParser, testParseCSS) { - // create the CSS input std::stringstream input; input << "A, B A {\n"; @@ -203,7 +203,7 @@ TEST(CSSParser, testParseCSS) Rooted<SelectorNode> Aselect = children[1]; ASSERT_EQ("A", Aselect->getName()); { - PseudoSelector select{"select",{"a","b"}, false}; + PseudoSelector select{"select", {"a", "b"}, false}; ASSERT_EQ(select, Aselect->getPseudoSelector()); } ASSERT_EQ(0, Aselect->getEdges().size()); @@ -225,7 +225,7 @@ TEST(CSSParser, testParseCSS) */ children = root->getChildren("B"); ASSERT_EQ(1, children.size()); - + Rooted<SelectorNode> B = children[0]; ASSERT_EQ("B", B->getName()); { @@ -235,10 +235,10 @@ TEST(CSSParser, testParseCSS) ASSERT_EQ(1, B->getEdges().size()); ASSERT_FALSE(B->isAccepting()); ASSERT_EQ(0, B->getRuleSet()->getRules().size()); - + children = B->getChildren("A"); ASSERT_EQ(1, children.size()); - + Rooted<SelectorNode> BA = children[0]; ASSERT_EQ("A", BA->getName()); { @@ -258,6 +258,43 @@ TEST(CSSParser, testParseCSS) ASSERT_EQ("val2", v.asString()); } } + +void assertException(std::string css) +{ + std::stringstream input; + input << css; + // initialize a parser context. + TerminalLogger logger(std::cerr, true); + Scope scope(nullptr); + Registry registry(logger); + Manager manager; + ParserContext ctx{scope, registry, logger, manager}; + + bool seenException = false; + // parse the input. + CSSParser instance; + try { + instance.parse(input, ctx).cast<SelectorNode>(); + } + catch (ParserException ex) { + logger.log(ex); + seenException = true; + } + ASSERT_TRUE(seenException); +} + +TEST(CSSParser, testParseExceptions) +{ + assertException(", "); + assertException("A::myGenerative , "); + assertException("A::(a)"); + assertException("A::f()"); + assertException("A#"); + assertException("A[]"); + assertException("A[a"); + assertException("A[a=]"); + assertException("A > "); +} } } } |