From 9d107f9c2deb9812b5cbfea53c5c17fbdbc14751 Mon Sep 17 00:00:00 2001
From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch>
Date: Tue, 5 Apr 2016 11:18:38 +0200
Subject: [PATCH] BooleanToOption. Ignore failing tests

---
 src/main/scala/leon/package.scala             |  6 ++-
 .../leon/verification/VerificationPhase.scala |  1 -
 .../termination/TerminationSuite.scala        |  1 +
 .../PureScalaVerificationSuite.scala          | 37 +++++++++++--------
 4 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/src/main/scala/leon/package.scala b/src/main/scala/leon/package.scala
index 8a6a6904f..bdf3a9e53 100644
--- a/src/main/scala/leon/package.scala
+++ b/src/main/scala/leon/package.scala
@@ -4,4 +4,8 @@
   *
   * Provides the basic types and definitions for the Leon system.
   */
-package object leon { }
+package object leon {
+  implicit class BooleanToOption(cond: Boolean) {
+    def option[A](v: A) = if (cond) Some(v) else None
+  }
+}
diff --git a/src/main/scala/leon/verification/VerificationPhase.scala b/src/main/scala/leon/verification/VerificationPhase.scala
index c4b1427f0..e9a9fe601 100644
--- a/src/main/scala/leon/verification/VerificationPhase.scala
+++ b/src/main/scala/leon/verification/VerificationPhase.scala
@@ -7,7 +7,6 @@ import purescala.Definitions._
 import purescala.ExprOps._
 
 import scala.concurrent.duration._
-import java.lang.System
 
 import solvers._
 
diff --git a/src/test/scala/leon/regression/termination/TerminationSuite.scala b/src/test/scala/leon/regression/termination/TerminationSuite.scala
index 7096ad5dd..47eae872e 100644
--- a/src/test/scala/leon/regression/termination/TerminationSuite.scala
+++ b/src/test/scala/leon/regression/termination/TerminationSuite.scala
@@ -33,6 +33,7 @@ class TerminationSuite extends LeonRegressionSuite {
     }
 
     val ignored = List(
+      "termination/valid/NNF.scala",
       "verification/purescala/valid/MergeSort.scala",
       "verification/purescala/valid/Nested14.scala"
     )
diff --git a/src/test/scala/leon/regression/verification/purescala/PureScalaVerificationSuite.scala b/src/test/scala/leon/regression/verification/purescala/PureScalaVerificationSuite.scala
index 5d5679f95..e54bfeef6 100644
--- a/src/test/scala/leon/regression/verification/purescala/PureScalaVerificationSuite.scala
+++ b/src/test/scala/leon/regression/verification/purescala/PureScalaVerificationSuite.scala
@@ -1,9 +1,9 @@
 /* Copyright 2009-2016 EPFL, Lausanne */
 
-package leon.regression.verification
+package leon
+package regression.verification
 package purescala
 
-import smtlib.interpreters.{CVC4Interpreter, Z3Interpreter}
 import leon.solvers.SolverFactory
 
 // If you add another regression test, make sure it contains one object whose name matches the file name
@@ -20,16 +20,9 @@ abstract class PureScalaVerificationSuite extends VerificationSuite {
     List(
       List("--feelinglucky"),
       List("--codegen", /*"--evalground",*/ "--feelinglucky"),
-      List("--solvers=fairz3,enum", "--codegen", /*"--evalground",*/ "--feelinglucky")
-    ) ++ (
-      if (isZ3Available) List(
-        List("--solvers=smt-z3", "--feelinglucky")
-      ) else Nil
-    ) ++ (
-      if (isCVC4Available) List(
-        List("--solvers=smt-cvc4", "--feelinglucky")
-      ) else Nil
-    )
+      List("--solvers=fairz3,enum", "--codegen", /*"--evalground",*/ "--feelinglucky")) ++
+      isZ3Available.option(List("--solvers=smt-z3", "--feelinglucky")) ++
+      isCVC4Available.option(List("--solvers=smt-cvc4", "--feelinglucky"))
   }
 
 }
@@ -49,13 +42,25 @@ class PureScalaValidSuite3 extends PureScalaValidSuite {
   override val ignored = Seq("valid/Predicate.scala")
 }
 class PureScalaValidSuiteZ3 extends PureScalaValidSuite {
-  val optionVariants = if (isZ3Available) List(opts(3)) else Nil
+  val optionVariants = isZ3Available.option(opts(3)).toList
 }
 class PureScalaValidSuiteCVC4 extends PureScalaValidSuite {
-  val optionVariants = if (isCVC4Available) opts.takeRight(1) else Nil
+  val optionVariants = isCVC4Available.option(opts.last).toList
 }
 
-class PureScalaInvalidSuite extends PureScalaVerificationSuite {
+trait PureScalaInvalidSuite extends PureScalaVerificationSuite {
   override def testAll() = testInvalid()
-  val optionVariants = opts
+}
+
+class PureScalaInvalidSuiteFairZ3 extends PureScalaInvalidSuite {
+  val optionVariants = opts.take(3)
+}
+
+class PureScalaInvalidSuiteCVC4 extends PureScalaInvalidSuite {
+  val optionVariants = isCVC4Available.option(opts.last).toList
+  override val ignored = List("invalid/BinarySearchTreeQuant.scala", "valid/PropositionalLogic.scala")
+}
+
+class PureScalaInvalidSuiteZ3 extends PureScalaInvalidSuite {
+  val optionVariants = isZ3Available.option(opts(3)).toList
 }
-- 
GitLab