From 8a2db960139bbfb713b1c3f055d9268207a1cb09 Mon Sep 17 00:00:00 2001
From: tempiaa <tempiaa@eurecom.fr>
Date: Wed, 29 Apr 2020 14:39:28 +0200
Subject: [PATCH] More expression solver tests

---
 .../AvatarExpressionTest.java                 | 75 ++++++++++++-------
 1 file changed, 50 insertions(+), 25 deletions(-)

diff --git a/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java b/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java
index ba10865735..fc7a80c38a 100644
--- a/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java
+++ b/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java
@@ -47,20 +47,18 @@
 package avatartranslator;
 
 import static org.junit.Assert.*;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import org.junit.Before;
 import org.junit.Test;
 
-import avatartranslator.*;
 import avatartranslator.modelchecker.SpecificationBlock;
+import avatartranslator.modelchecker.SpecificationState;
 
 public class AvatarExpressionTest {
     
-    private AvatarGuard res;
-    private AvatarBlock block;
-    private SpecificationBlock specBlock;
+    private AvatarSpecification as;
+    private AvatarBlock block1, block2;
     
     public AvatarExpressionTest() {
         
@@ -68,25 +66,33 @@ public class AvatarExpressionTest {
     
     @Before
     public void test () {
-        AvatarSpecification as = new AvatarSpecification("avatarspecification", null);
+        as = new AvatarSpecification("avatarspecification", null);
 
-        block = new AvatarBlock("myblock", as, null);
-        as.addBlock(block);
-        AvatarAttribute x = new AvatarAttribute("x", AvatarType.INTEGER, block, null);
-        block.addAttribute(x);
-        AvatarAttribute y = new AvatarAttribute("y", AvatarType.INTEGER, block, null);
-        block.addAttribute(y);
-        AvatarAttribute z = new AvatarAttribute("z", AvatarType.INTEGER, block, null);
-        block.addAttribute(z);
-        AvatarAttribute w = new AvatarAttribute("w", AvatarType.BOOLEAN, block, null);
-        block.addAttribute(w);
+        block1 = new AvatarBlock("block1", as, null);
+        as.addBlock(block1);
+        AvatarAttribute x1 = new AvatarAttribute("x", AvatarType.INTEGER, block1, null);
+        block1.addAttribute(x1);
+        AvatarAttribute y1 = new AvatarAttribute("y", AvatarType.INTEGER, block1, null);
+        block1.addAttribute(y1);
+        AvatarAttribute z1 = new AvatarAttribute("z", AvatarType.INTEGER, block1, null);
+        block1.addAttribute(z1);
         
-        x.setInitialValue("10");
-        y.setInitialValue("5");
-        z.setInitialValue("2");
+        x1.setInitialValue("10");
+        y1.setInitialValue("5");
+        z1.setInitialValue("2");
         
-        specBlock = new SpecificationBlock();
-        specBlock.init(block, false);
+        block2 = new AvatarBlock("block2", as, null);
+        as.addBlock(block2);
+        AvatarAttribute x2 = new AvatarAttribute("x", AvatarType.INTEGER, block2, null);
+        block2.addAttribute(x2);
+        AvatarAttribute y2 = new AvatarAttribute("y", AvatarType.INTEGER, block2, null);
+        block2.addAttribute(y2);
+        AvatarAttribute z2 = new AvatarAttribute("z", AvatarType.INTEGER, block2, null);
+        block2.addAttribute(z2);
+        
+        x2.setInitialValue("9");
+        y2.setInitialValue("7");
+        z2.setInitialValue("3");
     }
     
     @Test
@@ -112,15 +118,34 @@ public class AvatarExpressionTest {
     
     @Test
     public void testBlock() {
+        SpecificationBlock specBlock = new SpecificationBlock();
+        specBlock.init(block1, false);
+        
         AvatarExpressionSolver e1 = new AvatarExpressionSolver("x + y");
-        e1.buildExpression(block);
+        e1.buildExpression(block1);
         AvatarExpressionSolver e2 = new AvatarExpressionSolver("-x / y - 15 * z + 1 == -31");
-        e2.buildExpression(block);
-        AvatarExpressionSolver e3 = new AvatarExpressionSolver("not(-x / z - (x + y) * 2 + 1 == -(60 - 26))");
-        e3.buildExpression(block);
+        e2.buildExpression(block1);
+        AvatarExpressionSolver e3 = new AvatarExpressionSolver("not(-x / z - (x + y) * 2 + 1 >= -(60 - 26))");
+        e3.buildExpression(block1);
         assertTrue(e1.getResult(specBlock) == 15);
         assertTrue(e2.getResult(specBlock) == 1);
         assertTrue(e3.getResult(specBlock) == 0);
     }
+    
+    @Test
+    public void testSpec() {
+        SpecificationState ss = new SpecificationState();
+        ss.setInit(as, false);
+        
+        AvatarExpressionSolver e1 = new AvatarExpressionSolver("block1.x + block2.y");
+        e1.buildExpression(as);
+        AvatarExpressionSolver e2 = new AvatarExpressionSolver("-block1.x / block1.y - 15 * block2.z + 1 == -46");
+        e2.buildExpression(as);
+        AvatarExpressionSolver e3 = new AvatarExpressionSolver("not(-block2.x / block2.z - not(block1.x + block2.y) * -2 + -(1) <= -(-4 + 7))");
+        e3.buildExpression(as);
+        assertTrue(e1.getResult(ss) == 17);
+        assertTrue(e2.getResult(ss) == 1);
+        assertTrue(e3.getResult(ss) == 0);
+    }
 
 }
-- 
GitLab