diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | build.sbt | 11 | ||||
-rw-r--r-- | src/main/scala/testbuilder.scala | 41 | ||||
-rw-r--r-- | src/test/scala/basic.scala | 59 |
4 files changed, 113 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..007798c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +/project diff --git a/build.sbt b/build.sbt new file mode 100644 index 0000000..5150ced --- /dev/null +++ b/build.sbt @@ -0,0 +1,11 @@ +name := "scala-test-builder" + +version := "0.01" + +scalaVersion := "2.10.0" + +libraryDependencies += "org.tap4j" % "tap4j" % "4.0" + +libraryDependencies += "org.scalatest" % "scalatest_2.10" % "1.9.1" % "test" + +scalacOptions ++= Seq("-deprecation", "-unchecked", "-feature") diff --git a/src/main/scala/testbuilder.scala b/src/main/scala/testbuilder.scala new file mode 100644 index 0000000..a98cd3f --- /dev/null +++ b/src/main/scala/testbuilder.scala @@ -0,0 +1,41 @@ +package testbuilder + +import org.tap4j.model._ +import org.tap4j.producer._ +import org.tap4j.util._ + +class Builder (plan: Option[Int] = None) { + def this (plan: Int) = + this(Some(plan)) + + def ok (test: Boolean, description: String) { + ok(test, Some(description)) + } + + def ok (test: Boolean, description: Option[String] = None) { + val status = if (test) StatusValues.OK else StatusValues.NOT_OK + val result = new TestResult(status, currentTest) + description.foreach(d => result.setDescription("- " + d)) + testSet.addTestResult(result) + currentTest += 1 + } + + def tap: String = { + val noPlan = testSet.getPlan == null + if (noPlan) { + testSet.setPlan(new Plan(currentTest - 1)) + } + val tap = producer.dump(testSet) + if (noPlan) { + testSet.setPlan(null) + } + tap + } + + private val producer = TapProducerFactory.makeTap13Producer + + private val testSet = new TestSet + plan.foreach(p => testSet.setPlan(new Plan(p))) + + private var currentTest = 1 +} diff --git a/src/test/scala/basic.scala b/src/test/scala/basic.scala new file mode 100644 index 0000000..1593d91 --- /dev/null +++ b/src/test/scala/basic.scala @@ -0,0 +1,59 @@ +import org.scalatest.FunSuite + +import testbuilder._ + +class Basic extends FunSuite { + test ("ok") { + val builder = new Builder(4) + builder.ok(true, "test succeeded") + builder.ok(false, "test failed") + builder.ok(true) + builder.ok(false) + + val expected = + "1..4\n" + + "ok 1 - test succeeded\n" + + "not ok 2 - test failed\n" + + "ok 3\n" + + "not ok 4\n" + + assert(builder.tap === expected) + + builder.ok(true) + assert(builder.tap === expected + "ok 5\n") + } + + test ("no plan") { + val builder = new Builder + builder.ok(true, "test succeeded") + builder.ok(false, "test failed") + builder.ok(true) + builder.ok(false) + + val expected = + "1..4\n" + + "ok 1 - test succeeded\n" + + "not ok 2 - test failed\n" + + "ok 3\n" + + "not ok 4\n" + + assert(builder.tap === expected) + + val expectedModified = + "1..5\n" + + "ok 1 - test succeeded\n" + + "not ok 2 - test failed\n" + + "ok 3\n" + + "not ok 4\n" + + "ok 5\n" + + builder.ok(true) + assert(builder.tap === expectedModified) + } + + test ("empty") { + val builder = new Builder + + assert(builder.tap === "1..0\n") + } +} |