From 463c9ddf5cf14fcc24edcd980a17b2e0107a81c0 Mon Sep 17 00:00:00 2001 From: Letitia Li <letitia.li@telecom-paristech.fr> Date: Tue, 6 Feb 2018 11:44:53 +0100 Subject: [PATCH] Performance pragma format syntax checking --- .../java/ui/AvatarDesignPanelTranslator.java | 8 +++---- .../avatartranslator/AvatarSafetyTests.java | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/java/ui/AvatarDesignPanelTranslator.java b/src/main/java/ui/AvatarDesignPanelTranslator.java index 892e452735..3cc5cf8ea3 100644 --- a/src/main/java/ui/AvatarDesignPanelTranslator.java +++ b/src/main/java/ui/AvatarDesignPanelTranslator.java @@ -241,7 +241,7 @@ public class AvatarDesignPanelTranslator { } public AvatarPragmaLatency checkPerformancePragma(String _pragma, List<AvatarBDBlock> _blocks, AvatarSpecification as, TGComponent tgc){ - if (_pragma.contains("=") || (!_pragma.contains(">") && !_pragma.contains("<") && !_pragma.contains("?")) || !_pragma.contains("Latency")){ + if (_pragma.contains("=") || (!_pragma.contains(">") && !_pragma.contains("<") && !_pragma.contains("?")) || !_pragma.contains("Latency(")){ UICheckingError ce = new UICheckingError(CheckingError.STRUCTURE_ERROR, "No latency expression found in pragma "+ _pragma); ce.setTDiagramPanel(adp.getAvatarBDPanel()); ce.setTGComponent(tgc); @@ -256,7 +256,6 @@ public class AvatarDesignPanelTranslator { String p1 = pragma.split(",")[0]; - //Throw error if lack of '.' in block.signal if (!p1.contains(".")){ UICheckingError ce = new UICheckingError(CheckingError.STRUCTURE_ERROR, "Invalid block.signal format in pragma " + _pragma); @@ -266,9 +265,8 @@ public class AvatarDesignPanelTranslator { TraceManager.addDev("Invalid block.signal format in pragma " + _pragma); return null; } - String block1 = p1.split("\\.")[0]; - String state1 = p1.split("\\.")[1]; + String state1 = p1.split("\\.",-1)[1]; AvatarBlock bl1; AvatarStateMachineElement st1=null; List<String> id1= new ArrayList<String>(); @@ -323,7 +321,7 @@ public class AvatarDesignPanelTranslator { } String block2 = p2.split("\\.")[0]; - String state2 = p2.split("\\.")[1]; + String state2 = p2.split("\\.",-1)[1]; diff --git a/ttool/src/test/java/avatartranslator/AvatarSafetyTests.java b/ttool/src/test/java/avatartranslator/AvatarSafetyTests.java index 172fb14e55..81489cb4c8 100644 --- a/ttool/src/test/java/avatartranslator/AvatarSafetyTests.java +++ b/ttool/src/test/java/avatartranslator/AvatarSafetyTests.java @@ -129,9 +129,19 @@ public class AvatarSafetyTests { //Fail if does not contain 'Latency()' pragma = adpt.checkPerformancePragma("Lat(b,s)<1", blocks, as, null); assertNull(pragma); + //Fail if missing comma + pragma = adpt.checkPerformancePragma("Latency(bs)<1", blocks, as, null); + assertNull(pragma); //Fail if unmatched ')' pragma = adpt.checkPerformancePragma("Latency(b,s<1", blocks, as, null); assertNull(pragma); + //Fail if invalid comparison sign + pragma = adpt.checkPerformancePragma("Latency(b,s)-1", blocks, as, null); + assertNull(pragma); + pragma = adpt.checkPerformancePragma("Latency(b,s)*1", blocks, as, null); + assertNull(pragma); + pragma = adpt.checkPerformancePragma("Latency(b<s),1", blocks, as, null); + assertNull(pragma); } @Test @@ -217,6 +227,18 @@ public class AvatarSafetyTests { assertEquals(pragma.getId2().size(),2); } + + @Test + public void testFailInvalidStateFormatPerformancePragma(){ + pragma = adpt.checkPerformancePragma("Latency(A,C.c1)<1", blocks, as, null); + assertTrue(pragma ==null); + pragma = adpt.checkPerformancePragma("Latency(A.,C.c1)<1", blocks, as, null); + assertTrue(pragma ==null); + pragma = adpt.checkPerformancePragma("Latency(B.sig2,C)<1", blocks, as, null); + assertTrue(pragma ==null); + pragma = adpt.checkPerformancePragma("Latency(B.sig2,C.)<1", blocks, as, null); + assertTrue(pragma ==null); + } @Test public void testFormAvatarStatePragma(){ -- GitLab