Fix broken unit test in TtmlDecoder.textEmphasis()

- Merge RUBY_POSITION with TEXT_EMPHASIS_POSITION in TtmlNode
This commit is contained in:
Denise LaFayette 2021-03-04 16:06:56 -08:00
parent 4ad6454713
commit 60a3af8d77
5 changed files with 37 additions and 22 deletions

BIN
library/core/jacoco.exec Normal file

Binary file not shown.

View File

@ -55,20 +55,19 @@ import java.util.Set;
MARK_AUTO MARK_AUTO
}) })
/* package */ @interface Mark { @interface Mark {
} }
/** /**
* The mark style of the text emphasis. * The mark style of the text emphasis.
*/ */
/* package */@Mark @Mark final int mark;
final int mark;
/** /**
* Position to be resolved at rendering time. Hence, it is not defined in * Position to be resolved at rendering time. Hence, it is not defined in
* {@link TextAnnotation.Position} * {@link TextAnnotation.Position}
*/ */
public static final int POSITION_OUTSIDE = 1 << 8; static final int POSITION_OUTSIDE = 1 << 8;
@Documented @Documented
@Retention(SOURCE) @Retention(SOURCE)
@ -78,13 +77,12 @@ import java.util.Set;
// Extending the definition in TextAnnotation.Position for intermediate values // Extending the definition in TextAnnotation.Position for intermediate values
POSITION_OUTSIDE POSITION_OUTSIDE
}) })
public @interface Position {} @interface Position {}
/** /**
* The position of the text emphasis relative to the base text. * The position of the text emphasis relative to the base text.
*/ */
@Position @Position final int position;
public final int position;
private static Set markValues = ImmutableSet.of( private static Set markValues = ImmutableSet.of(
TtmlNode.TEXT_EMPHASIS_AUTO, TtmlNode.TEXT_EMPHASIS_AUTO,
@ -99,9 +97,9 @@ import java.util.Set;
); );
private static Set positionValues = ImmutableSet.of( private static Set positionValues = ImmutableSet.of(
TtmlNode.TEXT_EMPHASIS_POSITION_AFTER, TtmlNode.ANNOTATION_POSITION_AFTER,
TtmlNode.TEXT_EMPHASIS_POSITION_BEFORE, TtmlNode.ANNOTATION_POSITION_BEFORE,
TtmlNode.TEXT_EMPHASIS_POSITION_OUTSIDE TtmlNode.ANNOTATION_POSITION_OUTSIDE
); );
private TextEmphasis(@Mark int mark, @TextAnnotation.Position int position) { private TextEmphasis(@Mark int mark, @TextAnnotation.Position int position) {
@ -175,13 +173,13 @@ import java.util.Set;
@Position int position = POSITION_OUTSIDE; @Position int position = POSITION_OUTSIDE;
if (positionSet.size() == 1) { if (positionSet.size() == 1) {
switch ((String) positionSet.iterator().next()) { switch ((String) positionSet.iterator().next()) {
case TtmlNode.TEXT_EMPHASIS_POSITION_AFTER: case TtmlNode.ANNOTATION_POSITION_AFTER:
position = TextAnnotation.POSITION_AFTER; position = TextAnnotation.POSITION_AFTER;
break; break;
case TtmlNode.TEXT_EMPHASIS_POSITION_OUTSIDE: case TtmlNode.ANNOTATION_POSITION_OUTSIDE:
position = POSITION_OUTSIDE; position = POSITION_OUTSIDE;
break; break;
case TtmlNode.TEXT_EMPHASIS_POSITION_BEFORE: case TtmlNode.ANNOTATION_POSITION_BEFORE:
default: default:
position = TextAnnotation.POSITION_BEFORE; position = TextAnnotation.POSITION_BEFORE;
} }

View File

@ -582,10 +582,10 @@ public final class TtmlDecoder extends SimpleSubtitleDecoder {
break; break;
case TtmlNode.ATTR_TTS_RUBY_POSITION: case TtmlNode.ATTR_TTS_RUBY_POSITION:
switch (Util.toLowerInvariant(attributeValue)) { switch (Util.toLowerInvariant(attributeValue)) {
case TtmlNode.RUBY_BEFORE: case TtmlNode.ANNOTATION_POSITION_BEFORE:
style = createIfNull(style).setRubyPosition(TextAnnotation.POSITION_BEFORE); style = createIfNull(style).setRubyPosition(TextAnnotation.POSITION_BEFORE);
break; break;
case TtmlNode.RUBY_AFTER: case TtmlNode.ANNOTATION_POSITION_AFTER:
style = createIfNull(style).setRubyPosition(TextAnnotation.POSITION_AFTER); style = createIfNull(style).setRubyPosition(TextAnnotation.POSITION_AFTER);
break; break;
default: default:

View File

@ -80,9 +80,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
public static final String RUBY_TEXT_CONTAINER = "textContainer"; public static final String RUBY_TEXT_CONTAINER = "textContainer";
public static final String RUBY_DELIMITER = "delimiter"; public static final String RUBY_DELIMITER = "delimiter";
// Values for rubyPosition // Values for text annotation (i.e. ruby, text emphasis) position
public static final String RUBY_BEFORE = "before"; public static final String ANNOTATION_POSITION_BEFORE = "before";
public static final String RUBY_AFTER = "after"; public static final String ANNOTATION_POSITION_AFTER = "after";
public static final String ANNOTATION_POSITION_OUTSIDE = "outside";
// Values for textDecoration // Values for textDecoration
public static final String LINETHROUGH = "linethrough"; public static final String LINETHROUGH = "linethrough";
public static final String NO_LINETHROUGH = "nolinethrough"; public static final String NO_LINETHROUGH = "nolinethrough";
@ -116,10 +118,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
public static final String TEXT_EMPHASIS_MARK_FILLED = "filled"; public static final String TEXT_EMPHASIS_MARK_FILLED = "filled";
public static final String TEXT_EMPHASIS_MARK_OPEN = "open"; public static final String TEXT_EMPHASIS_MARK_OPEN = "open";
public static final String TEXT_EMPHASIS_POSITION_AFTER = "after";
public static final String TEXT_EMPHASIS_POSITION_BEFORE = "before";
public static final String TEXT_EMPHASIS_POSITION_OUTSIDE = "outside";
@Nullable public final String tag; @Nullable public final String tag;
@Nullable public final String text; @Nullable public final String text;
public final boolean isTextNode; public final boolean isTextNode;

View File

@ -1218,6 +1218,25 @@ public final class SpannedSubject extends Subject {
this.position = position; this.position = position;
} }
@Override
public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
TextEmphasisSubject.MarkAndPosition that = (TextEmphasisSubject.MarkAndPosition) o;
return (position == that.position) && (mark == that.mark);
}
@Override
public int hashCode() {
int result = 34613 * mark + position;
return result;
}
@Override @Override
public String toString() { public String toString() {
return String.format("{mark=%s,position=%s}", mark, position); return String.format("{mark=%s,position=%s}", mark, position);