summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp')
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp41
1 files changed, 37 insertions, 4 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp
index f1ebdc4d798..e5bf646ec90 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp
@@ -21,6 +21,7 @@
#include <gtest/gtest.h>
#include <map>
#include <sstream>
+#include <stdexcept>
#include <string>
#include "InputBuffer.hpp"
#include "InputReader.hpp"
@@ -83,6 +84,20 @@ TEST(StreamInputBufferTest, skip) {
}
+TEST(StreamInputBufferTest, readUntil) {
+ istringstream iss("abcdefghijklmnopqrstuvwxyz");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ EXPECT_EQ(in.readUntil("ijk"), "abcdefghijk");
+ EXPECT_EQ(in.peek(), 'l');
+ EXPECT_EQ(in.readUntil("q"), "lmnopq");
+ EXPECT_EQ(in.peek(), 'r');
+ EXPECT_EQ(in.readUntil("X"), "rstuvwxyz");
+ EXPECT_LT(in.peek(), 0);
+ EXPECT_TRUE(in.eof());
+}
+
+
TEST(StreamInputBufferTest, parseInt) {
istringstream iss("1234,-5,+6,10.-");
StreamInputBuffer buffer(iss, 10);
@@ -180,16 +195,34 @@ TEST(StreamInputBufferTest, parseDouble) {
}
-TEST(StreamInputBufferTest, attribs) {
- istringstream iss("aaa=1 bbb=2 ccc=3 d e");
+TEST(StreamInputBufferTest, attribs1) {
+ istringstream iss("aaa=1 bbb=2 c-c-c=3 3d=4 e");
StreamInputBuffer buffer(iss, 10);
BufferInputReader in(buffer);
map<string,string> attr;
- int s = in.parseAttributes(attr);
+ int s = in.parseAttributes(attr, true);
EXPECT_EQ(s, 3);
EXPECT_EQ(attr["aaa"], "1");
EXPECT_EQ(attr["bbb"], "2");
- EXPECT_EQ(attr["ccc"], "3");
+ EXPECT_EQ(attr["c-c-c"], "3");
+ EXPECT_THROW(attr.at("3d"), std::out_of_range);
+ EXPECT_THROW(attr.at("e"), std::out_of_range);
+}
+
+
+TEST(StreamInputBufferTest, attribs2) {
+ istringstream iss("aaa='1' bbb='2' c-c-c='3' d e='value'");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ map<string,string> attr;
+ int s = in.parseAttributes(attr, false, "'");
+ EXPECT_EQ(s, 5);
+ EXPECT_EQ(attr["aaa"], "1");
+ EXPECT_EQ(attr["bbb"], "2");
+ EXPECT_EQ(attr["c-c-c"], "3");
+ EXPECT_EQ(attr["e"], "value");
+ EXPECT_NO_THROW(attr.at("d"));
+ EXPECT_TRUE(attr.at("d").empty());
}