Skip to content

Commit

Permalink
Add compiler plugin test
Browse files Browse the repository at this point in the history
  • Loading branch information
TharmiganK committed Oct 26, 2023
1 parent 0780714 commit 42db881
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[package]
org = "constraint_test"
name = "sample_21"
version = "0.1.0"
Original file line number Diff line number Diff line change
@@ -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;
};

0 comments on commit 42db881

Please sign in to comment.