diff --git a/src/test/scala/leon/test/solvers/TimeoutSolverTests.scala b/src/test/scala/leon/test/solvers/TimeoutSolverTests.scala
new file mode 100644
index 0000000000000000000000000000000000000000..0372f4706915855f6639e8da7d926f5dcd6a739e
--- /dev/null
+++ b/src/test/scala/leon/test/solvers/TimeoutSolverTests.scala
@@ -0,0 +1,56 @@
+package leon.test.solvers
+
+import org.scalatest.FunSuite
+
+import leon._
+import leon.solvers._
+import leon.purescala.Common._
+import leon.purescala.Definitions._
+import leon.purescala.Trees._
+import leon.purescala.TypeTrees._
+
+class TimeoutSolverTests extends FunSuite {
+  private class IdioticSolver(ctx : LeonContext) extends Solver(ctx) with NaiveIncrementalSolver {
+    val name = "Idiotic"
+    val description = "Loops when it doesn't know"
+
+    def solve(expression : Expr) : Option[Boolean] = expression match {
+      case BooleanLiteral(true)  => Some(true)
+      case BooleanLiteral(false) => Some(false)
+      case Equals(x, y) if x == y => Some(true)
+      case _ => 
+        while(!forceStop) {
+          Thread.sleep(1)
+        }
+        None
+    }
+  }
+
+  private val emptyProgram = Program(
+    FreshIdentifier("empty"),
+    ObjectDef(FreshIdentifier("empty"), Seq.empty, Seq.empty)
+  )
+
+  private def getTOSolver : Solver = {
+    val s = new TimeoutSolver(new IdioticSolver(LeonContext()), 1)
+    s.setProgram(emptyProgram)
+    s
+  }
+
+  test("TimeoutSolver 1") {
+    val s = getTOSolver
+    assert(s.solve(BooleanLiteral(true)) === Some(true))
+    assert(s.solve(BooleanLiteral(false)) === Some(false))
+
+    val x = Variable(FreshIdentifier("x").setType(Int32Type))
+    assert(s.solve(Equals(x, x)) === Some(true))
+  }
+
+  test("TimeoutSolver 2") {
+    val s = getTOSolver
+    val x = Variable(FreshIdentifier("x").setType(Int32Type))
+    val o = IntLiteral(1)
+    assert(s.solve(Equals(Plus(x, o), Plus(o, x))) === None)
+    assert(s.solve(Equals(Plus(x, o), x)) === None)
+  }
+}