summaryrefslogtreecommitdiff
path: root/test/core
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-16 00:18:37 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-16 00:18:37 +0100
commit87793f331c632ee527915805a0c92a94a534ba37 (patch)
tree3e747075d819c07c2b6b59982108f60a5d8b8159 /test/core
parentfbcdbd6ea539520826492501be87823bae1f475d (diff)
Fixed problem with fieldEnd closing implicit fields and added unit test
Diffstat (limited to 'test/core')
-rw-r--r--test/core/parser/stack/StackTest.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/test/core/parser/stack/StackTest.cpp b/test/core/parser/stack/StackTest.cpp
index 321d471..59fdd59 100644
--- a/test/core/parser/stack/StackTest.cpp
+++ b/test/core/parser/stack/StackTest.cpp
@@ -602,7 +602,7 @@ TEST(Stack, errorFieldStartNoCommand)
tracker.expect(0, 0, 0, 0, 0, 0, 0); // sc, ec, fsc, fse, asc, aec, dc
}
-TEST(Stack, errorMutlipleFieldStarts)
+TEST(Stack, errorMultipleFieldStarts)
{
tracker.reset();
logger.reset();
@@ -624,7 +624,7 @@ TEST(Stack, errorMutlipleFieldStarts)
tracker.expect(1, 1, 1, 1, 0, 0, 0); // sc, ec, fsc, fse, asc, aec, dc
}
-TEST(Stack, errorMutlipleFieldEnds)
+TEST(Stack, errorMultipleFieldEnds)
{
tracker.reset();
logger.reset();
@@ -640,7 +640,7 @@ TEST(Stack, errorMutlipleFieldEnds)
tracker.expect(1, 0, 1, 1, 0, 0, 0); // sc, ec, fsc, fse, asc, aec, dc
s.fieldEnd();
ASSERT_TRUE(logger.hasError());
- tracker.expect(1, 0, 1, 1, 0, 0, 0); // sc, ec, fsc, fse, asc, aec, dc
+ tracker.expect(1, 1, 1, 1, 0, 0, 0); // sc, ec, fsc, fse, asc, aec, dc
}
tracker.expect(1, 1, 1, 1, 0, 0, 0); // sc, ec, fsc, fse, asc, aec, dc
}
@@ -661,6 +661,24 @@ TEST(Stack, errorOpenField)
ASSERT_TRUE(logger.hasError());
tracker.expect(1, 1, 1, 1, 0, 0, 0); // sc, ec, fsc, fse, asc, aec, dc
}
+
+TEST(Stack, fieldEndWhenImplicitDefaultFieldOpen)
+{
+ tracker.reset();
+ logger.reset();
+
+ {
+ Stack s{env.context, States::AnyHandlers};
+ s.command("a", {});
+ s.fieldStart(true);
+ s.command("b", {});
+ s.data("test");
+ s.fieldEnd();
+ tracker.expect(2, 2, 2, 2, 0, 0, 1); // sc, ec, fsc, fse, asc, aec, dc
+ }
+ ASSERT_FALSE(logger.hasError());
+}
+
}
}