diff options
Diffstat (limited to 'src/test/scala/org/perl8/test/tap/TestBuilderTest.scala')
-rw-r--r-- | src/test/scala/org/perl8/test/tap/TestBuilderTest.scala | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala b/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala new file mode 100644 index 0000000..e68cf47 --- /dev/null +++ b/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala @@ -0,0 +1,169 @@ +package org.perl8.test + +import org.scalatest.FunSuite +import org.scalatest.BeforeAndAfter + +import org.perl8.test.tap.TestBuilder +import org.perl8.test.BailOutException +import org.perl8.test.SkipAll + +import java.io.ByteArrayOutputStream + +class TestBuilderTest extends FunSuite with BeforeAndAfter { + private val output = new ByteArrayOutputStream + + before { + output.reset + } + + test ("ok") { + val builder = new TestBuilder(4, output) + builder.ok(true, "test succeeded") + builder.ok(false, "test failed") + builder.ok(true) + builder.ok(false) + builder.doneTesting + + val expected = + "1..4\n" + + "ok 1 test succeeded\n" + + "not ok 2 test failed\n" + + "ok 3\n" + + "not ok 4\n" + + "# Looks like you failed 2 tests of 4.\n" + + assert(output.toString === expected) + } + + test ("no plan") { + val builder = new TestBuilder(output) + builder.ok(true, "test succeeded") + builder.ok(false, "test failed") + builder.ok(true) + builder.ok(false) + builder.doneTesting + + val expected = + "ok 1 test succeeded\n" + + "not ok 2 test failed\n" + + "ok 3\n" + + "not ok 4\n" + + "1..4\n" + + "# Looks like you failed 2 tests of 4.\n" + + assert(output.toString === expected) + } + + test ("empty") { + val builder = new TestBuilder(output) + builder.doneTesting + + val expected = + "1..0\n" + + "# No tests run!\n" + + assert(output.toString === expected) + } + + test ("diag") { + val builder = new TestBuilder(output) + + builder.ok(true, "the test passes") + builder.ok(false, "the test passes") + builder.diag("got false, expected true") + builder.ok(true) + builder.diag("ending\nnow") + builder.doneTesting + + val expected = + "ok 1 the test passes\n" + + "not ok 2 the test passes\n" + + "# got false, expected true\n" + + "ok 3\n" + + "# ending\n" + + "# now\n" + + "1..3\n" + + "# Looks like you failed 1 test of 3.\n" + + assert(output.toString === expected) + } + + test ("is passing") { + val builder = new TestBuilder(output) + + assert(!builder.isPassing) + builder.ok(true) + assert(builder.isPassing) + builder.ok(false) + assert(!builder.isPassing) + builder.ok(true) + assert(!builder.isPassing) + } + + test ("bail out") { + val builder = new TestBuilder(output) + + builder.ok(true) + val e = intercept[BailOutException] { + builder.bailOut("oh no!") + } + assert(e.message === "oh no!") + + val expected = + "ok 1\n" + + "Bail out! oh no!\n" + + assert(output.toString === expected) + } + + test ("skip all") { + val builder = new TestBuilder(SkipAll(), output) + + val expected = + "1..0 # SKIP\n" + + assert(output.toString === expected) + } + + test ("skip all with reason") { + val builder = new TestBuilder(SkipAll("foo bar"), output) + + val expected = + "1..0 # SKIP foo bar\n" + + assert(output.toString === expected) + } + + test ("skip") { + val builder = new TestBuilder(output) + + builder.ok(false) + builder.skip("not now") + builder.skip() + builder.doneTesting + + val expected = + "not ok 1\n" + + "ok 2 # skip not now\n" + + "ok 3 # skip\n" + + "1..3\n" + + "# Looks like you failed 1 test of 3.\n" + + assert(output.toString === expected) + } + + test ("todo") { + val builder = new TestBuilder(output) + + builder.ok(false, "do a thing", todo = "not working yet") + builder.ok(true, todo = "is it?") + builder.doneTesting + + val expected = + "not ok 1 do a thing # TODO not working yet\n" + + "ok 2 # TODO is it?\n" + + "1..2\n" + + assert(output.toString === expected) + } +} |