From a043ea38756a02a36c5f91ad00ad736af5e139bc Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Mon, 28 Apr 2025 17:02:17 +0100 Subject: [PATCH 1/2] Added regression tests for "number" alias in $$type operator. JAVA-5682 --- .../mongodb/client/unified/UnifiedTestModifications.java | 2 -- .../com/mongodb/client/unified/ValueMatcher.java | 8 +++++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestModifications.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestModifications.java index 2d4d4f49b2a..74b98fcfbe9 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestModifications.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestModifications.java @@ -298,8 +298,6 @@ public static void applyCustomizations(final TestDef def) { .file("unified-test-format/tests/valid-pass", "kmsProviders-mixed_kms_credential_fields"); def.skipJira("https://jira.mongodb.org/browse/JAVA-5672") .file("unified-test-format/tests/valid-pass", "operator-matchAsRoot"); - def.skipJira("https://jira.mongodb.org/browse/JAVA-5682") - .file("unified-test-format/tests/valid-pass", "operator-type-number_alias"); // valid fail diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/ValueMatcher.java b/driver-sync/src/test/functional/com/mongodb/client/unified/ValueMatcher.java index 899769d2d9f..d9c6a707b4f 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/ValueMatcher.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/ValueMatcher.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.stream.Collectors; +import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -158,7 +159,12 @@ private void assertValuesMatch(final BsonValue initialExpected, @Nullable final private void assertExpectedType(final BsonValue actualValue, final BsonValue expectedTypes) { List types; if (expectedTypes.isString()) { - types = singletonList(expectedTypes.asString().getValue()); + String expectedType = expectedTypes.asString().getValue(); + if (expectedType.equals("number")) { + types = asList("int", "long", "double", "decimal"); + } else { + types = singletonList(expectedType); + } } else if (expectedTypes.isArray()) { types = expectedTypes.asArray().stream().map(type -> type.asString().getValue()).collect(Collectors.toList()); } else { From aaca152772f7ec57a4aad75b23ad542059f759a2 Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Tue, 29 Apr 2025 11:14:50 +0100 Subject: [PATCH 2/2] Use static for alias --- .../com/mongodb/client/unified/ValueMatcher.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/ValueMatcher.java b/driver-sync/src/test/functional/com/mongodb/client/unified/ValueMatcher.java index d9c6a707b4f..ba887ff0fd5 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/ValueMatcher.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/ValueMatcher.java @@ -35,6 +35,7 @@ final class ValueMatcher { private final Entities entities; private final AssertionContext context; + private static final List NUMBER_TYPES = asList("int", "long", "double", "decimal"); ValueMatcher(final Entities entities, final AssertionContext context) { this.entities = entities; @@ -160,11 +161,7 @@ private void assertExpectedType(final BsonValue actualValue, final BsonValue exp List types; if (expectedTypes.isString()) { String expectedType = expectedTypes.asString().getValue(); - if (expectedType.equals("number")) { - types = asList("int", "long", "double", "decimal"); - } else { - types = singletonList(expectedType); - } + types = expectedType.equals("number") ? NUMBER_TYPES : singletonList(expectedType); } else if (expectedTypes.isArray()) { types = expectedTypes.asArray().stream().map(type -> type.asString().getValue()).collect(Collectors.toList()); } else {