aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--build.sbt11
-rw-r--r--src/main/scala/testbuilder.scala41
-rw-r--r--src/test/scala/basic.scala59
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")
+ }
+}