From c00cd35403e6954c087d04760852a58d04b9ded2 Mon Sep 17 00:00:00 2001 From: TCHERNIATINSKY <philippe.tcherniatinsky@inrae.fr> Date: Tue, 1 Jun 2021 16:01:46 +0200 Subject: [PATCH 1/4] Ajout d'un test en exception sur GroovyLineChecker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ce test est une documentation pour utiliser Groovy comme "transformer" : par exemple dans referenceLinechecker récupérer le resultat d'une expression groovy pour une l'utiliser dans une autre validation. Ici la valeur récupérée est "261.15" --- .../checker/GroovyLineCheckerTest.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java b/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java index 89f9842c1..15afd0f85 100644 --- a/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java +++ b/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java @@ -3,6 +3,7 @@ package fr.inra.oresing.checker; import com.google.common.collect.ImmutableMap; import fr.inra.oresing.OreSiTechnicalException; import fr.inra.oresing.model.VariableComponentKey; +import fr.inra.oresing.rest.ValidationCheckResult; import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import lombok.extern.slf4j.Slf4j; @@ -67,6 +68,50 @@ public class GroovyLineCheckerTest { } } + @Test() + public void testCheckerWithNonBooleanValue() { + String expression = String.join("\n" + , "Integer température = Integer.parseInt(datum.get(\"temperature\").get(\"valeur\"));" + , "String unité = datum.get(\"temperature\").get(\"unité\");" + , "if (\"°C\".equals(unité)) {" + , " return température +273.15;" + , "} else if (\"kelvin\".equals(unité)) {" + , " return température;" + , "}" + , "throw new IllegalArgumentException(\"unité inconnue, \" + unité);" + ); + String wrongExpression = expression.replace("Integer", "Integre"); + + Assert.assertFalse(GroovyLineChecker.validateExpression(expression).isPresent()); + Optional<GroovyLineChecker.CompilationError> compilationErrorOptional = GroovyLineChecker.validateExpression(wrongExpression); + Assert.assertTrue(compilationErrorOptional.isPresent()); + compilationErrorOptional.ifPresent(compilationError -> { + Assert.assertTrue(compilationError.getMessage().contains("Integre")); + }); + + GroovyLineChecker groovyLineChecker = GroovyLineChecker.forExpression(expression); + ImmutableMap<VariableComponentKey, String> validDatum = + ImmutableMap.of( + new VariableComponentKey("temperature", "valeur"), "-12", + new VariableComponentKey("temperature", "unité"), "°C" + ); + ImmutableMap<VariableComponentKey, String> invalidDatum = + ImmutableMap.of( + new VariableComponentKey("temperature", "valeur"), "-12", + new VariableComponentKey("temperature", "unité"), "kelvin" + ); + ImmutableMap<VariableComponentKey, String> invalidDatum2 = + ImmutableMap.of( + new VariableComponentKey("temperature", "valeur"), "-12", + new VariableComponentKey("temperature", "unité"), "degrés" + ); + try { + ValidationCheckResult validation = groovyLineChecker.check(validDatum); + } catch (OreSiTechnicalException e) { + Assert.assertTrue(e.getMessage().contains("L'évaluation de l’expression n'a pas retourné une valeur booléenne mais 261.15.")); + } + } + @Test @Ignore("juste un essai") public void testJShell() { -- GitLab From 6926a918f483abe30afa357266f9ef2dc7598e51 Mon Sep 17 00:00:00 2001 From: Brendan Le Ny <bleny@codelutin.com> Date: Fri, 11 Jun 2021 10:38:37 +0200 Subject: [PATCH 2/4] Supprime du code mort et en doublon --- .../oresing/checker/GroovyLineCheckerTest.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java b/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java index 15afd0f85..14d9afa02 100644 --- a/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java +++ b/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java @@ -80,14 +80,6 @@ public class GroovyLineCheckerTest { , "}" , "throw new IllegalArgumentException(\"unité inconnue, \" + unité);" ); - String wrongExpression = expression.replace("Integer", "Integre"); - - Assert.assertFalse(GroovyLineChecker.validateExpression(expression).isPresent()); - Optional<GroovyLineChecker.CompilationError> compilationErrorOptional = GroovyLineChecker.validateExpression(wrongExpression); - Assert.assertTrue(compilationErrorOptional.isPresent()); - compilationErrorOptional.ifPresent(compilationError -> { - Assert.assertTrue(compilationError.getMessage().contains("Integre")); - }); GroovyLineChecker groovyLineChecker = GroovyLineChecker.forExpression(expression); ImmutableMap<VariableComponentKey, String> validDatum = @@ -95,16 +87,6 @@ public class GroovyLineCheckerTest { new VariableComponentKey("temperature", "valeur"), "-12", new VariableComponentKey("temperature", "unité"), "°C" ); - ImmutableMap<VariableComponentKey, String> invalidDatum = - ImmutableMap.of( - new VariableComponentKey("temperature", "valeur"), "-12", - new VariableComponentKey("temperature", "unité"), "kelvin" - ); - ImmutableMap<VariableComponentKey, String> invalidDatum2 = - ImmutableMap.of( - new VariableComponentKey("temperature", "valeur"), "-12", - new VariableComponentKey("temperature", "unité"), "degrés" - ); try { ValidationCheckResult validation = groovyLineChecker.check(validDatum); } catch (OreSiTechnicalException e) { -- GitLab From 09d2b0b53d9983d7564c739fe2dc7450ecae0e60 Mon Sep 17 00:00:00 2001 From: Brendan Le Ny <bleny@codelutin.com> Date: Fri, 11 Jun 2021 10:38:54 +0200 Subject: [PATCH 3/4] =?UTF-8?q?Le=20test=20doit=20=C3=A9chouer=20si=20l'ex?= =?UTF-8?q?ception=20attendue=20n'est=20pas=20lev=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java b/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java index 14d9afa02..a26557835 100644 --- a/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java +++ b/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java @@ -89,6 +89,7 @@ public class GroovyLineCheckerTest { ); try { ValidationCheckResult validation = groovyLineChecker.check(validDatum); + Assert.fail("une exception aurait dû être levée"); } catch (OreSiTechnicalException e) { Assert.assertTrue(e.getMessage().contains("L'évaluation de l’expression n'a pas retourné une valeur booléenne mais 261.15.")); } -- GitLab From 19e00018d25d4305a70b3445925b73d0add0c7b2 Mon Sep 17 00:00:00 2001 From: Brendan Le Ny <bleny@codelutin.com> Date: Fri, 11 Jun 2021 10:39:24 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Retire=20des=20parenth=C3=A8ses=20inutiles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fr/inra/oresing/checker/GroovyLineCheckerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java b/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java index a26557835..47ce879aa 100644 --- a/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java +++ b/src/test/java/fr/inra/oresing/checker/GroovyLineCheckerTest.java @@ -68,7 +68,7 @@ public class GroovyLineCheckerTest { } } - @Test() + @Test public void testCheckerWithNonBooleanValue() { String expression = String.join("\n" , "Integer température = Integer.parseInt(datum.get(\"temperature\").get(\"valeur\"));" -- GitLab