diff options
| author | Yvan Lussaud | 2016-01-07 09:15:04 +0000 |
|---|---|---|
| committer | Yvan Lussaud | 2016-01-07 09:15:04 +0000 |
| commit | d19f1c1c64970feb88e11d6caa4c6a77261d50a2 (patch) | |
| tree | 801423d44b6d98b92b269e412803dcdaf4322560 | |
| parent | a16eb4e1c46a9490835a8e9fbdf235a275957f02 (diff) | |
| download | org.eclipse.acceleo-d19f1c1c64970feb88e11d6caa4c6a77261d50a2.tar.gz org.eclipse.acceleo-d19f1c1c64970feb88e11d6caa4c6a77261d50a2.tar.xz org.eclipse.acceleo-d19f1c1c64970feb88e11d6caa4c6a77261d50a2.zip | |
Fixed null variable error when null.
Change-Id: I04a14aa251628b068602f104c6529d189a8068c0
2 files changed, 18 insertions, 3 deletions
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/EvaluationServices.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/EvaluationServices.java index aa8f4f3b4..d7e15e99d 100644 --- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/EvaluationServices.java +++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/EvaluationServices.java @@ -82,7 +82,7 @@ public class EvaluationServices extends AbstractLanguageServices { Diagnostic diagnostic) { try { Object result = variableDefinitions.get(variableName); - if (result == null) { + if (result == null && !variableDefinitions.containsKey(variableName)) { Nothing placeHolder = nothing(VARIABLE_NOT_FOUND, variableName); addDiagnosticFor(diagnostic, Diagnostic.ERROR, placeHolder); result = placeHolder; diff --git a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/runtime/test/EvaluationServicesTest.java b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/runtime/test/EvaluationServicesTest.java index 529b4c02a..a0143526e 100644 --- a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/runtime/test/EvaluationServicesTest.java +++ b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/runtime/test/EvaluationServicesTest.java @@ -83,6 +83,7 @@ public class EvaluationServicesTest { variables = new HashMap<String, Object>(); variables.put("x", 1); variables.put("y", 2); + variables.put("z", null); services = new EvaluationServices(queryEnvironment); } @@ -90,9 +91,21 @@ public class EvaluationServicesTest { * query the value of an existing variable. Expected result : the value set for the variable. */ @Test - public void getExistingVariableTest() { + public void getVariableValueNotNull() { Diagnostic status = new BasicDiagnostic(); + assertEquals(1, services.getVariableValue(variables, "x", status)); + + assertEquals(Diagnostic.OK, status.getSeverity()); + assertTrue(status.getChildren().isEmpty()); + } + + @Test + public void getVariableValueNull() { + Diagnostic status = new BasicDiagnostic(); + + assertEquals(null, services.getVariableValue(variables, "z", status)); + assertEquals(Diagnostic.OK, status.getSeverity()); assertTrue(status.getChildren().isEmpty()); } @@ -102,9 +115,11 @@ public class EvaluationServicesTest { * message. */ @Test - public void getNonExistingVariableTest() { + public void getVariableValueNonExisting() { Diagnostic status = new BasicDiagnostic(); + assertTrue(services.getVariableValue(variables, "xx", status) instanceof Nothing); + assertEquals(Diagnostic.ERROR, status.getSeverity()); assertEquals(1, status.getChildren().size()); |
