FormatOptions { public boolean validate(int allowedFlags, boolean allowPrecision) { if (isDefault()) { return true; } if ((flags & ~allowedFlags) != 0) { return false; } if (!allowPrecision && precision != UNSET) { return false; } return checkFlagConsistency(flags, getWidth() != UNSET); } private  FormatOptions(int flags, int width, int precision); static FormatOptions getDefault(); static FormatOptions of(int flags, int width, int precision); static FormatOptions parse(String message, int pos, int end, boolean isUpperCase); FormatOptions filter(int allowedFlags, boolean allowWidth, boolean allowPrecision); @SuppressWarnings("ReferenceEquality") boolean isDefault(); int getWidth(); int getPrecision(); boolean validate(int allowedFlags, boolean allowPrecision); boolean areValidFor(FormatChar formatChar); int getFlags(); boolean shouldLeftAlign(); boolean shouldShowAltForm(); boolean shouldShowLeadingZeros(); boolean shouldPrefixPlusForPositiveValues(); boolean shouldPrefixSpaceForPositiveValues(); boolean shouldShowGrouping(); boolean shouldUpperCase(); StringBuilder appendPrintfOptions(StringBuilder out); @Override boolean equals(@NullableDecl Object o); @Override int hashCode(); static final int FLAG_PREFIX_SPACE_FOR_POSITIVE_VALUES; static final int FLAG_SHOW_ALT_FORM; static final int FLAG_USE_PARENS_FOR_NEGATIVE_VALUES; static final int FLAG_PREFIX_PLUS_FOR_POSITIVE_VALUES; static final int FLAG_SHOW_GROUPING; static final int FLAG_LEFT_ALIGN; static final int FLAG_SHOW_LEADING_ZEROS; static final int FLAG_UPPER_CASE; static final int ALL_FLAGS; static final int UNSET; }
@Test public void testValidate() { FormatOptions options = parse("-#,123.456", false); int givenFlags = FLAG_LEFT_ALIGN | FLAG_SHOW_ALT_FORM | FLAG_SHOW_GROUPING; assertThat(options.validate(ALL_FLAGS, true)).isTrue(); assertThat(options.validate(givenFlags, true)).isTrue(); assertThat(options.validate(givenFlags, false)).isFalse(); assertThat(options.validate(FLAG_LEFT_ALIGN | FLAG_SHOW_ALT_FORM, true)).isFalse(); }