Skip to content
Snippets Groups Projects
Commit 463c9ddf authored by Letitia Li's avatar Letitia Li
Browse files

Performance pragma format syntax checking

parent 019a7498
No related branches found
No related tags found
1 merge request!38Labsoc sec
......@@ -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];
......
......@@ -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(){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment