diff --git a/src/test/java/com/ezylang/evalex/data/EvaluationValueTest.java b/src/test/java/com/ezylang/evalex/data/EvaluationValueTest.java index f05a1c6..1dccd49 100644 --- a/src/test/java/com/ezylang/evalex/data/EvaluationValueTest.java +++ b/src/test/java/com/ezylang/evalex/data/EvaluationValueTest.java @@ -37,14 +37,14 @@ class EvaluationValueTest { @Test void testUnsupportedDataType() { final ExpressionConfiguration configuration = defaultConfiguration(); - assertThatThrownBy(() -> new EvaluationValue(Locale.FRANCE, configuration)) + assertThatThrownBy(() -> EvaluationValue.of(Locale.FRANCE, configuration)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Unsupported data type 'java.util.Locale'"); } @Test void testString() { - EvaluationValue value = new EvaluationValue("Hello World", defaultConfiguration()); + EvaluationValue value = EvaluationValue.of("Hello World", defaultConfiguration()); assertThat(value.isStringValue()).isTrue(); assertThat(value.isNumberValue()).isFalse(); @@ -60,7 +60,7 @@ class EvaluationValueTest { @Test void testStringBuilder() { EvaluationValue value = - new EvaluationValue(new StringBuilder("Hello StringBuilder World"), defaultConfiguration()); + EvaluationValue.of(new StringBuilder("Hello StringBuilder World"), defaultConfiguration()); assertThat(value.isStringValue()).isTrue(); assertDataIsCorrect( @@ -75,7 +75,7 @@ class EvaluationValueTest { @Test void testCharacter() { - EvaluationValue value = new EvaluationValue('a', defaultConfiguration()); + EvaluationValue value = EvaluationValue.of('a', defaultConfiguration()); assertThat(value.isStringValue()).isTrue(); assertDataIsCorrect( @@ -84,7 +84,7 @@ class EvaluationValueTest { @Test void testBooleanTrue() { - EvaluationValue value = new EvaluationValue(true, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(true, defaultConfiguration()); assertThat(value.isBooleanValue()).isTrue(); assertThat(value.isNumberValue()).isFalse(); @@ -99,7 +99,7 @@ class EvaluationValueTest { @Test void testBooleanFalse() { - EvaluationValue value = new EvaluationValue(false, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(false, defaultConfiguration()); assertThat(value.isBooleanValue()).isTrue(); assertDataIsCorrect( @@ -108,7 +108,7 @@ class EvaluationValueTest { @Test void testBooleanString() { - EvaluationValue value = new EvaluationValue("true", defaultConfiguration()); + EvaluationValue value = EvaluationValue.of("true", defaultConfiguration()); assertThat(value.isStringValue()).isTrue(); assertDataIsCorrect( @@ -117,7 +117,7 @@ class EvaluationValueTest { @Test void testBooleanNumberZero() { - EvaluationValue value = new EvaluationValue(BigDecimal.ZERO, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(BigDecimal.ZERO, defaultConfiguration()); assertThat(value.isNumberValue()).isTrue(); assertDataIsCorrect( @@ -137,7 +137,7 @@ class EvaluationValueTest { @Test void testInstant() { Instant instant = Instant.parse("2022-10-30T00:00:00Z"); - EvaluationValue value = new EvaluationValue(instant, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(instant, defaultConfiguration()); assertThat(value.isDateTimeValue()).isTrue(); assertDataIsCorrect( @@ -148,7 +148,7 @@ class EvaluationValueTest { void testLocalDateCETDaylightSavingTime() { LocalDate localDate = LocalDate.parse("2022-10-20"); EvaluationValue value = - new EvaluationValue( + EvaluationValue.of( localDate, ExpressionConfiguration.builder().zoneId(ZoneId.of("CET")).build()); assertThat(value.isDateTimeValue()).isTrue(); @@ -166,7 +166,7 @@ class EvaluationValueTest { void testLocalDateCETNoDaylightSavingTime() { LocalDate localDate = LocalDate.parse("2022-11-30"); EvaluationValue value = - new EvaluationValue( + EvaluationValue.of( localDate, ExpressionConfiguration.builder().zoneId(ZoneId.of("CET")).build()); assertThat(value.isDateTimeValue()).isTrue(); @@ -184,7 +184,7 @@ class EvaluationValueTest { void testLocalDateTimeDaylightSavingTime() { LocalDateTime localDateTime = LocalDateTime.parse("2022-10-20T11:20:30"); EvaluationValue value = - new EvaluationValue( + EvaluationValue.of( localDateTime, ExpressionConfiguration.builder().zoneId(ZoneId.of("CET")).build()); assertThat(value.isDateTimeValue()).isTrue(); @@ -202,7 +202,7 @@ class EvaluationValueTest { void testLocalDateTimeNoDaylightSavingTime() { LocalDateTime localDateTime = LocalDateTime.parse("2022-11-20T11:20:30"); EvaluationValue value = - new EvaluationValue( + EvaluationValue.of( localDateTime, ExpressionConfiguration.builder().zoneId(ZoneId.of("CET")).build()); assertThat(value.isDateTimeValue()).isTrue(); @@ -220,7 +220,7 @@ class EvaluationValueTest { void testZonedDateTime() { ZonedDateTime zonedDateTime = ZonedDateTime.of(LocalDateTime.of(2022, 10, 30, 11, 20, 30), ZoneId.of("GMT+05:30")); - EvaluationValue value = new EvaluationValue(zonedDateTime, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(zonedDateTime, defaultConfiguration()); assertThat(value.isDateTimeValue()).isTrue(); assertDataIsCorrect( @@ -237,7 +237,7 @@ class EvaluationValueTest { void testOffsetDateTime() { OffsetDateTime offsetDateTime = OffsetDateTime.of(LocalDateTime.of(2022, 10, 30, 11, 20, 30), ZoneOffset.of("+05:30")); - EvaluationValue value = new EvaluationValue(offsetDateTime, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(offsetDateTime, defaultConfiguration()); assertThat(value.isDateTimeValue()).isTrue(); assertDataIsCorrect( @@ -252,7 +252,7 @@ class EvaluationValueTest { @Test void testStringDateTime() { - EvaluationValue value = new EvaluationValue("2022-10-30T11:20:30Z", defaultConfiguration()); + EvaluationValue value = EvaluationValue.of("2022-10-30T11:20:30Z", defaultConfiguration()); assertThat(value.isDateTimeValue()).isFalse(); assertDataIsCorrect( @@ -267,7 +267,7 @@ class EvaluationValueTest { @Test void testDuration() { - EvaluationValue value = new EvaluationValue(Duration.ofMinutes(1), defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(Duration.ofMinutes(1), defaultConfiguration()); assertThat(value.isDurationValue()).isTrue(); assertDataIsCorrect( @@ -282,7 +282,7 @@ class EvaluationValueTest { @Test void testStringDuration() { - EvaluationValue value = new EvaluationValue("PT24H", defaultConfiguration()); + EvaluationValue value = EvaluationValue.of("PT24H", defaultConfiguration()); assertThat(value.isDurationValue()).isFalse(); assertDataIsCorrect( @@ -291,7 +291,7 @@ class EvaluationValueTest { @Test void testBigDecimal() { - EvaluationValue value = new EvaluationValue(new BigDecimal("123.5"), defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(new BigDecimal("123.5"), defaultConfiguration()); assertThat(value.isNumberValue()).isTrue(); assertDataIsCorrect( @@ -306,7 +306,7 @@ class EvaluationValueTest { @Test void testFloat() { - EvaluationValue value = new EvaluationValue((float) 4.5, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of((float) 4.5, defaultConfiguration()); assertThat(value.isNumberValue()).isTrue(); assertDataIsCorrect( @@ -321,7 +321,7 @@ class EvaluationValueTest { @Test void testDouble() { - EvaluationValue value = new EvaluationValue(8.5, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(8.5, defaultConfiguration()); assertThat(value.isNumberValue()).isTrue(); assertDataIsCorrect( @@ -336,7 +336,7 @@ class EvaluationValueTest { @Test void testLong() { - EvaluationValue value = new EvaluationValue(6L, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(6L, defaultConfiguration()); assertThat(value.isNumberValue()).isTrue(); assertDataIsCorrect( @@ -351,7 +351,7 @@ class EvaluationValueTest { @Test void testInteger() { - EvaluationValue value = new EvaluationValue(5, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(5, defaultConfiguration()); assertThat(value.isNumberValue()).isTrue(); assertDataIsCorrect( @@ -366,7 +366,7 @@ class EvaluationValueTest { @Test void testShort() { - EvaluationValue value = new EvaluationValue((short) 4, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of((short) 4, defaultConfiguration()); assertThat(value.isNumberValue()).isTrue(); assertDataIsCorrect( @@ -381,7 +381,7 @@ class EvaluationValueTest { @Test void testByte() { - EvaluationValue value = new EvaluationValue((byte) 3, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of((byte) 3, defaultConfiguration()); assertThat(value.isNumberValue()).isTrue(); assertDataIsCorrect( @@ -397,7 +397,7 @@ class EvaluationValueTest { @Test void testArray() { EvaluationValue value = - new EvaluationValue( + EvaluationValue.of( Arrays.asList(new BigDecimal(1), new BigDecimal(2)), defaultConfiguration()); assertThat(value.isArrayValue()).isTrue(); @@ -417,14 +417,14 @@ class EvaluationValueTest { @Test void testArrayEmpty() { - EvaluationValue value = new EvaluationValue(new BigDecimal(1), defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(new BigDecimal(1), defaultConfiguration()); assertThat(value.getArrayValue()).isEmpty(); } @Test void testArrayNull() { - EvaluationValue value = new EvaluationValue(null, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(null, defaultConfiguration()); assertThat(value.getArrayValue()).isNull(); } @@ -434,7 +434,7 @@ class EvaluationValueTest { Map structure = new HashMap<>(); structure.put("a", "Hello"); structure.put("b", new BigDecimal(99)); - EvaluationValue value = new EvaluationValue(structure, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(structure, defaultConfiguration()); assertThat(value.isStructureValue()).isTrue(); assertThat(value.isNumberValue()).isFalse(); @@ -452,14 +452,14 @@ class EvaluationValueTest { @Test void testStructureEmpty() { - EvaluationValue value = new EvaluationValue(new BigDecimal(1), defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(new BigDecimal(1), defaultConfiguration()); assertThat(value.getStructureValue()).isEmpty(); } @Test void testStructureNull() { - EvaluationValue value = new EvaluationValue(null, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(null, defaultConfiguration()); assertThat(value.getStructureValue()).isNull(); } @@ -467,7 +467,7 @@ class EvaluationValueTest { @Test void testExpressionNode() { ASTNode node = new ASTNode(new Token(1, "a", TokenType.VARIABLE_OR_CONSTANT)); - EvaluationValue value = new EvaluationValue(node, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(node, defaultConfiguration()); assertThat(value.isExpressionNode()).isTrue(); assertThat(value.isNumberValue()).isFalse(); @@ -489,7 +489,7 @@ class EvaluationValueTest { @Test void testExpressionNodeReturnsNull() { - EvaluationValue value = new EvaluationValue(false, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(false, defaultConfiguration()); assertThat(value.getExpressionNode()).isNull(); } @@ -504,31 +504,31 @@ class EvaluationValueTest { @Test void testCompare() { - assertThat(new EvaluationValue("Hello", defaultConfiguration())) - .isEqualByComparingTo(new EvaluationValue("Hello", defaultConfiguration())); - assertThat(new EvaluationValue(123, defaultConfiguration())) - .isEqualByComparingTo(new EvaluationValue(123, defaultConfiguration())); - assertThat(new EvaluationValue(true, defaultConfiguration())) - .isEqualByComparingTo(new EvaluationValue(true, defaultConfiguration())); + assertThat(EvaluationValue.of("Hello", defaultConfiguration())) + .isEqualByComparingTo(EvaluationValue.of("Hello", defaultConfiguration())); + assertThat(EvaluationValue.of(123, defaultConfiguration())) + .isEqualByComparingTo(EvaluationValue.of(123, defaultConfiguration())); + assertThat(EvaluationValue.of(true, defaultConfiguration())) + .isEqualByComparingTo(EvaluationValue.of(true, defaultConfiguration())); - assertThat(new EvaluationValue("Hello", defaultConfiguration())) - .isGreaterThan(new EvaluationValue("Hell", defaultConfiguration())); - assertThat(new EvaluationValue(124, defaultConfiguration())) - .isGreaterThan(new EvaluationValue(123, defaultConfiguration())); - assertThat(new EvaluationValue(true, defaultConfiguration())) - .isGreaterThan(new EvaluationValue(false, defaultConfiguration())); + assertThat(EvaluationValue.of("Hello", defaultConfiguration())) + .isGreaterThan(EvaluationValue.of("Hell", defaultConfiguration())); + assertThat(EvaluationValue.of(124, defaultConfiguration())) + .isGreaterThan(EvaluationValue.of(123, defaultConfiguration())); + assertThat(EvaluationValue.of(true, defaultConfiguration())) + .isGreaterThan(EvaluationValue.of(false, defaultConfiguration())); - assertThat(new EvaluationValue("Hell", defaultConfiguration())) - .isLessThan(new EvaluationValue("Hello", defaultConfiguration())); - assertThat(new EvaluationValue(123, defaultConfiguration())) - .isLessThan(new EvaluationValue(124, defaultConfiguration())); - assertThat(new EvaluationValue(false, defaultConfiguration())) - .isLessThan(new EvaluationValue(true, defaultConfiguration())); + assertThat(EvaluationValue.of("Hell", defaultConfiguration())) + .isLessThan(EvaluationValue.of("Hello", defaultConfiguration())); + assertThat(EvaluationValue.of(123, defaultConfiguration())) + .isLessThan(EvaluationValue.of(124, defaultConfiguration())); + assertThat(EvaluationValue.of(false, defaultConfiguration())) + .isLessThan(EvaluationValue.of(true, defaultConfiguration())); } @Test void testNull() { - EvaluationValue value = new EvaluationValue(null, defaultConfiguration()); + EvaluationValue value = EvaluationValue.of(null, defaultConfiguration()); assertThat(value.isStringValue()).isFalse(); assertThat(value.isNumberValue()).isFalse(); @@ -550,14 +550,14 @@ class EvaluationValueTest { @Test void nestedEvaluationValue() { try { - EvaluationValue value1 = new EvaluationValue("Hello", defaultConfiguration()); - EvaluationValue value2 = new EvaluationValue("World", defaultConfiguration()); + EvaluationValue value1 = EvaluationValue.of("Hello", defaultConfiguration()); + EvaluationValue value2 = EvaluationValue.of("World", defaultConfiguration()); Map structure = new HashMap<>(); structure.put("a", value1); structure.put("b", value2); - EvaluationValue structureMap = new EvaluationValue(structure, defaultConfiguration()); + EvaluationValue structureMap = EvaluationValue.of(structure, defaultConfiguration()); Expression exp = new Expression("value.a == \"Hello\"").with("value", structureMap); diff --git a/src/test/java/com/ezylang/evalex/functions/datetime/ZoneIdConverterTest.java b/src/test/java/com/ezylang/evalex/functions/datetime/ZoneIdConverterTest.java index 0b70a62..3983884 100644 --- a/src/test/java/com/ezylang/evalex/functions/datetime/ZoneIdConverterTest.java +++ b/src/test/java/com/ezylang/evalex/functions/datetime/ZoneIdConverterTest.java @@ -34,7 +34,7 @@ class ZoneIdConverterTest { } @Test - void testConversionFails() throws Exception { + void testConversionFails() { Token testToken = new Token(1, "Mars/Olympus_Mons", Token.TokenType.STRING_LITERAL); assertThatThrownBy(() -> ZoneIdConverter.convert(testToken, testToken.getValue())) diff --git a/src/test/java/com/ezylang/evalex/parser/TokenizerStringLiteralTest.java b/src/test/java/com/ezylang/evalex/parser/TokenizerStringLiteralTest.java index 8c222d3..da322c1 100644 --- a/src/test/java/com/ezylang/evalex/parser/TokenizerStringLiteralTest.java +++ b/src/test/java/com/ezylang/evalex/parser/TokenizerStringLiteralTest.java @@ -21,6 +21,8 @@ import com.ezylang.evalex.Expression; import com.ezylang.evalex.config.ExpressionConfiguration; import com.ezylang.evalex.parser.Token.TokenType; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; class TokenizerStringLiteralTest extends BaseParserTest { @@ -118,34 +120,22 @@ class TokenizerStringLiteralTest extends BaseParserTest { new Token(15, "'World'", TokenType.STRING_LITERAL)); } - @Test - void testErrorUnmatchedSingleQuoteStart() { - ExpressionConfiguration config = - ExpressionConfiguration.builder().singleQuoteStringLiteralsAllowed(true).build(); - - assertThatThrownBy(() -> new Tokenizer("'hello", config).parse()) - .isInstanceOf(ParseException.class) - .hasMessage("Closing quote not found"); - } - - @Test - void testErrorUnmatchedSingleQuoteOffset() { + @ParameterizedTest + @CsvSource( + delimiter = ':', + quoteCharacter = '|', + value = { + "'hello : Closing quote not found", + "test 'hello : Closing quote not found", + "test\" : Closing quote not found" + }) + void testUnmatchedQuotes(String input, String expectedMessage) { ExpressionConfiguration config = ExpressionConfiguration.builder().singleQuoteStringLiteralsAllowed(true).build(); - assertThatThrownBy(() -> new Tokenizer("test 'hello", config).parse()) + assertThatThrownBy(() -> new Tokenizer(input, config).parse()) .isInstanceOf(ParseException.class) - .hasMessage("Closing quote not found"); - } - - @Test - void testErrorUnmatchedDelimiters() { - ExpressionConfiguration config = - ExpressionConfiguration.builder().singleQuoteStringLiteralsAllowed(true).build(); - - assertThatThrownBy(() -> new Tokenizer("'test\"", config).parse()) - .isInstanceOf(ParseException.class) - .hasMessage("Closing quote not found"); + .hasMessage(expectedMessage); } @Test