Skip to content

Commit ef5bb59

Browse files
committed
Update test cases for script
1 parent 2bbbbbd commit ef5bb59

36 files changed

+1278
-1164
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,5 @@ build/
4343
.vscode/
4444
.DS_Store
4545

46+
### Temporary Files ###
47+
/temp/**

src/test/java/com/relogiclabs/jschema/test/external/ExternalFunctions.java

+31-39
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import com.relogiclabs.jschema.node.JNumber;
1212
import com.relogiclabs.jschema.node.JReceiver;
1313
import com.relogiclabs.jschema.node.JString;
14-
import com.relogiclabs.jschema.tree.RuntimeContext;
1514

1615
import java.util.Arrays;
1716

@@ -26,17 +25,13 @@ public class ExternalFunctions extends FunctionProvider {
2625
public static final String SUMEQUAL01 = "SUMEQUAL01";
2726
public static final String MINMAX01 = "MINMAX01";
2827

29-
public ExternalFunctions(RuntimeContext runtime) {
30-
super(runtime);
31-
}
32-
3328
public boolean even(JNumber target) {
34-
boolean result = (target.toDouble() % 2 == 0);
35-
if(!result) return fail(new JsonSchemaException(
36-
new ErrorDetail(EVENFUNC01, "Number is not even"),
37-
new ExpectedDetail(caller, "even number"),
38-
new ActualDetail(target, "number ", target, " is odd")));
39-
return true;
29+
// Precision loss is not considered here
30+
if(target.toDouble() % 2 == 0) return true;
31+
return fail(new JsonSchemaException(
32+
new ErrorDetail(EVENFUNC01, "Number is not even"),
33+
new ExpectedDetail(caller, "even number"),
34+
new ActualDetail(target, "number " + target + " is odd")));
4035
}
4136

4237
public boolean canTest(JNumber target, JString str1, JBoolean bool1, JNumber... args) {
@@ -48,23 +43,22 @@ public boolean canTest(JNumber target, JString str1, JBoolean bool1, JNumber...
4843
}
4944

5045
public boolean checkAccess(JInteger target, JReceiver userRole) {
51-
String role = userRole.<JString>getValueNode().getValue();
46+
var role = userRole.<JString>getValueNode().getValue();
5247
if(role.equals("user") && target.getValue() > 5) return fail(new JsonSchemaException(
53-
new ErrorDetail(ERRACCESS01, "Data access incompatible with 'user' role"),
54-
new ExpectedDetail(caller, "an access at most 5 for 'user' role"),
55-
new ActualDetail(target, "found access ", target, " which is greater than 5")));
48+
new ErrorDetail(ERRACCESS01, "Data access incompatible with 'user' role"),
49+
new ExpectedDetail(caller, "an access at most 5 for 'user' role"),
50+
new ActualDetail(target, "found access " + target + " which is greater than 5")));
5651
return true;
5752
}
5853

5954
public boolean condition(JInteger target, JReceiver receiver) {
60-
long threshold = receiver.<JInteger>getValueNode().getValue();
55+
var threshold = receiver.<JInteger>getValueNode().getValue();
6156
System.out.println("Received integer: " + threshold);
62-
boolean result = threshold < target.getValue();
63-
if(!result) return fail(new JsonSchemaException(
64-
new ErrorDetail(CONDFUNC01, "Number does not satisfy the condition"),
65-
new ExpectedDetail(caller, "a number > ", threshold, " of '", receiver.getName(), "'"),
66-
new ActualDetail(target, "found number ", target, " <= ", threshold)));
67-
return result;
57+
if(threshold < target.getValue()) return true;
58+
return fail(new JsonSchemaException(
59+
new ErrorDetail(CONDFUNC01, "Number does not satisfy the condition"),
60+
new ExpectedDetail(caller, "a number > " + threshold + " of " + receiver),
61+
new ActualDetail(target, "found number " + target + " <= " + threshold)));
6862
}
6963

7064
public boolean conditionAll(JInteger target, JReceiver receiver) {
@@ -73,11 +67,11 @@ public boolean conditionAll(JInteger target, JReceiver receiver) {
7367
System.out.println("Target: " + target);
7468
System.out.println("Received integers: " + values);
7569
boolean result = list.stream().allMatch(i -> i.getValue() < target.getValue());
76-
if(!result) return fail(new JsonSchemaException(
77-
new ErrorDetail(CONDFUNC02, "Number does not satisfy the condition"),
78-
new ExpectedDetail(caller, "a number > any of ", values, " of '", receiver.getName(), "'"),
79-
new ActualDetail(target, "found number ", target, " <= some of ", values)));
80-
return true;
70+
if(result) return true;
71+
return fail(new JsonSchemaException(
72+
new ErrorDetail(CONDFUNC02, "Number does not satisfy the condition"),
73+
new ExpectedDetail(caller, "a number > any of " + values + " of " + receiver),
74+
new ActualDetail(target, "found number " + target + " <= some of " + values)));
8175
}
8276

8377
public FutureFunction sumEqual(JInteger target, JReceiver receiver) {
@@ -89,12 +83,11 @@ public FutureFunction sumEqual(JInteger target, JReceiver receiver) {
8983
System.out.println("Target: " + target);
9084
System.out.println("Received values: " + expression);
9185
long result = values.stream().mapToLong(JInteger::getValue).sum();
92-
if(result != target.getValue())
93-
return fail(new JsonSchemaException(
94-
new ErrorDetail(SUMEQUAL01, "Number != sum of ", expression, " = ", result),
95-
new ExpectedDetail(current, "a number = sum of numbers ", result),
96-
new ActualDetail(target, "found number ", target, " != ", result)));
97-
return true;
86+
if(result == target.getValue()) return true;
87+
return fail(new JsonSchemaException(
88+
new ErrorDetail(SUMEQUAL01, "Number != sum of " + expression + " = " + result),
89+
new ExpectedDetail(current, "a number = sum of numbers " + result),
90+
new ActualDetail(target, "found number " + target + " != " + result)));
9891
};
9992
}
10093

@@ -106,12 +99,11 @@ public FutureFunction minmax(JInteger target, JReceiver min, JReceiver max) {
10699
var intMax = max.<JInteger>getValueNode().getValue();
107100
System.out.println("Target: " + target);
108101
System.out.println("Received min: " + intMin + ", max: " + intMax);
109-
boolean result = target.getValue() >= intMin && target.getValue() <= intMax;
110-
if(!result) return fail(new JsonSchemaException(
111-
new ErrorDetail(MINMAX01, "Number is outside of range"),
112-
new ExpectedDetail(current, "a number in range [", intMin, ", ", intMax, "]"),
113-
new ActualDetail(target, "found number ", target, " not in range")));
114-
return true;
102+
if(target.getValue() >= intMin && target.getValue() <= intMax) return true;
103+
return fail(new JsonSchemaException(
104+
new ErrorDetail(MINMAX01, "Number is outside of range"),
105+
new ExpectedDetail(current, "a number in range [" + intMin + ", " + intMax + "]"),
106+
new ActualDetail(target, "found number " + target + " not in range")));
115107
};
116108
}
117109
}

src/test/java/com/relogiclabs/jschema/test/external/ExternalFunctions1.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
// Functions for negative (error) test cases
66
public class ExternalFunctions1 {
77
public boolean odd(JNumber target) {
8-
boolean result = (target.toDouble() % 2 != 0);
9-
if(!result) throw new RuntimeException("Not an odd number");
10-
return true;
8+
// Precision loss is not considered here
9+
if(target.toDouble() % 2 != 0) return true;
10+
throw new RuntimeException("Not an odd number");
1111
}
1212
}

src/test/java/com/relogiclabs/jschema/test/external/ExternalFunctions2.java

+4-8
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,12 @@
22

33
import com.relogiclabs.jschema.function.FunctionProvider;
44
import com.relogiclabs.jschema.node.JNumber;
5-
import com.relogiclabs.jschema.tree.RuntimeContext;
65

76
// Functions for negative (error) test cases
87
public class ExternalFunctions2 extends FunctionProvider {
9-
public ExternalFunctions2(RuntimeContext runtime) {
10-
super(runtime);
11-
}
12-
13-
public void odd(JNumber source) {
14-
boolean result = source.toDouble() % 2 != 0;
15-
if(!result) throw new RuntimeException("Not an odd number");
8+
public void odd(JNumber target) {
9+
// Precision loss is not considered here
10+
if(target.toDouble() % 2 != 0) return;
11+
throw new RuntimeException("Not an odd number");
1612
}
1713
}
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
11
package com.relogiclabs.jschema.test.external;
22

33
import com.relogiclabs.jschema.function.FunctionProvider;
4-
import com.relogiclabs.jschema.tree.RuntimeContext;
54

65
// Functions for negative (error) test cases
76
public class ExternalFunctions3 extends FunctionProvider {
8-
public ExternalFunctions3(RuntimeContext runtime) {
9-
super(runtime);
10-
}
11-
127
public boolean odd() {
13-
throw new UnsupportedOperationException();
8+
throw new RuntimeException("Error occurred");
149
}
1510
}

src/test/java/com/relogiclabs/jschema/test/external/ExternalFunctions4.java

+1-6
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,11 @@
22

33
import com.relogiclabs.jschema.function.FunctionProvider;
44
import com.relogiclabs.jschema.node.JNumber;
5-
import com.relogiclabs.jschema.tree.RuntimeContext;
65

76
// Functions for negative (error) test cases
87
public class ExternalFunctions4 extends FunctionProvider {
9-
public ExternalFunctions4(RuntimeContext runtime) {
10-
super(runtime);
11-
}
12-
138
public boolean canTest(JNumber target) {
14-
// If you just want to throw any exception without details
9+
// Any RuntimeException can be thrown without details
1510
return fail(new RuntimeException("something went wrong"));
1611
}
1712
}

src/test/java/com/relogiclabs/jschema/test/external/ExternalFunctions5.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
// Functions for negative (error) test cases
66
public class ExternalFunctions5 extends FunctionProvider {
77
public ExternalFunctions5() {
8-
super(null);
8+
throw new RuntimeException("Error occurred");
99
}
1010
}

0 commit comments

Comments
 (0)