From ce5afc1279ae502cb0ddcf16ec0041a1fe7fe4dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com>
Date: Sun, 6 May 2012 20:37:56 +0000
Subject: [PATCH] convert Abs testcase to using Array

---
 testcases/Abs.scala | 38 +++++++++++++-------------------------
 1 file changed, 13 insertions(+), 25 deletions(-)

diff --git a/testcases/Abs.scala b/testcases/Abs.scala
index 5efb41797..1a071ee10 100644
--- a/testcases/Abs.scala
+++ b/testcases/Abs.scala
@@ -3,22 +3,25 @@ import leon.Utils._
 object Abs {
 
 
-  def abs(tab: Map[Int, Int], size: Int): Map[Int, Int] = ({
-    require(size <= 5 && isArray(tab, size))
+  def abs(tab: Array[Int]): Array[Int] = ({
+    require(tab.length >= 0)
     var k = 0
-    var tabres = Map.empty[Int, Int]
-    (while(k < size) {
+    val tabres = Array.fill(tab.length)(0)
+    (while(k < tab.length) {
       if(tab(k) < 0)
-        tabres = tabres.updated(k, -tab(k))
+        tabres(k) = -tab(k)
       else
-        tabres = tabres.updated(k, tab(k))
+        tabres(k) = tab(k)
       k = k + 1
-    }) invariant(isArray(tabres, k) && k >= 0 && k <= size && isPositive(tabres, k))
+    }) invariant(
+        tabres.length == tab.length && 
+        k >= 0 && k <= tab.length && 
+        isPositive(tabres, k))
     tabres
-  }) ensuring(res => isArray(res, size) && isPositive(res, size))
+  }) ensuring(res => isPositive(res, res.length))
 
-  def isPositive(a: Map[Int, Int], size: Int): Boolean = {
-    require(size <= 10 && isArray(a, size))
+  def isPositive(a: Array[Int], size: Int): Boolean = {
+    require(a.length >= 0 && size <= a.length)
     def rec(i: Int): Boolean = {
       require(i >= 0)
       if(i >= size) 
@@ -33,19 +36,4 @@ object Abs {
     rec(0)
   }
 
-  def isArray(a: Map[Int, Int], size: Int): Boolean = {
-
-    def rec(i: Int): Boolean = {
-      require(i >= 0)  
-      if(i >= size) true else {
-        if(a.isDefinedAt(i)) rec(i+1) else false
-      }
-    }
-
-    if(size < 0)
-      false
-    else
-      rec(0)
-  }
-
 }
-- 
GitLab