From 507811215aa32942d5aa5cc46ff5df6397e6e8e5 Mon Sep 17 00:00:00 2001 From: hugohills-regnosys Date: Fri, 28 Mar 2025 14:25:53 +0000 Subject: [PATCH] Handling boolean nulls --- .../function/FunctionGeneratorMetaTest.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/rosetta-integration-tests/src/test/java/com/regnosys/rosetta/generator/java/function/FunctionGeneratorMetaTest.java b/rosetta-integration-tests/src/test/java/com/regnosys/rosetta/generator/java/function/FunctionGeneratorMetaTest.java index e8cff71b76..567e5b5a5b 100644 --- a/rosetta-integration-tests/src/test/java/com/regnosys/rosetta/generator/java/function/FunctionGeneratorMetaTest.java +++ b/rosetta-integration-tests/src/test/java/com/regnosys/rosetta/generator/java/function/FunctionGeneratorMetaTest.java @@ -1,6 +1,8 @@ package com.regnosys.rosetta.generator.java.function; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Map; @@ -1157,4 +1159,36 @@ result string (1..1) assertEquals(expected, result); } + + @Test + void shouldEvaluateEmptyBooleanAttributesToFalse() { + var model = """ + type Foo: + field1 boolean (0..1) // set to True + field2 boolean (0..1) // set to empty + + func MyFunc: + inputs: + foo Foo (0..1) + output: + result boolean (1..1) // should evaluate to false + + set result: + if foo -> field1 and foo -> field2 + then True + else False + """; + + var code = generatorTestHelper.generateCode(model); + + var classes = generatorTestHelper.compileToClasses(code); + + var myFunc = functionGeneratorHelper.createFunc(classes, "MyFunc"); + + var foo = generatorTestHelper.createInstanceUsingBuilder(classes, new RosettaJavaPackages.RootPackage("com.rosetta.test.model"), "Foo", Map.of("field1", true)); + + var result = functionGeneratorHelper.invokeFunc(myFunc, Boolean.class, foo); + + assertTrue(result); // this is wrong + } }