aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/scala/com/iinteractive/test/tap/ParserTest.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/com/iinteractive/test/tap/ParserTest.scala')
-rw-r--r--src/test/scala/com/iinteractive/test/tap/ParserTest.scala127
1 files changed, 127 insertions, 0 deletions
diff --git a/src/test/scala/com/iinteractive/test/tap/ParserTest.scala b/src/test/scala/com/iinteractive/test/tap/ParserTest.scala
new file mode 100644
index 0000000..bb871ee
--- /dev/null
+++ b/src/test/scala/com/iinteractive/test/tap/ParserTest.scala
@@ -0,0 +1,127 @@
+package com.iinteractive.test.tap
+
+import com.iinteractive.test.{TestMore,SkipAll,NumericPlan}
+
+class ParserTest extends TestMore {
+ subtest ("basic") {
+ val tap =
+ "1..1\n" +
+ "ok 1\n"
+
+ val result = (new Parser).parse(tap)
+ is(result.plan, NumericPlan(1), "got the right plan")
+ is(result.results.map(_.passed), Seq(true), "got the right results")
+ }
+
+ subtest ("skip all") {
+ val tap =
+ "1..0 # SKIP nope\n"
+
+ val result = (new Parser).parse(tap)
+ is(result.plan, SkipAll("nope"), "got the right plan")
+ is(result.results, Nil, "got the right results")
+ }
+
+ subtest ("more complicated") {
+ val tap =
+ "# starting...\n" +
+ "ok 1 - stuff\n" +
+ "not ok 2 - does this work?\n" +
+ "not ok 3 - eventually # TODO doesn't work yet\n" +
+ "# skipping some stuff\n" +
+ "ok 4 # skip don't do this yet\n" +
+ "# finished!\n" +
+ "1..4\n" +
+ "# Looks like you failed 1 test of 4.\n"
+
+ val result = (new Parser).parse(tap)
+ is(result.plan, NumericPlan(4))
+ is(result.results.map(_.passed), Seq(true, false, false, true))
+ is(result.results.map(_.number), Seq(1, 2, 3, 4))
+ is(
+ result.results.map(_.description),
+ Seq(
+ "- stuff",
+ "- does this work?",
+ "- eventually",
+ ""
+ )
+ )
+
+ is(
+ result.results.map(_.directive),
+ Seq(
+ None,
+ None,
+ Some(TodoDirective(Some("doesn't work yet"))),
+ Some(SkipDirective(Some("don't do this yet")))
+ )
+ )
+ }
+
+ subtest ("subtests") {
+ val tap =
+ "ok 1 - not subtest\n" +
+ " ok 1 - passed\n" +
+ " not ok 2 - failed\n" +
+ " ok 3 - passed again\n" +
+ " 1..1\n" +
+ " ok 1 - sub-sub-test\n" +
+ " ok 4 - nested subtests\n" +
+ " 1..4\n" +
+ " # Looks like you failed 1 test of 4.\n" +
+ "not ok 2 - subtest\n" +
+ "1..2\n" +
+ "# Looks like you failed 1 test of 2.\n"
+
+ val result = (new Parser).parse(tap)
+ is(result.plan, NumericPlan(2))
+ is(result.results.map(_.passed), Seq(true, false))
+ is(result.results.map(_.number), Seq(1, 2))
+ is(
+ result.results.map(_.description),
+ Seq(
+ "- not subtest",
+ "- subtest"
+ )
+ )
+ is(result.results.map(_.directive), Seq(None, None))
+
+ is(result.results(0).subtest, None)
+ ok(result.results(1).subtest.isDefined)
+
+ val subtest = result.results(1).subtest.get
+ is(subtest.plan, NumericPlan(4))
+ is(subtest.results.map(_.passed), Seq(true, false, true, true))
+ is(subtest.results.map(_.number), Seq(1, 2, 3, 4))
+ is(
+ subtest.results.map(_.description),
+ Seq(
+ "- passed",
+ "- failed",
+ "- passed again",
+ "- nested subtests"
+ )
+ )
+ is(subtest.results.map(_.directive), Seq(None, None, None, None))
+
+ is(subtest.results(0).subtest, None)
+ is(subtest.results(1).subtest, None)
+ is(subtest.results(2).subtest, None)
+ ok(subtest.results(3).subtest.isDefined)
+
+ val subsubtest = subtest.results(3).subtest.get
+ is(subsubtest.plan, NumericPlan(1))
+ is(subsubtest.results.map(_.passed), Seq(true))
+ is(subsubtest.results.map(_.number), Seq(1))
+ is(
+ subsubtest.results.map(_.description),
+ Seq(
+ "- sub-sub-test"
+ )
+ )
+ is(subsubtest.results.map(_.directive), Seq(None))
+
+ is(subsubtest.results(0).subtest, None)
+ }
+}