1
2
3
4
5
6 package dev.metaschema.core.metapath.function.library;
7
8 import static dev.metaschema.core.metapath.TestUtils.bool;
9 import static org.junit.jupiter.api.Assertions.assertEquals;
10
11 import org.junit.jupiter.params.ParameterizedTest;
12 import org.junit.jupiter.params.provider.Arguments;
13 import org.junit.jupiter.params.provider.MethodSource;
14
15 import java.util.stream.Stream;
16
17 import dev.metaschema.core.metapath.ExpressionTestBase;
18 import dev.metaschema.core.metapath.IMetapathExpression;
19 import dev.metaschema.core.metapath.item.atomic.IBooleanItem;
20 import edu.umd.cs.findbugs.annotations.NonNull;
21
22 class FnDeepEqualTest
23 extends ExpressionTestBase {
24 private static Stream<Arguments> provideValues() {
25 return Stream.of(
26
27 Arguments.of(
28 bool(true),
29 "deep-equal(map{1:'a', 2:'b'}, map{2:'b', 1:'a'})"),
30 Arguments.of(
31 bool(true),
32 "deep-equal([1, 2, 3], [1, 2, 3])"),
33 Arguments.of(
34 bool(false),
35 "deep-equal((1, 2, 3), [1, 2, 3])"),
36 Arguments.of(
37 bool(false),
38 "deep-equal(1, current-dateTime())"));
39 }
40
41 @ParameterizedTest
42 @MethodSource("provideValues")
43 void test(@NonNull IBooleanItem expected, @NonNull String metapath) {
44 assertEquals(expected, IMetapathExpression.compile(metapath)
45 .evaluateAs(null, IMetapathExpression.ResultType.ITEM, newDynamicContext()));
46 }
47 }