From 5b2cf2cba19a3d321228887c525636cdccef8f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com> Date: Wed, 12 Dec 2012 14:36:56 +0100 Subject: [PATCH] new regression tests on Tuple in purescala --- .../purescala/invalid/MyTuple1.scala | 11 +++++++++++ .../purescala/invalid/MyTuple2.scala | 14 ++++++++++++++ .../purescala/invalid/MyTuple3.scala | 7 +++++++ .../verification/purescala/valid/MyTuple1.scala | 11 +++++++++++ .../verification/purescala/valid/MyTuple2.scala | 14 ++++++++++++++ .../verification/purescala/valid/MyTuple3.scala | 8 ++++++++ .../verification/purescala/valid/MyTuple4.scala | 14 ++++++++++++++ .../verification/purescala/valid/MyTuple5.scala | 16 ++++++++++++++++ .../verification/purescala/valid/MyTuple6.scala | 8 ++++++++ 9 files changed, 103 insertions(+) create mode 100644 src/test/resources/regression/verification/purescala/invalid/MyTuple1.scala create mode 100644 src/test/resources/regression/verification/purescala/invalid/MyTuple2.scala create mode 100644 src/test/resources/regression/verification/purescala/invalid/MyTuple3.scala create mode 100644 src/test/resources/regression/verification/purescala/valid/MyTuple1.scala create mode 100644 src/test/resources/regression/verification/purescala/valid/MyTuple2.scala create mode 100644 src/test/resources/regression/verification/purescala/valid/MyTuple3.scala create mode 100644 src/test/resources/regression/verification/purescala/valid/MyTuple4.scala create mode 100644 src/test/resources/regression/verification/purescala/valid/MyTuple5.scala create mode 100644 src/test/resources/regression/verification/purescala/valid/MyTuple6.scala diff --git a/src/test/resources/regression/verification/purescala/invalid/MyTuple1.scala b/src/test/resources/regression/verification/purescala/invalid/MyTuple1.scala new file mode 100644 index 000000000..f2b06b5b2 --- /dev/null +++ b/src/test/resources/regression/verification/purescala/invalid/MyTuple1.scala @@ -0,0 +1,11 @@ +object MyTuple1 { + + def foo(): Int = { + val t = (1, true, 3) + val a1 = t._1 + val a2 = t._2 + val a3 = t._3 + a3 + } ensuring( _ == 1) + +} diff --git a/src/test/resources/regression/verification/purescala/invalid/MyTuple2.scala b/src/test/resources/regression/verification/purescala/invalid/MyTuple2.scala new file mode 100644 index 000000000..22b62dc75 --- /dev/null +++ b/src/test/resources/regression/verification/purescala/invalid/MyTuple2.scala @@ -0,0 +1,14 @@ +object MyTuple2 { + + abstract class A + case class B(i: Int) extends A + case class C(a: A) extends A + + def foo(): Int = { + val t = (B(2), C(B(3))) + t match { + case (B(x), C(y)) => x + } + } ensuring( _ == 3) + +} diff --git a/src/test/resources/regression/verification/purescala/invalid/MyTuple3.scala b/src/test/resources/regression/verification/purescala/invalid/MyTuple3.scala new file mode 100644 index 000000000..da9f85b16 --- /dev/null +++ b/src/test/resources/regression/verification/purescala/invalid/MyTuple3.scala @@ -0,0 +1,7 @@ +object MyTuple3 { + + def foo(t: (Int, Int)): (Int, Int) = { + t + } ensuring(res => res._1 > 0 && res._2 > 1) + +} diff --git a/src/test/resources/regression/verification/purescala/valid/MyTuple1.scala b/src/test/resources/regression/verification/purescala/valid/MyTuple1.scala new file mode 100644 index 000000000..48383898e --- /dev/null +++ b/src/test/resources/regression/verification/purescala/valid/MyTuple1.scala @@ -0,0 +1,11 @@ +object MyTuple1 { + + def foo(): Int = { + val t = (1, true, 3) + val a1 = t._1 + val a2 = t._2 + val a3 = t._3 + a3 + } ensuring( _ == 3) + +} diff --git a/src/test/resources/regression/verification/purescala/valid/MyTuple2.scala b/src/test/resources/regression/verification/purescala/valid/MyTuple2.scala new file mode 100644 index 000000000..9fd21eb20 --- /dev/null +++ b/src/test/resources/regression/verification/purescala/valid/MyTuple2.scala @@ -0,0 +1,14 @@ +object MyTuple2 { + + abstract class A + case class B(i: Int) extends A + case class C(a: A) extends A + + def foo(): Int = { + val t = (B(2), C(B(3))) + t match { + case (B(x), C(y)) => x + } + } ensuring(_ == 2) + +} diff --git a/src/test/resources/regression/verification/purescala/valid/MyTuple3.scala b/src/test/resources/regression/verification/purescala/valid/MyTuple3.scala new file mode 100644 index 000000000..2e14c067b --- /dev/null +++ b/src/test/resources/regression/verification/purescala/valid/MyTuple3.scala @@ -0,0 +1,8 @@ +object MyTuple3 { + + def foo(): Int = { + val t = ((2, 3), true) + t._1._2 + } ensuring( _ == 3) + +} diff --git a/src/test/resources/regression/verification/purescala/valid/MyTuple4.scala b/src/test/resources/regression/verification/purescala/valid/MyTuple4.scala new file mode 100644 index 000000000..6fcfed661 --- /dev/null +++ b/src/test/resources/regression/verification/purescala/valid/MyTuple4.scala @@ -0,0 +1,14 @@ + +object MyTuple4 { + + abstract class A + case class B(i: Int) extends A + case class C(a: A) extends A + + def foo(): Int = { + val t = (1, (C(B(4)), 2), 3) + val (a1, (C(B(x)), a2), a3) = t + x + } ensuring( _ == 4) + +} diff --git a/src/test/resources/regression/verification/purescala/valid/MyTuple5.scala b/src/test/resources/regression/verification/purescala/valid/MyTuple5.scala new file mode 100644 index 000000000..6a55bc8c9 --- /dev/null +++ b/src/test/resources/regression/verification/purescala/valid/MyTuple5.scala @@ -0,0 +1,16 @@ +object MyTuple1 { + + abstract class A + case class B(t: (Int, Int)) extends A + case class C(a: A) extends A + + def foo(): Int = { + val t: (Int, (A, Int), Int) = (1, (C(B((4, 5))), 2), 3) + t match { + case (_, (B((x, y)), _), _) => x + case (_, (C(B((_, x))), _), y) => x + case (_, _, x) => x + } + } ensuring( _ == 5) + +} diff --git a/src/test/resources/regression/verification/purescala/valid/MyTuple6.scala b/src/test/resources/regression/verification/purescala/valid/MyTuple6.scala new file mode 100644 index 000000000..a54710fbb --- /dev/null +++ b/src/test/resources/regression/verification/purescala/valid/MyTuple6.scala @@ -0,0 +1,8 @@ +object MyTuple6 { + + def foo(t: (Int, Int)): (Int, Int) = { + require(t._1 > 0 && t._2 > 1) + t + } ensuring(res => res._1 > 0 && res._2 > 1) + +} -- GitLab