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