From 734487adfa7c1149d64e40a3016643f84f04b24d Mon Sep 17 00:00:00 2001 From: Googler Date: Thu, 23 Feb 2023 15:05:12 +0000 Subject: [PATCH] Update code to prepare for nullness annotations in Truth. In most cases, this means updating Subject subclasses and their assertThat methods to accept null actual values. (They should always accept null so that assertions like "assertThat(foo).isNull()" succeed instead of throwing NullPointerException.) Occasionally, it involves other changes, like writing `isGreaterThan(1L)` instead of `isGreaterThan(1)` to resolve an ambiguity it Kotlin overload resolution. PiperOrigin-RevId: 511776581 --- .../test/utils/truth/SpannedSubject.java | 73 +++++++++++-------- 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/truth/SpannedSubject.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/truth/SpannedSubject.java index 9a30b04202..4b8d31e6e1 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/truth/SpannedSubject.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/truth/SpannedSubject.java @@ -16,6 +16,7 @@ */ package androidx.media3.test.utils.truth; +import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.truth.Fact.fact; import static com.google.common.truth.Fact.simpleFact; import static com.google.common.truth.Truth.assertAbout; @@ -761,9 +762,9 @@ public final class SpannedSubject extends Subject { private static final class SpanFlagsSubject extends Subject implements AndSpanFlags, WithSpanFlags { - private final List flags; + @Nullable private final List flags; - private SpanFlagsSubject(FailureMetadata metadata, List flags) { + private SpanFlagsSubject(FailureMetadata metadata, @Nullable List flags) { super(metadata, flags); this.flags = flags; } @@ -795,17 +796,19 @@ public final class SpannedSubject extends Subject { private static Factory> alignmentSpans( Spanned actualSpanned) { - return (FailureMetadata metadata, List spans) -> + return (FailureMetadata metadata, @Nullable List spans) -> new AlignmentSpansSubject(metadata, spans, actualSpanned); } private static final class AlignmentSpansSubject extends Subject implements Aligned { - private final List actualSpans; + @Nullable private final List actualSpans; private final Spanned actualSpanned; private AlignmentSpansSubject( - FailureMetadata metadata, List actualSpans, Spanned actualSpanned) { + FailureMetadata metadata, + @Nullable List actualSpans, + Spanned actualSpanned) { super(metadata, actualSpans); this.actualSpans = actualSpans; this.actualSpanned = actualSpanned; @@ -816,7 +819,7 @@ public final class SpannedSubject extends Subject { List matchingSpanFlags = new ArrayList<>(); List spanAlignments = new ArrayList<>(); - for (AlignmentSpan span : actualSpans) { + for (AlignmentSpan span : checkNotNull(actualSpans)) { spanAlignments.add(span.getAlignment()); if (span.getAlignment().equals(alignment)) { matchingSpanFlags.add(actualSpanned.getSpanFlags(span)); @@ -850,11 +853,13 @@ public final class SpannedSubject extends Subject { private static final class ForegroundColorSpansSubject extends Subject implements Colored { - private final List actualSpans; + @Nullable private final List actualSpans; private final Spanned actualSpanned; private ForegroundColorSpansSubject( - FailureMetadata metadata, List actualSpans, Spanned actualSpanned) { + FailureMetadata metadata, + @Nullable List actualSpans, + Spanned actualSpanned) { super(metadata, actualSpans); this.actualSpans = actualSpans; this.actualSpanned = actualSpanned; @@ -866,7 +871,7 @@ public final class SpannedSubject extends Subject { // Use hex strings for comparison so the values in error messages are more human readable. List spanColors = new ArrayList<>(); - for (ForegroundColorSpan span : actualSpans) { + for (ForegroundColorSpan span : checkNotNull(actualSpans)) { spanColors.add(String.format("0x%08X", span.getForegroundColor())); if (span.getForegroundColor() == color) { matchingSpanFlags.add(actualSpanned.getSpanFlags(span)); @@ -887,11 +892,13 @@ public final class SpannedSubject extends Subject { private static final class BackgroundColorSpansSubject extends Subject implements Colored { - private final List actualSpans; + @Nullable private final List actualSpans; private final Spanned actualSpanned; private BackgroundColorSpansSubject( - FailureMetadata metadata, List actualSpans, Spanned actualSpanned) { + FailureMetadata metadata, + @Nullable List actualSpans, + Spanned actualSpanned) { super(metadata, actualSpans); this.actualSpans = actualSpans; this.actualSpanned = actualSpanned; @@ -903,7 +910,7 @@ public final class SpannedSubject extends Subject { // Use hex strings for comparison so the values in error messages are more human readable. List spanColors = new ArrayList<>(); - for (BackgroundColorSpan span : actualSpans) { + for (BackgroundColorSpan span : checkNotNull(actualSpans)) { spanColors.add(String.format("0x%08X", span.getBackgroundColor())); if (span.getBackgroundColor() == color) { matchingSpanFlags.add(actualSpanned.getSpanFlags(span)); @@ -932,17 +939,17 @@ public final class SpannedSubject extends Subject { private static Factory> typefaceSpans( Spanned actualSpanned) { - return (FailureMetadata metadata, List spans) -> + return (FailureMetadata metadata, @Nullable List spans) -> new TypefaceSpansSubject(metadata, spans, actualSpanned); } private static final class TypefaceSpansSubject extends Subject implements Typefaced { - private final List actualSpans; + @Nullable private final List actualSpans; private final Spanned actualSpanned; private TypefaceSpansSubject( - FailureMetadata metadata, List actualSpans, Spanned actualSpanned) { + FailureMetadata metadata, @Nullable List actualSpans, Spanned actualSpanned) { super(metadata, actualSpans); this.actualSpans = actualSpans; this.actualSpanned = actualSpanned; @@ -953,7 +960,7 @@ public final class SpannedSubject extends Subject { List matchingSpanFlags = new ArrayList<>(); List<@NullableType String> spanFontFamilies = new ArrayList<>(); - for (TypefaceSpan span : actualSpans) { + for (TypefaceSpan span : checkNotNull(actualSpans)) { spanFontFamilies.add(span.getFamily()); if (Util.areEqual(span.getFamily(), fontFamily)) { matchingSpanFlags.add(actualSpanned.getSpanFlags(span)); @@ -988,11 +995,13 @@ public final class SpannedSubject extends Subject { private static final class AbsoluteSizeSpansSubject extends Subject implements AbsoluteSized { - private final List actualSpans; + @Nullable private final List actualSpans; private final Spanned actualSpanned; private AbsoluteSizeSpansSubject( - FailureMetadata metadata, List actualSpans, Spanned actualSpanned) { + FailureMetadata metadata, + @Nullable List actualSpans, + Spanned actualSpanned) { super(metadata, actualSpans); this.actualSpans = actualSpans; this.actualSpanned = actualSpanned; @@ -1003,7 +1012,7 @@ public final class SpannedSubject extends Subject { List matchingSpanFlags = new ArrayList<>(); List spanSizes = new ArrayList<>(); - for (AbsoluteSizeSpan span : actualSpans) { + for (AbsoluteSizeSpan span : checkNotNull(actualSpans)) { spanSizes.add(span.getSize()); if (span.getSize() == size) { matchingSpanFlags.add(actualSpanned.getSpanFlags(span)); @@ -1031,17 +1040,19 @@ public final class SpannedSubject extends Subject { private static Factory> relativeSizeSpans( Spanned actualSpanned) { - return (FailureMetadata metadata, List spans) -> + return (FailureMetadata metadata, @Nullable List spans) -> new RelativeSizeSpansSubject(metadata, spans, actualSpanned); } private static final class RelativeSizeSpansSubject extends Subject implements RelativeSized { - private final List actualSpans; + @Nullable private final List actualSpans; private final Spanned actualSpanned; private RelativeSizeSpansSubject( - FailureMetadata metadata, List actualSpans, Spanned actualSpanned) { + FailureMetadata metadata, + @Nullable List actualSpans, + Spanned actualSpanned) { super(metadata, actualSpans); this.actualSpans = actualSpans; this.actualSpanned = actualSpanned; @@ -1052,7 +1063,7 @@ public final class SpannedSubject extends Subject { List matchingSpanFlags = new ArrayList<>(); List spanSizes = new ArrayList<>(); - for (RelativeSizeSpan span : actualSpans) { + for (RelativeSizeSpan span : checkNotNull(actualSpans)) { spanSizes.add(span.getSizeChange()); if (span.getSizeChange() == size) { matchingSpanFlags.add(actualSpanned.getSpanFlags(span)); @@ -1087,11 +1098,11 @@ public final class SpannedSubject extends Subject { private static final class RubySpansSubject extends Subject implements RubyText { - private final List actualSpans; + @Nullable private final List actualSpans; private final Spanned actualSpanned; private RubySpansSubject( - FailureMetadata metadata, List actualSpans, Spanned actualSpanned) { + FailureMetadata metadata, @Nullable List actualSpans, Spanned actualSpanned) { super(metadata, actualSpans); this.actualSpans = actualSpans; this.actualSpanned = actualSpanned; @@ -1101,7 +1112,7 @@ public final class SpannedSubject extends Subject { public AndSpanFlags withTextAndPosition(String text, @TextAnnotation.Position int position) { List matchingSpanFlags = new ArrayList<>(); List spanTextsAndPositions = new ArrayList<>(); - for (RubySpan span : actualSpans) { + for (RubySpan span : checkNotNull(actualSpans)) { spanTextsAndPositions.add(new TextAndPosition(span.rubyText, span.position)); if (span.rubyText.equals(text)) { matchingSpanFlags.add(actualSpanned.getSpanFlags(span)); @@ -1174,17 +1185,19 @@ public final class SpannedSubject extends Subject { private static Factory> textEmphasisSubjects( Spanned actualSpanned) { - return (FailureMetadata metadata, List spans) -> + return (FailureMetadata metadata, @Nullable List spans) -> new TextEmphasisSubject(metadata, spans, actualSpanned); } private static final class TextEmphasisSubject extends Subject implements EmphasizedText { - private final List actualSpans; + @Nullable private final List actualSpans; private final Spanned actualSpanned; private TextEmphasisSubject( - FailureMetadata metadata, List actualSpans, Spanned actualSpanned) { + FailureMetadata metadata, + @Nullable List actualSpans, + Spanned actualSpanned) { super(metadata, actualSpans); this.actualSpans = actualSpans; this.actualSpanned = actualSpanned; @@ -1197,7 +1210,7 @@ public final class SpannedSubject extends Subject { @TextAnnotation.Position int position) { List matchingSpanFlags = new ArrayList<>(); List textEmphasisMarksAndPositions = new ArrayList<>(); - for (TextEmphasisSpan span : actualSpans) { + for (TextEmphasisSpan span : checkNotNull(actualSpans)) { textEmphasisMarksAndPositions.add( new MarkAndPosition(span.markShape, span.markFill, span.position)); if (span.markFill == markFill && span.markShape == markShape && span.position == position) {