From 42db881729f5d94aef9f9d46e2acb5db711f105e Mon Sep 17 00:00:00 2001 From: TharmiganK Date: Thu, 26 Oct 2023 16:36:09 +0530 Subject: [PATCH] Add compiler plugin test --- .../compiler/CompilerPluginTest.java | 17 ++++++++ .../compiler/CompilerPluginTestConstants.java | 3 ++ .../sample_package_21/Ballerina.toml | 4 ++ .../sample_package_21/sample.bal | 42 +++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 compiler-plugin-tests/src/test/resources/ballerina_sources/sample_package_21/Ballerina.toml create mode 100644 compiler-plugin-tests/src/test/resources/ballerina_sources/sample_package_21/sample.bal diff --git a/compiler-plugin-tests/src/test/java/io/ballerina/stdlib/constraint/compiler/CompilerPluginTest.java b/compiler-plugin-tests/src/test/java/io/ballerina/stdlib/constraint/compiler/CompilerPluginTest.java index d83ed40..cd6aa37 100644 --- a/compiler-plugin-tests/src/test/java/io/ballerina/stdlib/constraint/compiler/CompilerPluginTest.java +++ b/compiler-plugin-tests/src/test/java/io/ballerina/stdlib/constraint/compiler/CompilerPluginTest.java @@ -31,6 +31,9 @@ import static io.ballerina.stdlib.constraint.compiler.CompilerPluginTestConstants.ANNOTATION_TAG_NUMBER; import static io.ballerina.stdlib.constraint.compiler.CompilerPluginTestConstants.ANNOTATION_TAG_STRING; import static io.ballerina.stdlib.constraint.compiler.CompilerPluginTestConstants.LENGTH_CONSTRAINT; +import static io.ballerina.stdlib.constraint.compiler.CompilerPluginTestConstants.MAX_DIGITS; +import static io.ballerina.stdlib.constraint.compiler.CompilerPluginTestConstants.MAX_FRACTION_DIGITS; +import static io.ballerina.stdlib.constraint.compiler.CompilerPluginTestConstants.MAX_INTEGER_DIGITS; import static io.ballerina.stdlib.constraint.compiler.CompilerPluginTestConstants.MAX_LENGTH_CONSTRAINT; import static io.ballerina.stdlib.constraint.compiler.CompilerPluginTestConstants.MIN_LENGTH_CONSTRAINT; import static io.ballerina.stdlib.constraint.compiler.CompilerPluginTestConstants.TYPE_ANYDATA_ARRAY; @@ -324,4 +327,18 @@ public void testDateAnnotationTagConstraints() { CompilerPluginTestUtils.assertError101(diagnosticResult, 3, ANNOTATION_TAG_DATE, "CustomRecord"); CompilerPluginTestUtils.assertError101(diagnosticResult, 4, ANNOTATION_TAG_DATE, TYPE_RECORD); } + + @Test + public void testDigitAnnotationTagConstraintsValidity() { + Package currentPackage = CompilerPluginTestUtils.loadPackage("sample_package_21"); + PackageCompilation compilation = currentPackage.getCompilation(); + DiagnosticResult diagnosticResult = compilation.diagnosticResult(); + int expectedErrorCount = 5; + Assert.assertEquals(diagnosticResult.errorCount(), expectedErrorCount); + CompilerPluginTestUtils.assertError104(diagnosticResult, 0, ANNOTATION_TAG_INT, MAX_DIGITS); + CompilerPluginTestUtils.assertError104(diagnosticResult, 1, ANNOTATION_TAG_FLOAT, MAX_INTEGER_DIGITS); + CompilerPluginTestUtils.assertError104(diagnosticResult, 2, ANNOTATION_TAG_FLOAT, MAX_FRACTION_DIGITS); + CompilerPluginTestUtils.assertError104(diagnosticResult, 3, ANNOTATION_TAG_NUMBER, MAX_INTEGER_DIGITS); + CompilerPluginTestUtils.assertError104(diagnosticResult, 4, ANNOTATION_TAG_NUMBER, MAX_FRACTION_DIGITS); + } } diff --git a/compiler-plugin-tests/src/test/java/io/ballerina/stdlib/constraint/compiler/CompilerPluginTestConstants.java b/compiler-plugin-tests/src/test/java/io/ballerina/stdlib/constraint/compiler/CompilerPluginTestConstants.java index 209cc62..801a3fa 100644 --- a/compiler-plugin-tests/src/test/java/io/ballerina/stdlib/constraint/compiler/CompilerPluginTestConstants.java +++ b/compiler-plugin-tests/src/test/java/io/ballerina/stdlib/constraint/compiler/CompilerPluginTestConstants.java @@ -46,4 +46,7 @@ private CompilerPluginTestConstants() {} static final String LENGTH_CONSTRAINT = "length"; static final String MIN_LENGTH_CONSTRAINT = "minLength"; static final String MAX_LENGTH_CONSTRAINT = "maxLength"; + static final String MAX_DIGITS = "maxDigits"; + static final String MAX_INTEGER_DIGITS = "maxIntegerDigits"; + static final String MAX_FRACTION_DIGITS = "maxFractionDigits"; } diff --git a/compiler-plugin-tests/src/test/resources/ballerina_sources/sample_package_21/Ballerina.toml b/compiler-plugin-tests/src/test/resources/ballerina_sources/sample_package_21/Ballerina.toml new file mode 100644 index 0000000..2a548b7 --- /dev/null +++ b/compiler-plugin-tests/src/test/resources/ballerina_sources/sample_package_21/Ballerina.toml @@ -0,0 +1,4 @@ +[package] +org = "constraint_test" +name = "sample_21" +version = "0.1.0" diff --git a/compiler-plugin-tests/src/test/resources/ballerina_sources/sample_package_21/sample.bal b/compiler-plugin-tests/src/test/resources/ballerina_sources/sample_package_21/sample.bal new file mode 100644 index 0000000..e294ebe --- /dev/null +++ b/compiler-plugin-tests/src/test/resources/ballerina_sources/sample_package_21/sample.bal @@ -0,0 +1,42 @@ +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.com) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +import ballerina/constraint; + +@constraint:Int { + maxDigits: -1 +} +type Integer int; + +@constraint:Float { + maxIntegerDigits: -4, + maxFractionDigits: { + value: 0, + message: "maxFractionDigits should be a positive integer" + } +} +type Float float; + +type Record record { + @constraint:Number { + maxIntegerDigits: { + value: -2, + message: "maxIntegerDigits should be a positive integer" + } + } + int i; + @constraint:Number {maxFractionDigits: 0} + decimal d; +};