diff --git a/src/main/java/avatartranslator/AvatarStateMachineElement.java b/src/main/java/avatartranslator/AvatarStateMachineElement.java index 1bd3b30b2f73fc96866a69f2072f1296d65480aa..61d1e9483e23d2c3afb4dfe9e4a16e8f3d082038 100644 --- a/src/main/java/avatartranslator/AvatarStateMachineElement.java +++ b/src/main/java/avatartranslator/AvatarStateMachineElement.java @@ -85,11 +85,11 @@ public abstract class AvatarStateMachineElement extends AvatarElement { } public void setCheckable() { - isCheckable = true; + this.isCheckable = true; } public boolean isCheckable() { - return isCheckable; + return this.isCheckable; } public void addNext(AvatarStateMachineElement _element) { diff --git a/src/main/java/ui/AvatarDesignPanelTranslator.java b/src/main/java/ui/AvatarDesignPanelTranslator.java index bbaca5866912bf498a1124d42e5d69cee5f98ebb..08c6d37e4d2b8ce9f0391dca3facd8a4c166d59d 100644 --- a/src/main/java/ui/AvatarDesignPanelTranslator.java +++ b/src/main/java/ui/AvatarDesignPanelTranslator.java @@ -271,6 +271,7 @@ public class AvatarDesignPanelTranslator { String p2 = pragma.split(",")[1].split("\\)")[0]; if (!p2.contains(".")){ + TraceManager.addDev("Invalid block.signal format"); return null; } @@ -324,6 +325,7 @@ public class AvatarDesignPanelTranslator { } } else { + TraceManager.addDev("No latency expression found"); return null; } diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java index d7db74e0432d53f3b3259af684868cb8e5efac5b..9536e60434f2163b849eaaf937b6574551257eba 100644 --- a/src/main/java/ui/MainGUI.java +++ b/src/main/java/ui/MainGUI.java @@ -233,6 +233,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe public final static byte AVATAR_SYNTAXCHECKING_OK = 47; public final static byte PANEL_CHANGED = 48; public final static byte ATTACKTREE_SYNTAXCHECKING_OK = 49; + public final static byte COMPONENT_SELECTED = 50; public final static int INCREMENT = 10; @@ -2753,17 +2754,37 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe rgautprojdotfile = new File(myFile + "_proj.aut.dot"); } + /** + * Display "Modeling has not been saved" window + * @author Fabien Tessier + * @param str1 (text for the left button) + * @param str2 (text for the right button) + * @return boolean (false = cancel, true = perform action) + */ public boolean saveBeforeAction(String str1, String str2) { - Object[] options = { str1, str2, "CANCEL" }; - int back = JOptionPane.showOptionDialog(frame, "Modeling has not been saved", "Warning", - JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, - null, options, options[0]); - //TraceManager.addDev("back= " + back); - if (back == JOptionPane.CANCEL_OPTION) { + Object[] options = { str1, str2, "CANCEL" }; //Texts for buttons + JOptionPane optionPane = new JOptionPane("Modeling has not been saved", JOptionPane.WARNING_MESSAGE, JOptionPane.YES_NO_CANCEL_OPTION, null, options, options[0]); + JDialog dialog = optionPane.createDialog(activetdp, "Warning"); //Use JDialog to enable navigation with arrow keys + dialog.setLocation((frame.getSize().width)/2 - dialog.getWidth()/2, (frame.getSize().height)/2 - dialog.getHeight()/2); + UIManager.put("Button.defaultButtonFollowsFocus", Boolean.TRUE); + + Set forwardTraversalKeys = new HashSet(dialog.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS)); + forwardTraversalKeys.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.VK_UNDEFINED)); + dialog.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forwardTraversalKeys); //Navigation with right arrow + + Set backwardTraversalKeys = new HashSet(dialog.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS)); + backwardTraversalKeys.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_LEFT, KeyEvent.VK_UNDEFINED)); + dialog.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, backwardTraversalKeys); //Navigation with left arrow + + dialog.setVisible(true); + dialog.dispose(); + String ret = (String) optionPane.getValue(); //Get value of the pressed button + if (ret == null || ret.equals("CANCEL")) { return false; } - if (back == JOptionPane.YES_OPTION) { - saveProject(); + + if (ret.equals(str1)) { + saveProject(); } return true; } @@ -2816,6 +2837,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe public void delete() { getCurrentTDiagramPanel().makeDelete(); + setMode(MainGUI.OPENED); } public void backward() { diff --git a/src/main/java/ui/ModeManager.java b/src/main/java/ui/ModeManager.java index fb11391da3bdbcb805540c47e823de29ff1cfcd4..a8a33ab8ad617461bba039f230a18170ed531d11 100755 --- a/src/main/java/ui/ModeManager.java +++ b/src/main/java/ui/ModeManager.java @@ -119,12 +119,12 @@ public class ModeManager { actions[TGUIAction.ACT_GENERATE_ONTOLOGIES_CURRENT_DIAGRAM].setEnabled(true); actions[TGUIAction.ACT_GENERATE_ONTOLOGIES_CURRENT_SET_OF_DIAGRAMS].setEnabled(true); actions[TGUIAction.ACT_GENERATE_ONTOLOGIES_ALL_DIAGRAMS].setEnabled(true); - actions[TGUIAction.ACT_DELETE].setEnabled(true); - actions[TGUIAction.ACT_SUPPR].setEnabled(true); - actions[TGUIAction.ACT_UP].setEnabled(true); - actions[TGUIAction.ACT_DOWN].setEnabled(true); - actions[TGUIAction.ACT_LEFT].setEnabled(true); - actions[TGUIAction.ACT_RIGHT].setEnabled(true); + actions[TGUIAction.ACT_DELETE].setEnabled(false); + actions[TGUIAction.ACT_SUPPR].setEnabled(false); + actions[TGUIAction.ACT_UP].setEnabled(false); + actions[TGUIAction.ACT_DOWN].setEnabled(false); + actions[TGUIAction.ACT_LEFT].setEnabled(false); + actions[TGUIAction.ACT_RIGHT].setEnabled(false); if (mainBar != null) { mainBar.activateSearch(true); @@ -407,6 +407,14 @@ public class ModeManager { case MainGUI.NC_OK: actions[TGUIAction.ACT_NC].setEnabled(true); break; + case MainGUI.COMPONENT_SELECTED: + actions[TGUIAction.ACT_UP].setEnabled(true); + actions[TGUIAction.ACT_DOWN].setEnabled(true); + actions[TGUIAction.ACT_LEFT].setEnabled(true); + actions[TGUIAction.ACT_RIGHT].setEnabled(true); + actions[TGUIAction.ACT_DELETE].setEnabled(true); + actions[TGUIAction.ACT_SUPPR].setEnabled(true); + break; default: TraceManager.addDev("DEFAULT"); mgui.activeActions(false); diff --git a/src/main/java/ui/TDiagramMouseManager.java b/src/main/java/ui/TDiagramMouseManager.java index 43df70d235337a2e78fd2a0cffb0912c30fa6404..39b95c1bec39e0121e6fe8a29cefa4708a01dbce 100755 --- a/src/main/java/ui/TDiagramMouseManager.java +++ b/src/main/java/ui/TDiagramMouseManager.java @@ -166,7 +166,8 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen tdp.addingTGConnector(); cp = p1; tdp.setAddingTGConnector(e.getX(), e.getY()); - tdp.repaint(); + //tdp.repaint(); + setSelection(p1.container.getX(), p1.container.getY()); } } } @@ -285,6 +286,7 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen //System.out.println("change2"); tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); } + setSelection(e.getX(), e.getY()); } if (tdp.mode == TDiagramPanel.SELECTING_COMPONENTS) { @@ -480,14 +482,16 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen } } if (tgc != null) { //A component has been clicked - lastSelectedComponent = tgc; - tdp.setSelect(true); - tgc.singleClick(tdp.getGUI().getFrame(), x, y); + tdp.getGUI().setMode(MainGUI.COMPONENT_SELECTED); + lastSelectedComponent = tgc; + tdp.setSelect(true); + tgc.singleClick(tdp.getGUI().getFrame(), x, y); } else { - tdp.setSelect(false); - lastSelectedComponent = null; - tdp.componentPointed = null; + tdp.getGUI().setMode(MainGUI.OPENED); + tdp.setSelect(false); + lastSelectedComponent = null; + tdp.componentPointed = null; } tdp.getGUI().changeMade(tdp, TDiagramPanel.CHANGE_VALUE_COMPONENT); tdp.repaint(); @@ -545,10 +549,12 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen } } - if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.EDIT) && (selectedComponent == false) && (!tdp.isSelect())){ - byte info = tdp.highlightComponent(e.getX(), e.getY()); - if (info > 1) { - tgc = tdp.componentPointed(); + if ((tdp.mode == TDiagramPanel.NORMAL) && (selected == TGComponentManager.EDIT)){ + byte info = 0; + if (!tdp.isSelect()) + info = tdp.highlightComponent(e.getX(), e.getY()); + if (info > 1 || tdp.isSelect()) { + tgc = tdp.componentPointed(); if (tgc.isUserResizable()) { setCursor(tgc.getResizeZone(e.getX(), e.getY())); } else { diff --git a/ttool/src/test/java/avatartranslator/AvatarGuardTests.java b/ttool/src/test/java/avatartranslator/AvatarGuardTests.java index 695d076804a077ae0484be71137b57112e996a23..28f73ee1f94806cd32f59b7e1c96ab8b1702f6d3 100644 --- a/ttool/src/test/java/avatartranslator/AvatarGuardTests.java +++ b/ttool/src/test/java/avatartranslator/AvatarGuardTests.java @@ -43,23 +43,33 @@ * @see */ +import org.junit.Test; +import org.junit.*; + +import static org.junit.Assert.*; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + import java.util.LinkedList; import java.util.HashMap; import java.util.Vector; + import ui.TAttribute; import avatartranslator.*; public class AvatarGuardTests { + AvatarGuard res; + AvatarBlock A,B; public AvatarGuardTests () { // super ("AvatarGuards", false); } - - protected void test () { + @Before + public void test () { AvatarSpecification as = new AvatarSpecification("avatarspecification", null); - AvatarBlock A = new AvatarBlock("A", as, null); + A = new AvatarBlock("A", as, null); AvatarStateMachine Aasm = A.getStateMachine(); Aasm.addElement(new AvatarState("a1", null)); A.addAttribute(new AvatarAttribute("key1", AvatarType.INTEGER, A, null)); @@ -67,7 +77,7 @@ public class AvatarGuardTests { A.addAttribute(new AvatarAttribute("test", AvatarType.BOOLEAN, A, null)); A.addAttribute(new AvatarAttribute("test2", AvatarType.BOOLEAN, A, null)); - AvatarBlock B = new AvatarBlock("B", as, null); + B = new AvatarBlock("B", as, null); AvatarStateMachine Basm = B.getStateMachine(); Basm.addElement(new AvatarState("b1", null)); B.addAttribute(new AvatarAttribute("key1", AvatarType.INTEGER, B, null)); @@ -88,7 +98,7 @@ public class AvatarGuardTests { blocks.add(B); blocks.add(C); - HashMap<String, Vector> typeAttributesMap = new HashMap<String, Vector>(); + HashMap<String, Vector<TAttribute>> typeAttributesMap = new HashMap<String, Vector<TAttribute>>(); HashMap<String, String> nameTypeMap = new HashMap<String, String>(); //Type T1: a,b @@ -99,86 +109,103 @@ public class AvatarGuardTests { nameTypeMap.put("C.m", "T1"); nameTypeMap.put("B.m", "T1"); nameTypeMap.put("C.d", "T2"); - Vector t1s= new Vector(); - Vector t2s= new Vector(); + Vector<TAttribute> t1s= new Vector<TAttribute>(); + Vector<TAttribute> t2s= new Vector<TAttribute>(); t1s.add(attr_a); t1s.add(attr_b); t2s.add(attr_c); typeAttributesMap.put("T1", t1s); typeAttributesMap.put("T2", t2s); - AvatarGuard res; - /* - //Else Guard - res= AvatarGuard.createFromString(A, "else"); - this.updateDigest("Created else guard " +(res instanceof AvatarGuardElse)); - //Empty Guard + } + + @Test + public void testElseGuardCreation(){ + res= AvatarGuard.createFromString(A, "else"); + assertTrue(res instanceof AvatarGuardElse); + } + + @Test + public void testEmptyGuardCreation(){ + //Empty Guard res= AvatarGuard.createFromString(A, ""); - this.updateDigest("Created empty guard " +(res instanceof AvatarGuardEmpty)); + assertTrue(res instanceof AvatarGuardEmpty); + } + + @Test + public void testFailNonValidExpression(){ //Fail if not valid expression res= AvatarGuard.createFromString(A, "arg(key1==key2))"); - this.updateDigest("Fail if nonvalid expression " +(res instanceof AvatarGuardEmpty)); + assertTrue(res instanceof AvatarGuardEmpty); res= AvatarGuard.createFromString(A, "key1=key2"); - this.updateDigest("Fail if nonvalid expression " +(res instanceof AvatarGuardEmpty)); + assertTrue(res instanceof AvatarGuardEmpty); res= AvatarGuard.createFromString(A, "key1==)"); - this.updateDigest("Fail if nonvalid expression " +(res instanceof AvatarGuardEmpty)); + assertTrue(res instanceof AvatarGuardEmpty); res= AvatarGuard.createFromString(A, "(key1==)))"); - this.updateDigest("Fail if nonvalid expression " +(res instanceof AvatarGuardEmpty)); - - //Mono Guards - this.updateDigest("Mono Guard Tests"); - res= AvatarGuard.createFromString(A, "test"); - this.updateDigest("Created mono guard " +(res instanceof AvatarSimpleGuardMono)); - - //Duo Guards - this.updateDigest("Duo Guard Tests"); - res= AvatarGuard.createFromString(A, "test==test2"); - this.updateDigest("Created duo guard " +(res instanceof AvatarSimpleGuardDuo)); + assertTrue(res instanceof AvatarGuardEmpty); + } + + + @Test + public void testMonoGuardCreation(){ + res= AvatarGuard.createFromString(A, "test"); + assertTrue(res instanceof AvatarSimpleGuardMono); + } + + @Test + public void testDuoGuardCreation(){ + res= AvatarGuard.createFromString(A, "test==test2"); + assertTrue(res instanceof AvatarSimpleGuardDuo); res= AvatarGuard.createFromString(A, "key1==key2"); - this.updateDigest("Created duo guard " +(res instanceof AvatarSimpleGuardDuo)); + assertTrue(res instanceof AvatarSimpleGuardDuo); + res= AvatarGuard.createFromString(A, "key1 != key2"); - this.updateDigest("Created duo guard " +(res instanceof AvatarSimpleGuardDuo)); + + assertTrue(res instanceof AvatarSimpleGuardDuo); + res= AvatarGuard.createFromString(A, "key1 != true"); - this.updateDigest("Created duo guard " +(res instanceof AvatarSimpleGuardDuo)); + assertTrue(res instanceof AvatarSimpleGuardDuo); res= AvatarGuard.createFromString(A, "key1 != false"); - this.updateDigest("Created duo guard " +(res instanceof AvatarSimpleGuardDuo)); + assertTrue(res instanceof AvatarSimpleGuardDuo); + res= AvatarGuard.createFromString(A, "key1 != 1"); - this.updateDigest("Created duo guard " +(res instanceof AvatarSimpleGuardDuo)); + assertTrue(res instanceof AvatarSimpleGuardDuo); res= AvatarGuard.createFromString(A, "key1 != a1234"); - this.updateDigest("Created duo guard " +(res instanceof AvatarSimpleGuardDuo)); + assertTrue(res instanceof AvatarSimpleGuardDuo); res= AvatarGuard.createFromString(A, "(a,b)==(c,d)"); - this.updateDigest("Created duo guard with tuple " +(res instanceof AvatarSimpleGuardDuo)); - //Unary Guards - this.updateDigest("Unary Guard Tests"); + assertTrue(res instanceof AvatarSimpleGuardDuo); + } + + @Test + public void testUnaryGuardCreation(){ res= AvatarGuard.createFromString(A, "not(test)"); - this.updateDigest("Created unary guard " +(res instanceof AvatarUnaryGuard)); + assertTrue(res instanceof AvatarUnaryGuard); res= AvatarGuard.createFromString(A, "not(test==test2)"); - this.updateDigest("Created unary guard " +(res instanceof AvatarUnaryGuard)); + assertTrue(res instanceof AvatarUnaryGuard); res= AvatarGuard.createFromString(A, "not(key1==key2)"); - this.updateDigest("Created unary guard " +(res instanceof AvatarUnaryGuard)); + assertTrue(res instanceof AvatarUnaryGuard); res= AvatarGuard.createFromString(B, "not(m__a==key2)"); - this.updateDigest("Created unary guard " +(res instanceof AvatarUnaryGuard)); + assertTrue(res instanceof AvatarUnaryGuard); res= AvatarGuard.createFromString(B, "not(m__a==m__b)"); - this.updateDigest("Created unary guard " +(res instanceof AvatarUnaryGuard)); + assertTrue(res instanceof AvatarUnaryGuard); + + } + @Test + public void testBinaryGuardCreation(){ //Binary Guards - this.updateDigest("Binary Guard Tests"); res= AvatarGuard.createFromString(A, "(key1==true) and (key2==false)"); - this.updateDigest("Binary guard with and " +(res instanceof AvatarBinaryGuard)); + assertTrue(res instanceof AvatarBinaryGuard); res= AvatarGuard.createFromString(A, "(a) and (b)"); - this.updateDigest("Binary guard with tuple " +(res instanceof AvatarBinaryGuard)); + assertTrue(res instanceof AvatarBinaryGuard); res= AvatarGuard.createFromString(A, "(key1==key1) or (key2==key1)"); - this.updateDigest("Binary guard with or " +(res instanceof AvatarBinaryGuard)); + assertTrue(res instanceof AvatarBinaryGuard); res= AvatarGuard.createFromString(A, "((key1==key1) or (key2==key1)) and (m__a==m__b)"); - this.updateDigest("Binary guard with and/or " +(res instanceof AvatarBinaryGuard)); - this.updateDigest("-------------------------------------"); - - */ - //Avatar Specification Tests - + assertTrue(res instanceof AvatarBinaryGuard); + } - } + public static void main(String[] args){ AvatarGuardTests apt = new AvatarGuardTests (); //apt.runTest (); diff --git a/ttool/src/test/java/avatartranslator/AvatarPragmaTests.java b/ttool/src/test/java/avatartranslator/AvatarPragmaTests.java index 13a7446015f07d1df2f101cbd3e296bc49fe34b1..b9b7c0e8e3d05ea225d585f9dfdb4160c31dfc2d 100644 --- a/ttool/src/test/java/avatartranslator/AvatarPragmaTests.java +++ b/ttool/src/test/java/avatartranslator/AvatarPragmaTests.java @@ -295,7 +295,7 @@ public class AvatarPragmaTests { @Test public void testPublicPragmaCreation(){ - res = AvatarPragma.createFromString("Public A.key1 B.key2", bdpragma ,blocks, typeAttributesMap, nameTypeMap, errorAcc); + res = AvatarPragma.createFromString("Public A.key1 B.key2", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); //Check no error assertEquals(res.size(),1); //Check Type @@ -305,84 +305,82 @@ public class AvatarPragmaTests { assertEquals(((AvatarPragmaPublic) res.get(0)).getArgs().get(0).getName(),"key1"); assertEquals(((AvatarPragmaPublic) res.get(0)).getArgs().get(1).getName(),"key2"); } - - public void test(){ -/* - + @Test + public void testPragmaAuthenticityFailWrongArgs(){ + //Fail if wrong # of arguments + res = AvatarPragma.createFromString("Authenticity A.key1 A.key2 B.key1 C.attr", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); + assertEquals(res.size(),0); + res = AvatarPragma.createFromString("Authenticity C.attr", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); + assertEquals(res.size(),0); + } - //Test Public - this.updateDigest("Public Tests"); + @Test + public void testPragmaAuthenticityFailMissingState(){ + //Fail if lack of state + res = AvatarPragma.createFromString("Authenticity A.state.attr", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); + assertEquals(res.size(),0); + } - this.updateDigest("-------------------------------------"); + @Test + public void testPragmaAuthenticityFailAttributeWrongType(){ + //Fail if attributes are not same type + res = AvatarPragma.createFromString("Authenticity A.a1.key1 C.c1.m", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); + assertEquals(res.size(),0); + res = AvatarPragma.createFromString("Authenticity B.b1.m C.c1.d", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); + assertEquals(res.size(),0); + res = AvatarPragma.createFromString("Authenticity B.b1.key2 A.a1.key1", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); + assertEquals(res.size(),0); + } - //Test Authenticity - this.updateDigest("Authenticity Tests"); - //Fail if wrong # of args - res = AvatarPragma.createFromString("Authenticity A.key1 A.key2 B.key1 C.attr", null,blocks, typeAttributesMap, nameTypeMap, errorAcc); - this.updateDigest("Authenticity args count " + (res.size()==0)); - res = AvatarPragma.createFromString("Authenticity C.attr", null,blocks, typeAttributesMap, nameTypeMap, errorAcc); - this.updateDigest("Authenticity args count " + (res.size()==0)); - //Fail if lack of state - res = AvatarPragma.createFromString("Authenticity A.state.attr", null,blocks, typeAttributesMap, nameTypeMap, errorAcc); - this.updateDigest("Missing State " + (res.size()==0)); - //Fail if attributes are not same type - res = AvatarPragma.createFromString("Authenticity A.a1.key1 C.c1.m", null,blocks, typeAttributesMap, nameTypeMap, errorAcc); - this.updateDigest("Incompatible types " + (res.size()==0)); - res = AvatarPragma.createFromString("Authenticity B.b1.m C.c1.d", null,blocks, typeAttributesMap, nameTypeMap, errorAcc); - this.updateDigest("Incompatible types " + (res.size()==0)); - res = AvatarPragma.createFromString("Authenticity B.b1.key2 A.a1.key1", null,blocks, typeAttributesMap, nameTypeMap, errorAcc); - this.updateDigest("Incompatible types " + (res.size()==0)); - //Check no error - res = AvatarPragma.createFromString("Authenticity A.a1.key1 C.c1.attr", null,blocks, typeAttributesMap, nameTypeMap, errorAcc); - this.updateDigest("No error: "+ (res.size()!=0)); - //Check Type - this.updateDigest("Right Type: " + (res.get(0) instanceof AvatarPragmaAuthenticity)); - - //Attribute - AvatarPragmaAuthenticity res3 = (AvatarPragmaAuthenticity) res.get(0); - // this.updateDigest("# of Attributes: " + (res3.getArgs().size() == 2)); - //this.updateDigest("Attr "+ res3.getAttrA()); - //this.updateDigest("Attr "+ res3.getAttrB()); - this.updateDigest("Attr Name "+ res3.getAttrA().getName()); - this.updateDigest("Attr Name "+ res3.getAttrB().getName()); - this.updateDigest("Attr State "+ res3.getAttrA().getState()); - this.updateDigest("Attr State "+ res3.getAttrB().getState()); - //Check multi-creation - res = AvatarPragma.createFromString("Authenticity B.b1.m C.c1.m", null,blocks, typeAttributesMap, nameTypeMap, errorAcc); - this.updateDigest("Multiple creation pass: "+ (res.size()==2)); - res3 = (AvatarPragmaAuthenticity) res.get(1); - // this.updateDigest("# of Attributes: " + (res3.getArgs().size() == 2)); - //this.updateDigest("Attr "+ res3.getAttrA()); - //this.updateDigest("Attr "+ res3.getAttrB()); - this.updateDigest("Attr Name "+ res3.getAttrA().getName()); - this.updateDigest("Attr Name "+ res3.getAttrB().getName()); - this.updateDigest("Attr State "+ res3.getAttrA().getState()); - this.updateDigest("Attr State "+ res3.getAttrB().getState()); - res3 = (AvatarPragmaAuthenticity) res.get(0); - // this.updateDigest("# of Attributes: " + (res3.getArgs().size() == 2)); - this.updateDigest("Attr Name "+ res3.getAttrA().getName()); - this.updateDigest("Attr Name "+ res3.getAttrB().getName()); - this.updateDigest("Attr State "+ res3.getAttrA().getState()); - this.updateDigest("Attr State "+ res3.getAttrB().getState()); - this.updateDigest("-------------------------------------"); + @Test + public void testPragmaAuthenticityCreation(){ + //Check no error + res = AvatarPragma.createFromString("Authenticity A.a1.key1 C.c1.attr", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); + assertEquals(res.size(),1); + //Check Type + assertTrue(res.get(0) instanceof AvatarPragmaAuthenticity); + //Check Attributes + AvatarPragmaAuthenticity res3 = (AvatarPragmaAuthenticity) res.get(0); + assertEquals(res3.getAttrA().getAttribute().getName(),"key1"); + assertEquals(res3.getAttrB().getAttribute().getName(),"attr"); + assertEquals(res3.getAttrA().getState().getName(),"a1"); + assertEquals(res3.getAttrB().getState().getName(),"c1"); + } - - //Test Constants - this.updateDigest("Constant Tests"); - res = AvatarPragma.createFromString("PublicConstant 1 0 a b", null,blocks, typeAttributesMap, nameTypeMap, errorAcc); - this.updateDigest("Right type :" + (res.get(0) instanceof AvatarPragmaConstant)); - AvatarPragmaConstant res5 = (AvatarPragmaConstant) res.get(0); - this.updateDigest("Right number of constants " + (res5.getConstants().size() == 4)); - for (int i=0; i< res5.getConstants().size(); i++){ - this.updateDigest("Constant " + res5.getConstants().get(i).getName()); + @Test + public void testPragmaAuthenticityMultipleCreation(){ + res = AvatarPragma.createFromString("Authenticity B.b1.m C.c1.m", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); + assertEquals(res.size(),2); + AvatarPragmaAuthenticity res3 = (AvatarPragmaAuthenticity) res.get(1); + assertEquals(res3.getAttrA().getAttribute().getName(),"m__b"); + assertEquals(res3.getAttrB().getAttribute().getName(),"m__b"); + assertEquals(res3.getAttrA().getState().getName(),"b1"); + assertEquals(res3.getAttrB().getState().getName(),"c1"); + + res3 = (AvatarPragmaAuthenticity) res.get(0); + assertEquals(res3.getAttrA().getAttribute().getName(),"m__a"); + assertEquals(res3.getAttrB().getAttribute().getName(),"m__a"); + assertEquals(res3.getAttrA().getState().getName(),"b1"); + assertEquals(res3.getAttrB().getState().getName(),"c1"); } - this.updateDigest("-------------------------------------"); -*/ - //Avatar Specification Tests + @Test + public void testPragmaConstant(){ + res = AvatarPragma.createFromString("PublicConstant 1 0 a b", bdpragma, blocks, typeAttributesMap, nameTypeMap, errorAcc); + assertTrue(res.get(0) instanceof AvatarPragmaConstant); + AvatarPragmaConstant res5 = (AvatarPragmaConstant) res.get(0); + assertEquals(res5.getConstants().size(),2); + String[] attrs = new String[]{"a","b"}; + for (int i=0; i< res5.getConstants().size(); i++){ + assertEquals(res5.getConstants().get(i).getName(),attrs[i]); + } + } + + public void test(){ } + public static void main(String[] args){ AvatarPragmaTests apt = new AvatarPragmaTests (); //apt.runTest (); diff --git a/ttool/src/test/java/avatartranslator/AvatarSafetyTests.java b/ttool/src/test/java/avatartranslator/AvatarSafetyTests.java index 1b9150373d9f96425c542fcacdc9357a79d678ab..83d8c656ae054e4c84b96be486c4ff180aae0a49 100644 --- a/ttool/src/test/java/avatartranslator/AvatarSafetyTests.java +++ b/ttool/src/test/java/avatartranslator/AvatarSafetyTests.java @@ -79,8 +79,13 @@ public class AvatarSafetyTests { blocks = new ArrayList<AvatarBDBlock>(); as = new AvatarSpecification("avspec",null); AvatarBlock A = new AvatarBlock("A", null, null); + avatartranslator.AvatarSignal sig = new avatartranslator.AvatarSignal("sig", 0, null); + A.addSignal(sig); AvatarStateMachine Aasm = A.getStateMachine(); - Aasm.addElement(new AvatarActionOnSignal("action_on_signal", null, null)); + AvatarActionOnSignal aaos = new AvatarActionOnSignal("action_on_signal", sig, null); + aaos.setCheckLatency(true); + Aasm.addElement(aaos); + A.addAttribute(new AvatarAttribute("key1", AvatarType.INTEGER, A, null)); A.addAttribute(new AvatarAttribute("key2", AvatarType.INTEGER, A, null)); @@ -124,14 +129,16 @@ public class AvatarSafetyTests { @Test public void testFormLessThanPragma(){ //Test : Form pragma with less than expression - pragma = adpt.checkLatencyPragma("Lat(A.sig,A,sig)<1", blocks, as, null); + pragma = adpt.checkLatencyPragma("Latency(A.sig,A.sig)<1", blocks, as, null); + assertTrue(pragma !=null); } @Test public void testFormGreaterThanPragma(){ //Test : Form pragma with greater than expression - pragma = adpt.checkLatencyPragma("Lat(A.sig,A,sig)>1", blocks, as, null); + pragma = adpt.checkLatencyPragma("Latency(A.sig,A.sig)>1", blocks, as, null); + assertTrue(pragma !=null); }