diff options
author | Google Java Core Libraries <java-team-github-bot@google.com> | 2021-04-19 13:04:11 -0700 |
---|---|---|
committer | Google Java Core Libraries <java-libraries-firehose+copybara@google.com> | 2021-04-19 13:04:34 -0700 |
commit | 952ebbe105a321579424af66d1c61a5af3f8570a (patch) | |
tree | 33ce3c0fa97115147886d200c8e61ddf04d147bd | |
parent | b11f23793deeff65898d25df566b923b1b6541ea (diff) | |
download | truth-952ebbe105a321579424af66d1c61a5af3f8570a.tar.gz |
Rename FieldDescriptorOrUnknown to SubScopeId
RELNOTES=n/a
PiperOrigin-RevId: 369285049
9 files changed, 107 insertions, 151 deletions
diff --git a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/AnyUtils.java b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/AnyUtils.java index 32037ad3..a9a7782e 100644 --- a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/AnyUtils.java +++ b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/AnyUtils.java @@ -35,11 +35,10 @@ class AnyUtils { return TYPE_URL_FIELD_DESCRIPTOR; } - private static final FieldDescriptorOrUnknown TYPE_URL_FIELD_DESCRIPTOR_OR_UNKNOWN = - FieldDescriptorOrUnknown.of(TYPE_URL_FIELD_DESCRIPTOR); + private static final SubScopeId TYPE_URL_SUB_SCOPE_ID = SubScopeId.of(TYPE_URL_FIELD_DESCRIPTOR); - static FieldDescriptorOrUnknown typeUrlFieldDescriptorOrUnknown() { - return TYPE_URL_FIELD_DESCRIPTOR_OR_UNKNOWN; + static SubScopeId typeUrlSubScopeId() { + return TYPE_URL_SUB_SCOPE_ID; } private static final FieldDescriptor VALUE_FIELD_DESCRIPTOR = @@ -49,11 +48,10 @@ class AnyUtils { return VALUE_FIELD_DESCRIPTOR; } - private static final FieldDescriptorOrUnknown VALUE_FIELD_DESCRIPTOR_OR_UNKNOWN = - FieldDescriptorOrUnknown.of(VALUE_FIELD_DESCRIPTOR); + private static final SubScopeId VALUE_SUB_SCOPE_ID = SubScopeId.of(VALUE_FIELD_DESCRIPTOR); - static FieldDescriptorOrUnknown valueFieldDescriptorOrUnknown() { - return VALUE_FIELD_DESCRIPTOR_OR_UNKNOWN; + static SubScopeId valueSubScopeId() { + return VALUE_SUB_SCOPE_ID; } /** Unpack an `Any` proto using the TypeRegistry and ExtensionRegistry on `config`. */ diff --git a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/DiffResult.java b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/DiffResult.java index b72c69d1..a0ec9373 100644 --- a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/DiffResult.java +++ b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/DiffResult.java @@ -56,7 +56,7 @@ abstract class DiffResult extends RecursableDiffEntity.WithoutResultCode { @AutoValue abstract static class SingularField extends RecursableDiffEntity.WithResultCode { /** The type information for this field. May be absent if result code is {@code IGNORED}. */ - abstract Optional<FieldDescriptorOrUnknown> fieldDescriptorOrUnknown(); + abstract Optional<SubScopeId> subScopeId(); /** The display name for this field. May include an array-index specifier. */ abstract String fieldName(); @@ -110,7 +110,7 @@ abstract class DiffResult extends RecursableDiffEntity.WithoutResultCode { if (actual().get() instanceof Message) { sb.append("\n").append(actual().get()); } else { - sb.append(valueString(fieldDescriptorOrUnknown().get(), actual().get())).append("\n"); + sb.append(valueString(subScopeId().get(), actual().get())).append("\n"); } return; case IGNORED: @@ -123,7 +123,7 @@ abstract class DiffResult extends RecursableDiffEntity.WithoutResultCode { printChildContents(includeMatches, fieldPrefix, sb); } else { sb.append(": ") - .append(valueString(fieldDescriptorOrUnknown().get(), actualOrExpected())) + .append(valueString(subScopeId().get(), actualOrExpected())) .append("\n"); } return; @@ -134,9 +134,9 @@ abstract class DiffResult extends RecursableDiffEntity.WithoutResultCode { printChildContents(includeMatches, fieldPrefix, sb); } else { sb.append(": ") - .append(valueString(fieldDescriptorOrUnknown().get(), expected().get())) + .append(valueString(subScopeId().get(), expected().get())) .append(" -> ") - .append(valueString(fieldDescriptorOrUnknown().get(), actual().get())) + .append(valueString(subScopeId().get(), actual().get())) .append("\n"); } return; @@ -145,7 +145,7 @@ abstract class DiffResult extends RecursableDiffEntity.WithoutResultCode { if (expected().get() instanceof Message) { sb.append("\n").append(expected().get()); } else { - sb.append(valueString(fieldDescriptorOrUnknown().get(), expected().get())).append("\n"); + sb.append(valueString(subScopeId().get(), expected().get())).append("\n"); } return; default: @@ -172,8 +172,7 @@ abstract class DiffResult extends RecursableDiffEntity.WithoutResultCode { abstract static class Builder { abstract Builder setResult(Result result); - abstract Builder setFieldDescriptorOrUnknown( - FieldDescriptorOrUnknown fieldDescriptorOrUnknown); + abstract Builder setSubScopeId(SubScopeId subScopeId); abstract Builder setFieldName(String fieldName); @@ -600,14 +599,14 @@ abstract class DiffResult extends RecursableDiffEntity.WithoutResultCode { return rootFieldPrefix.isEmpty() ? toAdd : (rootFieldPrefix + "." + toAdd); } - private static String valueString(FieldDescriptorOrUnknown fieldDescriptorOrUnknown, Object o) { - switch (fieldDescriptorOrUnknown.kind()) { + private static String valueString(SubScopeId subScopeId, Object o) { + switch (subScopeId.kind()) { case FIELD_DESCRIPTOR: - return valueString(fieldDescriptorOrUnknown.fieldDescriptor(), o); + return valueString(subScopeId.fieldDescriptor(), o); case UNKNOWN_FIELD_DESCRIPTOR: - return valueString(fieldDescriptorOrUnknown.unknownFieldDescriptor(), o); + return valueString(subScopeId.unknownFieldDescriptor(), o); } - throw new AssertionError(fieldDescriptorOrUnknown.kind()); + throw new AssertionError(subScopeId.kind()); } private static String valueString(FieldDescriptor fieldDescriptor, Object o) { diff --git a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldNumberTree.java b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldNumberTree.java index 4e9dbe53..d33e2fee 100644 --- a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldNumberTree.java +++ b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldNumberTree.java @@ -40,7 +40,7 @@ final class FieldNumberTree { } // Modified only during [factory] construction, never changed afterwards. - private final Map<FieldDescriptorOrUnknown, FieldNumberTree> children = Maps.newHashMap(); + private final Map<SubScopeId, FieldNumberTree> children = Maps.newHashMap(); /** Returns whether this {@code FieldNumberTree} has no children. */ boolean isEmpty() { @@ -52,14 +52,14 @@ final class FieldNumberTree { * * <p>{@code empty()} if there is none. */ - FieldNumberTree child(FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { - FieldNumberTree child = children.get(fieldDescriptorOrUnknown); + FieldNumberTree child(SubScopeId subScopeId) { + FieldNumberTree child = children.get(subScopeId); return child == null ? EMPTY : child; } /** Returns whether this tree has a child for this node. */ - boolean hasChild(FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { - return children.containsKey(fieldDescriptorOrUnknown); + boolean hasChild(SubScopeId subScopeId) { + return children.containsKey(subScopeId); } static FieldNumberTree fromMessage(Message message) { @@ -68,9 +68,9 @@ final class FieldNumberTree { // Known fields. Map<FieldDescriptor, Object> knownFieldValues = message.getAllFields(); for (FieldDescriptor field : knownFieldValues.keySet()) { - FieldDescriptorOrUnknown fieldDescriptorOrUnknown = FieldDescriptorOrUnknown.of(field); + SubScopeId subScopeId = SubScopeId.of(field); FieldNumberTree childTree = new FieldNumberTree(); - tree.children.put(fieldDescriptorOrUnknown, childTree); + tree.children.put(subScopeId, childTree); Object fieldValue = knownFieldValues.get(field); if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { @@ -107,10 +107,9 @@ final class FieldNumberTree { UnknownFieldSet.Field unknownField = unknownFieldSet.asMap().get(fieldNumber); for (UnknownFieldDescriptor unknownFieldDescriptor : UnknownFieldDescriptor.descriptors(fieldNumber, unknownField)) { - FieldDescriptorOrUnknown fieldDescriptorOrUnknown = - FieldDescriptorOrUnknown.of(unknownFieldDescriptor); + SubScopeId subScopeId = SubScopeId.of(unknownFieldDescriptor); FieldNumberTree childTree = new FieldNumberTree(); - tree.children.put(fieldDescriptorOrUnknown, childTree); + tree.children.put(subScopeId, childTree); if (unknownFieldDescriptor.type() == UnknownFieldDescriptor.Type.GROUP) { for (Object group : unknownFieldDescriptor.type().getValues(unknownField)) { @@ -125,12 +124,12 @@ final class FieldNumberTree { /** Adds the other tree onto this one. May destroy {@code other} in the process. */ private void merge(FieldNumberTree other) { - for (FieldDescriptorOrUnknown fieldDescriptorOrUnknown : other.children.keySet()) { - FieldNumberTree value = other.children.get(fieldDescriptorOrUnknown); - if (!this.children.containsKey(fieldDescriptorOrUnknown)) { - this.children.put(fieldDescriptorOrUnknown, value); + for (SubScopeId subScopeId : other.children.keySet()) { + FieldNumberTree value = other.children.get(subScopeId); + if (!this.children.containsKey(subScopeId)) { + this.children.put(subScopeId, value); } else { - this.children.get(fieldDescriptorOrUnknown).merge(value); + this.children.get(subScopeId).merge(value); } } } diff --git a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogic.java b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogic.java index 30204ea9..31fd0563 100644 --- a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogic.java +++ b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogic.java @@ -49,13 +49,11 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog * Returns whether the given field is included in this FieldScopeLogic, along with whether it's * included recursively or not. */ - abstract FieldScopeResult policyFor( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown); + abstract FieldScopeResult policyFor(Descriptor rootDescriptor, SubScopeId subScopeId); /** Returns whether the given field is included in this FieldScopeLogic. */ - final boolean contains( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { - return policyFor(rootDescriptor, fieldDescriptorOrUnknown).included(); + final boolean contains(Descriptor rootDescriptor, SubScopeId subScopeId) { + return policyFor(rootDescriptor, subScopeId).included(); } /** @@ -65,13 +63,12 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog * #subScopeImpl} to implement those cases. */ @Override - public final FieldScopeLogic subScope( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { - FieldScopeResult result = policyFor(rootDescriptor, fieldDescriptorOrUnknown); + public final FieldScopeLogic subScope(Descriptor rootDescriptor, SubScopeId subScopeId) { + FieldScopeResult result = policyFor(rootDescriptor, subScopeId); if (result.recursive()) { return result.included() ? all() : none(); } else { - return subScopeImpl(rootDescriptor, fieldDescriptorOrUnknown); + return subScopeImpl(rootDescriptor, subScopeId); } } @@ -82,8 +79,7 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog * {@code NONRECURSIVE} results must override this method. */ @ForOverride - FieldScopeLogic subScopeImpl( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + FieldScopeLogic subScopeImpl(Descriptor rootDescriptor, SubScopeId subScopeId) { throw new UnsupportedOperationException("subScopeImpl not implemented for " + getClass()); } @@ -178,8 +174,7 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog } @Override - final FieldScopeResult policyFor( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + final FieldScopeResult policyFor(Descriptor rootDescriptor, SubScopeId subScopeId) { return FieldScopeResult.INCLUDED_RECURSIVELY; } @@ -197,8 +192,7 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog } @Override - final FieldScopeResult policyFor( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + final FieldScopeResult policyFor(Descriptor rootDescriptor, SubScopeId subScopeId) { return FieldScopeResult.EXCLUDED_RECURSIVELY; } }; @@ -226,17 +220,15 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog } @Override - final FieldScopeResult policyFor( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { - return fieldNumberTree.hasChild(fieldDescriptorOrUnknown) + final FieldScopeResult policyFor(Descriptor rootDescriptor, SubScopeId subScopeId) { + return fieldNumberTree.hasChild(subScopeId) ? FieldScopeResult.INCLUDED_NONRECURSIVELY : FieldScopeResult.EXCLUDED_RECURSIVELY; } @Override - final FieldScopeLogic subScopeImpl( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { - return newPartialScopeLogic(fieldNumberTree.child(fieldDescriptorOrUnknown)); + final FieldScopeLogic subScopeImpl(Descriptor rootDescriptor, SubScopeId subScopeId) { + return newPartialScopeLogic(fieldNumberTree.child(subScopeId)); } private static PartialScopeLogic newPartialScopeLogic(FieldNumberTree fieldNumberTree) { @@ -311,14 +303,12 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog abstract boolean matchesFieldDescriptor(Descriptor descriptor, FieldDescriptor fieldDescriptor); @Override - final FieldScopeResult policyFor( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { - if (fieldDescriptorOrUnknown.kind() - == FieldDescriptorOrUnknown.Kind.UNKNOWN_FIELD_DESCRIPTOR) { + final FieldScopeResult policyFor(Descriptor rootDescriptor, SubScopeId subScopeId) { + if (subScopeId.kind() == SubScopeId.Kind.UNKNOWN_FIELD_DESCRIPTOR) { return FieldScopeResult.EXCLUDED_RECURSIVELY; } - FieldDescriptor fieldDescriptor = fieldDescriptorOrUnknown.fieldDescriptor(); + FieldDescriptor fieldDescriptor = subScopeId.fieldDescriptor(); if (matchesFieldDescriptor(rootDescriptor, fieldDescriptor)) { return FieldScopeResult.of(/* included = */ true, isRecursive); } @@ -332,8 +322,7 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog } @Override - final FieldScopeLogic subScopeImpl( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + final FieldScopeLogic subScopeImpl(Descriptor rootDescriptor, SubScopeId subScopeId) { return this; } @@ -443,12 +432,11 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog abstract T newLogicOfSameType(List<FieldScopeLogic> newElements); @Override - final FieldScopeLogic subScopeImpl( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + final FieldScopeLogic subScopeImpl(Descriptor rootDescriptor, SubScopeId subScopeId) { ImmutableList.Builder<FieldScopeLogic> builder = ImmutableList.builderWithExpectedSize(elements.size()); for (FieldScopeLogic elem : elements) { - builder.add(elem.subScope(rootDescriptor, fieldDescriptorOrUnknown)); + builder.add(elem.subScope(rootDescriptor, subScopeId)); } return newLogicOfSameType(builder.build()); } @@ -467,12 +455,11 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog } @Override - FieldScopeResult policyFor( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + FieldScopeResult policyFor(Descriptor rootDescriptor, SubScopeId subScopeId) { // The intersection of two scopes is ignorable if either scope is itself ignorable. return intersection( - elements.get(0).policyFor(rootDescriptor, fieldDescriptorOrUnknown), - elements.get(1).policyFor(rootDescriptor, fieldDescriptorOrUnknown)); + elements.get(0).policyFor(rootDescriptor, subScopeId), + elements.get(1).policyFor(rootDescriptor, subScopeId)); } private static FieldScopeResult intersection( @@ -512,12 +499,11 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog } @Override - FieldScopeResult policyFor( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + FieldScopeResult policyFor(Descriptor rootDescriptor, SubScopeId subScopeId) { // The union of two scopes is ignorable only if both scopes are themselves ignorable. return union( - elements.get(0).policyFor(rootDescriptor, fieldDescriptorOrUnknown), - elements.get(1).policyFor(rootDescriptor, fieldDescriptorOrUnknown)); + elements.get(0).policyFor(rootDescriptor, subScopeId), + elements.get(1).policyFor(rootDescriptor, subScopeId)); } private static FieldScopeResult union(FieldScopeResult result1, FieldScopeResult result2) { @@ -556,9 +542,8 @@ abstract class FieldScopeLogic implements FieldScopeLogicContainer<FieldScopeLog } @Override - FieldScopeResult policyFor( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { - FieldScopeResult result = elements.get(0).policyFor(rootDescriptor, fieldDescriptorOrUnknown); + FieldScopeResult policyFor(Descriptor rootDescriptor, SubScopeId subScopeId) { + FieldScopeResult result = elements.get(0).policyFor(rootDescriptor, subScopeId); return FieldScopeResult.of(!result.included(), result.recursive()); } diff --git a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogicContainer.java b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogicContainer.java index 666112ef..e3d3ea4a 100644 --- a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogicContainer.java +++ b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogicContainer.java @@ -27,7 +27,7 @@ import com.google.protobuf.Descriptors.Descriptor; interface FieldScopeLogicContainer<T extends FieldScopeLogicContainer<T>> { /** Returns the analog of {@link FieldScopeLogic#subScope} for this container. */ - T subScope(Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown); + T subScope(Descriptor rootDescriptor, SubScopeId subScopeId); /** Validates explicitly specified fields for this container. */ void validate(Descriptor rootDescriptor, FieldDescriptorValidator fieldDescriptorValidator); diff --git a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogicMap.java b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogicMap.java index f8579680..4bd0948d 100644 --- a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogicMap.java +++ b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldScopeLogicMap.java @@ -61,11 +61,10 @@ class FieldScopeLogicMap<V> implements FieldScopeLogicContainer<FieldScopeLogicM return entries.isEmpty(); } - public Optional<V> get( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + public Optional<V> get(Descriptor rootDescriptor, SubScopeId subScopeId) { // Earlier entries override later ones, so we don't need to iterate backwards. for (Entry<V> entry : entries) { - if (entry.fieldScopeLogic().contains(rootDescriptor, fieldDescriptorOrUnknown)) { + if (entry.fieldScopeLogic().contains(rootDescriptor, subScopeId)) { return Optional.of(entry.value()); } } @@ -82,15 +81,12 @@ class FieldScopeLogicMap<V> implements FieldScopeLogicContainer<FieldScopeLogicM } @Override - public FieldScopeLogicMap<V> subScope( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + public FieldScopeLogicMap<V> subScope(Descriptor rootDescriptor, SubScopeId subScopeId) { ImmutableList.Builder<Entry<V>> newEntries = ImmutableList.builderWithExpectedSize(entries.size()); for (Entry<V> entry : entries) { newEntries.add( - Entry.of( - entry.fieldScopeLogic().subScope(rootDescriptor, fieldDescriptorOrUnknown), - entry.value())); + Entry.of(entry.fieldScopeLogic().subScope(rootDescriptor, subScopeId), entry.value())); } return new FieldScopeLogicMap<>(newEntries.build()); } diff --git a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FluentEqualityConfig.java b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FluentEqualityConfig.java index 4015238c..bd44f3e9 100644 --- a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FluentEqualityConfig.java +++ b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FluentEqualityConfig.java @@ -326,22 +326,16 @@ abstract class FluentEqualityConfig implements FieldScopeLogicContainer<FluentEq } @Override - public final FluentEqualityConfig subScope( - Descriptor rootDescriptor, FieldDescriptorOrUnknown fieldDescriptorOrUnknown) { + public final FluentEqualityConfig subScope(Descriptor rootDescriptor, SubScopeId subScopeId) { return toBuilder() - .setIgnoreFieldAbsenceScope( - ignoreFieldAbsenceScope().subScope(rootDescriptor, fieldDescriptorOrUnknown)) + .setIgnoreFieldAbsenceScope(ignoreFieldAbsenceScope().subScope(rootDescriptor, subScopeId)) .setIgnoreRepeatedFieldOrderScope( - ignoreRepeatedFieldOrderScope().subScope(rootDescriptor, fieldDescriptorOrUnknown)) + ignoreRepeatedFieldOrderScope().subScope(rootDescriptor, subScopeId)) .setIgnoreExtraRepeatedFieldElementsScope( - ignoreExtraRepeatedFieldElementsScope() - .subScope(rootDescriptor, fieldDescriptorOrUnknown)) - .setDoubleCorrespondenceMap( - doubleCorrespondenceMap().subScope(rootDescriptor, fieldDescriptorOrUnknown)) - .setFloatCorrespondenceMap( - floatCorrespondenceMap().subScope(rootDescriptor, fieldDescriptorOrUnknown)) - .setCompareFieldsScope( - compareFieldsScope().subScope(rootDescriptor, fieldDescriptorOrUnknown)) + ignoreExtraRepeatedFieldElementsScope().subScope(rootDescriptor, subScopeId)) + .setDoubleCorrespondenceMap(doubleCorrespondenceMap().subScope(rootDescriptor, subScopeId)) + .setFloatCorrespondenceMap(floatCorrespondenceMap().subScope(rootDescriptor, subScopeId)) + .setCompareFieldsScope(compareFieldsScope().subScope(rootDescriptor, subScopeId)) .build(); } diff --git a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/ProtoTruthMessageDifferencer.java b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/ProtoTruthMessageDifferencer.java index 7d069f19..d843a61d 100644 --- a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/ProtoTruthMessageDifferencer.java +++ b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/ProtoTruthMessageDifferencer.java @@ -104,10 +104,9 @@ final class ProtoTruthMessageDifferencer { // the field will be considered ignored in the final diff report if no sub-fields get compared // (i.e., the sub-DiffResult winds up empty). This allows us support FieldScopeLogic // disjunctions without repeating recursive work. - FieldDescriptorOrUnknown fieldDescriptorOrUnknown = - FieldDescriptorOrUnknown.of(fieldDescriptor); + SubScopeId subScopeId = SubScopeId.of(fieldDescriptor); FieldScopeResult shouldCompare = - config.compareFieldsScope().policyFor(rootDescriptor, fieldDescriptorOrUnknown); + config.compareFieldsScope().policyFor(rootDescriptor, subScopeId); if (shouldCompare == FieldScopeResult.EXCLUDED_RECURSIVELY) { builder.addSingularField( fieldDescriptor.getNumber(), SingularField.ignored(name(fieldDescriptor))); @@ -128,19 +127,15 @@ final class ProtoTruthMessageDifferencer { expectedMap, actualAndExpectedKeys, fieldDescriptor, - config.subScope(rootDescriptor, fieldDescriptorOrUnknown))); + config.subScope(rootDescriptor, subScopeId))); } else { List<?> actualList = toProtoList(actualFields.get(fieldDescriptor)); List<?> expectedList = toProtoList(expectedFields.get(fieldDescriptor)); boolean ignoreRepeatedFieldOrder = - config - .ignoreRepeatedFieldOrderScope() - .contains(rootDescriptor, fieldDescriptorOrUnknown); + config.ignoreRepeatedFieldOrderScope().contains(rootDescriptor, subScopeId); boolean ignoreExtraRepeatedFieldElements = - config - .ignoreExtraRepeatedFieldElementsScope() - .contains(rootDescriptor, fieldDescriptorOrUnknown); + config.ignoreExtraRepeatedFieldElementsScope().contains(rootDescriptor, subScopeId); if (ignoreRepeatedFieldOrder) { builder.addRepeatedField( fieldDescriptor.getNumber(), @@ -150,7 +145,7 @@ final class ProtoTruthMessageDifferencer { shouldCompare == FieldScopeResult.EXCLUDED_NONRECURSIVELY, fieldDescriptor, ignoreExtraRepeatedFieldElements, - config.subScope(rootDescriptor, fieldDescriptorOrUnknown))); + config.subScope(rootDescriptor, subScopeId))); } else if (ignoreExtraRepeatedFieldElements && !expectedList.isEmpty()) { builder.addRepeatedField( fieldDescriptor.getNumber(), @@ -159,7 +154,7 @@ final class ProtoTruthMessageDifferencer { expectedList, shouldCompare == FieldScopeResult.EXCLUDED_NONRECURSIVELY, fieldDescriptor, - config.subScope(rootDescriptor, fieldDescriptorOrUnknown))); + config.subScope(rootDescriptor, subScopeId))); } else { builder.addAllSingularFields( fieldDescriptor.getNumber(), @@ -168,7 +163,7 @@ final class ProtoTruthMessageDifferencer { expectedList, shouldCompare == FieldScopeResult.EXCLUDED_NONRECURSIVELY, fieldDescriptor, - config.subScope(rootDescriptor, fieldDescriptorOrUnknown))); + config.subScope(rootDescriptor, subScopeId))); } } } else { @@ -181,7 +176,7 @@ final class ProtoTruthMessageDifferencer { shouldCompare == FieldScopeResult.EXCLUDED_NONRECURSIVELY, fieldDescriptor, name(fieldDescriptor), - config.subScope(rootDescriptor, fieldDescriptorOrUnknown))); + config.subScope(rootDescriptor, subScopeId))); } } @@ -201,9 +196,7 @@ final class ProtoTruthMessageDifferencer { // Compare the TypeUrl fields. FieldScopeResult shouldCompareTypeUrl = - config - .compareFieldsScope() - .policyFor(rootDescriptor, AnyUtils.typeUrlFieldDescriptorOrUnknown()); + config.compareFieldsScope().policyFor(rootDescriptor, AnyUtils.typeUrlSubScopeId()); SingularField typeUrlDiffResult; if (!shouldCompareTypeUrl.included()) { typeUrlDiffResult = SingularField.ignored(name(AnyUtils.typeUrlFieldDescriptor())); @@ -215,16 +208,14 @@ final class ProtoTruthMessageDifferencer { /* defaultValue= */ "", AnyUtils.typeUrlFieldDescriptor(), name(AnyUtils.typeUrlFieldDescriptor()), - config.subScope(rootDescriptor, AnyUtils.typeUrlFieldDescriptorOrUnknown())); + config.subScope(rootDescriptor, AnyUtils.typeUrlSubScopeId())); } builder.addSingularField(Any.TYPE_URL_FIELD_NUMBER, typeUrlDiffResult); // Try to unpack the value fields using the TypeRegister and url from the type_url field. If // that does not work then we revert to the original behaviour compare the bytes strings. FieldScopeResult shouldCompareValue = - config - .compareFieldsScope() - .policyFor(rootDescriptor, AnyUtils.valueFieldDescriptorOrUnknown()); + config.compareFieldsScope().policyFor(rootDescriptor, AnyUtils.valueSubScopeId()); SingularField valueDiffResult; if (shouldCompareValue == FieldScopeResult.EXCLUDED_RECURSIVELY) { valueDiffResult = SingularField.ignored(name(AnyUtils.valueFieldDescriptor())); @@ -243,7 +234,7 @@ final class ProtoTruthMessageDifferencer { shouldCompareValue == FieldScopeResult.EXCLUDED_NONRECURSIVELY, AnyUtils.valueFieldDescriptor(), name(AnyUtils.valueFieldDescriptor()), - config.subScope(rootDescriptor, AnyUtils.valueFieldDescriptorOrUnknown())); + config.subScope(rootDescriptor, AnyUtils.valueSubScopeId())); } else { valueDiffResult = compareSingularValue( @@ -253,7 +244,7 @@ final class ProtoTruthMessageDifferencer { shouldCompareValue == FieldScopeResult.EXCLUDED_NONRECURSIVELY, AnyUtils.valueFieldDescriptor(), name(AnyUtils.valueFieldDescriptor()), - config.subScope(rootDescriptor, AnyUtils.valueFieldDescriptorOrUnknown())); + config.subScope(rootDescriptor, AnyUtils.valueSubScopeId())); } } builder.addSingularField(Any.VALUE_FIELD_NUMBER, valueDiffResult); @@ -314,12 +305,11 @@ final class ProtoTruthMessageDifferencer { FluentEqualityConfig mapConfig) { FieldDescriptor keyFieldDescriptor = mapFieldDescriptor.getMessageType().findFieldByNumber(1); FieldDescriptor valueFieldDescriptor = mapFieldDescriptor.getMessageType().findFieldByNumber(2); - FieldDescriptorOrUnknown valueFieldDescriptorOrUnknown = - FieldDescriptorOrUnknown.of(valueFieldDescriptor); + SubScopeId valueSubScopeId = SubScopeId.of(valueFieldDescriptor); // We never ignore the key, no matter what the logic dictates. FieldScopeResult compareValues = - mapConfig.compareFieldsScope().policyFor(rootDescriptor, valueFieldDescriptorOrUnknown); + mapConfig.compareFieldsScope().policyFor(rootDescriptor, valueSubScopeId); if (compareValues == FieldScopeResult.EXCLUDED_RECURSIVELY) { return ImmutableList.of(SingularField.ignored(name(mapFieldDescriptor))); } @@ -327,10 +317,9 @@ final class ProtoTruthMessageDifferencer { boolean ignoreExtraRepeatedFieldElements = mapConfig .ignoreExtraRepeatedFieldElementsScope() - .contains(rootDescriptor, FieldDescriptorOrUnknown.of(mapFieldDescriptor)); + .contains(rootDescriptor, SubScopeId.of(mapFieldDescriptor)); - FluentEqualityConfig valuesConfig = - mapConfig.subScope(rootDescriptor, valueFieldDescriptorOrUnknown); + FluentEqualityConfig valuesConfig = mapConfig.subScope(rootDescriptor, valueSubScopeId); ImmutableList.Builder<SingularField> builder = ImmutableList.builderWithExpectedSize(actualAndExpectedKeys.size()); @@ -670,9 +659,7 @@ final class ProtoTruthMessageDifferencer { // Use the default if it's set and we're ignoring field absence. boolean ignoreFieldAbsence = - config - .ignoreFieldAbsenceScope() - .contains(rootDescriptor, FieldDescriptorOrUnknown.of(fieldDescriptor)); + config.ignoreFieldAbsenceScope().contains(rootDescriptor, SubScopeId.of(fieldDescriptor)); actual = orIfIgnoringFieldAbsence(actual, defaultValue, ignoreFieldAbsence); expected = orIfIgnoringFieldAbsence(expected, defaultValue, ignoreFieldAbsence); @@ -698,7 +685,7 @@ final class ProtoTruthMessageDifferencer { // Report the full breakdown. SingularField.Builder singularFieldBuilder = SingularField.newBuilder() - .setFieldDescriptorOrUnknown(FieldDescriptorOrUnknown.of(fieldDescriptor)) + .setSubScopeId(SubScopeId.of(fieldDescriptor)) .setFieldName(fieldName) .setResult(result.build()); if (actual != null) { @@ -724,15 +711,14 @@ final class ProtoTruthMessageDifferencer { // Use the default if it's set and we're ignoring field absence, or if it's a Proto3 primitive // for which default is indistinguishable from unset. - FieldDescriptorOrUnknown fieldDescriptorOrUnknown = - FieldDescriptorOrUnknown.of(fieldDescriptor); + SubScopeId subScopeId = SubScopeId.of(fieldDescriptor); boolean isNonRepeatedProto3 = !fieldDescriptor.isRepeated() && fieldDescriptor.getContainingOneof() == null && fieldDescriptor.getFile().getSyntax() == Syntax.PROTO3; boolean ignoreFieldAbsence = isNonRepeatedProto3 - || config.ignoreFieldAbsenceScope().contains(rootDescriptor, fieldDescriptorOrUnknown); + || config.ignoreFieldAbsenceScope().contains(rootDescriptor, subScopeId); actual = orIfIgnoringFieldAbsence(actual, defaultValue, ignoreFieldAbsence); expected = orIfIgnoringFieldAbsence(expected, defaultValue, ignoreFieldAbsence); @@ -746,14 +732,14 @@ final class ProtoTruthMessageDifferencer { !doublesEqual( (double) actual, (double) expected, - config.doubleCorrespondenceMap().get(rootDescriptor, fieldDescriptorOrUnknown) + config.doubleCorrespondenceMap().get(rootDescriptor, subScopeId) )); } else if (actual instanceof Float) { result.markModifiedIf( !floatsEqual( (float) actual, (float) expected, - config.floatCorrespondenceMap().get(rootDescriptor, fieldDescriptorOrUnknown) + config.floatCorrespondenceMap().get(rootDescriptor, subScopeId) )); } else { result.markModifiedIf(!Objects.equal(actual, expected)); @@ -762,7 +748,7 @@ final class ProtoTruthMessageDifferencer { SingularField.Builder singularFieldBuilder = SingularField.newBuilder() - .setFieldDescriptorOrUnknown(FieldDescriptorOrUnknown.of(fieldDescriptor)) + .setSubScopeId(SubScopeId.of(fieldDescriptor)) .setFieldName(fieldName) .setResult(result.build()); if (actual != null) { @@ -818,10 +804,9 @@ final class ProtoTruthMessageDifferencer { UnknownFieldDescriptor unknownFieldDescriptor = UnknownFieldDescriptor.create(fieldNumber, type); - FieldDescriptorOrUnknown fieldDescriptorOrUnknown = - FieldDescriptorOrUnknown.of(unknownFieldDescriptor); + SubScopeId subScopeId = SubScopeId.of(unknownFieldDescriptor); FieldScopeResult compareFields = - config.compareFieldsScope().policyFor(rootDescriptor, fieldDescriptorOrUnknown); + config.compareFieldsScope().policyFor(rootDescriptor, subScopeId); if (compareFields == FieldScopeResult.EXCLUDED_RECURSIVELY) { builder.addSingularField( fieldNumber, SingularField.ignored(name(unknownFieldDescriptor))); @@ -835,7 +820,7 @@ final class ProtoTruthMessageDifferencer { expectedValues, compareFields == FieldScopeResult.EXCLUDED_NONRECURSIVELY, unknownFieldDescriptor, - config.subScope(rootDescriptor, fieldDescriptorOrUnknown))); + config.subScope(rootDescriptor, subScopeId))); } } @@ -917,7 +902,7 @@ final class ProtoTruthMessageDifferencer { // Report the full breakdown. SingularField.Builder singularFieldBuilder = SingularField.newBuilder() - .setFieldDescriptorOrUnknown(FieldDescriptorOrUnknown.of(unknownFieldDescriptor)) + .setSubScopeId(SubScopeId.of(unknownFieldDescriptor)) .setFieldName(fieldName) .setResult(result.build()); if (actual != null) { @@ -945,7 +930,7 @@ final class ProtoTruthMessageDifferencer { SingularField.Builder singularFieldBuilder = SingularField.newBuilder() - .setFieldDescriptorOrUnknown(FieldDescriptorOrUnknown.of(unknownFieldDescriptor)) + .setSubScopeId(SubScopeId.of(unknownFieldDescriptor)) .setFieldName(fieldName) .setResult(result.build()); if (actual != null) { diff --git a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldDescriptorOrUnknown.java b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/SubScopeId.java index 5f5b1b64..4860969e 100644 --- a/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/FieldDescriptorOrUnknown.java +++ b/extensions/proto/src/main/java/com/google/common/truth/extensions/proto/SubScopeId.java @@ -19,8 +19,8 @@ package com.google.common.truth.extensions.proto; import com.google.auto.value.AutoOneOf; import com.google.protobuf.Descriptors.FieldDescriptor; -@AutoOneOf(FieldDescriptorOrUnknown.Kind.class) -abstract class FieldDescriptorOrUnknown { +@AutoOneOf(SubScopeId.Kind.class) +abstract class SubScopeId { enum Kind { FIELD_DESCRIPTOR, UNKNOWN_FIELD_DESCRIPTOR; @@ -45,11 +45,11 @@ abstract class FieldDescriptorOrUnknown { throw new AssertionError(kind()); } - static FieldDescriptorOrUnknown of(FieldDescriptor fieldDescriptor) { - return AutoOneOf_FieldDescriptorOrUnknown.fieldDescriptor(fieldDescriptor); + static SubScopeId of(FieldDescriptor fieldDescriptor) { + return AutoOneOf_SubScopeId.fieldDescriptor(fieldDescriptor); } - static FieldDescriptorOrUnknown of(UnknownFieldDescriptor unknownFieldDescriptor) { - return AutoOneOf_FieldDescriptorOrUnknown.unknownFieldDescriptor(unknownFieldDescriptor); + static SubScopeId of(UnknownFieldDescriptor unknownFieldDescriptor) { + return AutoOneOf_SubScopeId.unknownFieldDescriptor(unknownFieldDescriptor); } } |