Skip to content

Commit ea8304a

Browse files
Merge pull request #15 from relogiclabs/develop
Update Scripting Functionalities
2 parents e5d0b6a + 1a22417 commit ea8304a

File tree

361 files changed

+9004
-6871
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

361 files changed

+9004
-6871
lines changed

JSchema.Tests/JSchema.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
<Description>This project contains test cases for JSchema project.</Description>
66
<Authors>Relogic Labs</Authors>
77
<Company>Relogic Labs</Company>
8-
<Version>2.0.0</Version>
9-
<AssemblyVersion>2.0.0</AssemblyVersion>
8+
<Version>2.1.0</Version>
9+
<AssemblyVersion>2.1.0</AssemblyVersion>
1010
<Copyright>Copyright © Relogic Labs. All rights reserved.</Copyright>
1111
<NeutralLanguage>en</NeutralLanguage>
1212
<TargetFrameworks>net5.0;net6.0;net7.0;net8.0</TargetFrameworks>
@@ -21,7 +21,7 @@
2121
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
2222
<PackageReference Include="MSTest.TestAdapter" Version="3.2.2" />
2323
<PackageReference Include="MSTest.TestFramework" Version="3.2.2" />
24-
<PackageReference Include="coverlet.collector" Version="6.0.1" />
24+
<PackageReference Include="coverlet.collector" Version="6.0.2" />
2525
</ItemGroup>
2626

2727
<ItemGroup>

JSchema.Tests/RelogicLabs/JSchema/Tests/External/ExternalFunctionErrors.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using RelogicLabs.JSchema.Functions;
2-
using RelogicLabs.JSchema.Tree;
32
using RelogicLabs.JSchema.Nodes;
43

54
// Functions for negative (error) test cases
@@ -17,8 +16,6 @@ public bool Odd(JNumber target)
1716

1817
public class ExternalFunctions2 : FunctionProvider
1918
{
20-
public ExternalFunctions2(RuntimeContext runtime) : base(runtime) { }
21-
2219
public void Odd(JNumber target)
2320
{
2421
bool result = target % 2 != 0;
@@ -28,15 +25,11 @@ public void Odd(JNumber target)
2825

2926
public class ExternalFunctions3 : FunctionProvider
3027
{
31-
public ExternalFunctions3(RuntimeContext runtime) : base(runtime) { }
32-
3328
public bool Odd() => throw new InvalidOperationException();
3429
}
3530

3631
public class ExternalFunctions4 : FunctionProvider
3732
{
38-
public ExternalFunctions4(RuntimeContext runtime) : base(runtime) { }
39-
4033
public bool CanTest(JNumber target)
4134
{
4235
// If you just want to throw any exception without details
@@ -46,5 +39,5 @@ public bool CanTest(JNumber target)
4639

4740
public class ExternalFunctions5 : FunctionProvider
4841
{
49-
public ExternalFunctions5() : base(null!) { }
42+
public ExternalFunctions5() => throw new Exception("Error occurred");
5043
}

JSchema.Tests/RelogicLabs/JSchema/Tests/External/ExternalFunctions.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using RelogicLabs.JSchema.Exceptions;
22
using RelogicLabs.JSchema.Functions;
33
using RelogicLabs.JSchema.Message;
4-
using RelogicLabs.JSchema.Tree;
54
using RelogicLabs.JSchema.Nodes;
65
using RelogicLabs.JSchema.Utilities;
76

@@ -17,8 +16,6 @@ public class ExternalFunctions : FunctionProvider
1716
public const string SUMEQUAL01 = "SUMEQUAL01";
1817
public const string MINMAX01 = "MINMAX01";
1918

20-
public ExternalFunctions(RuntimeContext runtime) : base(runtime) { }
21-
2219
public bool Even(JNumber target)
2320
{
2421
bool result = target % 2 == 0;
@@ -84,7 +81,7 @@ public FutureFunction SumEqual(JInteger target, JReceiver receiver)
8481
var expression = values.Join("+");
8582
Console.WriteLine("Target: " + target);
8683
Console.WriteLine("Received values: " + expression);
87-
int result = values.Sum(i => (int) i);
84+
int result = values.Sum(static i => (int) i);
8885
if(result != target)
8986
return Fail(new JsonSchemaException(
9087
new ErrorDetail(SUMEQUAL01, $"Number != sum of {expression} = {result}"),

JSchema.Tests/RelogicLabs/JSchema/Tests/Negative/AggregatedTests.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ public void When_ExtendedAggregatedTestWithInvalidAccess_ExceptionThrown()
8080
%version: "2.0.0-extended"
8181
%import: RelogicLabs.JSchema.Tests.External.ExternalFunctions,
8282
RelogicLabs.JSchema.Tests
83-
83+
8484
%pragma IgnoreUndefinedProperties: true
85-
85+
8686
%define $post: {
8787
"id": @range(1, 1000) #integer,
8888
"title": @length(10, 100) #string,
@@ -103,7 +103,7 @@ public void When_ExtendedAggregatedTestWithInvalidAccess_ExceptionThrown()
103103
}
104104
%define $tags: @length(1, 10) #string*($tag) #array
105105
%define $tag: @length(3, 20) @regex("[A-Za-z_]+") #string
106-
%schema:
106+
%schema:
107107
{
108108
"user": {
109109
"id": @range(1, 10000) #integer,
@@ -243,7 +243,7 @@ public void When_ExtendedAggregatedScriptTestWithInvalidAccess_ExceptionThrown()
243243
var schema = """
244244
%title: "Extended User Profile Dashboard API Response"
245245
%version: "2.0.0-extended"
246-
246+
247247
%pragma DateDataTypeFormat: "DD-MM-YYYY"
248248
%pragma TimeDataTypeFormat: "DD-MM-YYYY hh:mm:ss"
249249
%pragma IgnoreUndefinedProperties: true
@@ -254,7 +254,7 @@ public void When_ExtendedAggregatedScriptTestWithInvalidAccess_ExceptionThrown()
254254
"content": @length(30, 1000) #string,
255255
"tags": $tags
256256
} #object
257-
257+
258258
%define $product: {
259259
"id": @length(2, 10) @regex("[a-z][a-z0-9]+") #string,
260260
"name": @length(5, 30) #string,
@@ -267,11 +267,11 @@ public void When_ExtendedAggregatedScriptTestWithInvalidAccess_ExceptionThrown()
267267
"storage": @regex("[0-9]{1,4}GB (SSD|HDD)") #string
268268
} #object #null
269269
}
270-
270+
271271
%define $tags: @length(1, 10) #string*($tag) #array
272272
%define $tag: @length(3, 20) @regex("[A-Za-z_]+") #string
273-
274-
%schema:
273+
274+
%schema:
275275
{
276276
"user": {
277277
"id": @range(1, 10000) #integer,
@@ -308,10 +308,12 @@ public void When_ExtendedAggregatedScriptTestWithInvalidAccess_ExceptionThrown()
308308
"isCloudy": #boolean
309309
}
310310
}
311-
311+
312312
%script: {
313313
future constraint checkAccess(role) {
314-
if(role[0] == "user" && target > 5) return fail(
314+
// Auto-unpacking turns the single-value '&role' array into the value itself
315+
// 'target' keyword refers to the target JSON value
316+
if(role == "user" && target > 5) return fail(
315317
"ERRACCESS01", "Data access incompatible with 'user' role",
316318
expected("an access at most 5 for 'user' role"),
317319
actual("found access " + target + " which is greater than 5"));

JSchema.Tests/RelogicLabs/JSchema/Tests/Negative/FunctionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public void When_ExternalImportInstantiationNotSuccessful_ExceptionThrown()
9595
//JsonSchema.IsValid(schema, json);
9696
var exception = Assert.ThrowsException<ClassInstantiationException>(
9797
() => JsonAssert.IsValid(schema, json));
98-
Assert.AreEqual(CLAS05, exception.Code);
98+
Assert.AreEqual(INST01, exception.Code);
9999
Console.WriteLine(exception);
100100
}
101101

JSchema.Tests/RelogicLabs/JSchema/Tests/Negative/ReceiverTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ public void When_ReceiveWrongValuesInObject_ExceptionThrown()
129129
130130
%schema:
131131
{
132-
"key1": #integer &relatedData,
133132
"key10": @sumEqual(&relatedData) #integer,
133+
"key1": #integer &relatedData,
134134
"key2": #integer &relatedData,
135135
"key3": #integer &relatedData,
136136
"key4": #integer &relatedData,
@@ -142,10 +142,10 @@ public void When_ReceiveWrongValuesInObject_ExceptionThrown()
142142
{
143143
"key1": 9,
144144
"key2": 5,
145-
"key10": 100,
146145
"key3": 13,
147146
"key4": 60,
148-
"key5": 12
147+
"key5": 12,
148+
"key10": 100
149149
}
150150
""";
151151
JsonSchema.IsValid(schema, json);

0 commit comments

Comments
 (0)