CssUtils { public static String normalizeCssProperty(String str) { return str == null ? null : CssPropertyNormalizer.normalize(str); } private  CssUtils(); static List<String> splitStringWithComma(final String value); static BlendMode parseBlendMode(String cssValue); static List<List<String>> extractShorthandProperties(String str); static String normalizeCssProperty(String str); static String removeDoubleSpacesAndTrim(String str); static Integer parseInteger(String str); static Float parseFloat(String str); static Double parseDouble(String str); static float parseAngle(String angle, String defaultMetric); static float parseAngle(String angle); static int[] parseAspectRatio(String str); static float parseAbsoluteLength(String length, String defaultMetric); static float parseAbsoluteLength(String length); static float parseRelativeValue(final String relativeValue, final float baseValue); static UnitValue parseLengthValueToPt(final String value, final float emValue, final float remValue); static boolean isValidNumericValue(final String value); static float parseAbsoluteFontSize(String fontSizeValue, String defaultMetric); static float parseAbsoluteFontSize(String fontSizeValue); static float parseRelativeFontSize(final String relativeFontSizeValue, final float baseValue); static UnitValue[] parseSpecificCornerBorderRadius(String specificBorderRadius, final float emValue, final float remValue); static float parseResolution(String resolutionStr); static int determinePositionBetweenValueAndUnit(String string); static boolean isMetricValue(final String value); static boolean isAngleValue(final String value); static boolean isRelativeValue(final String value); static boolean isFontRelativeValue(final String value); static boolean isPercentageValue(final String value); static boolean isRemValue(final String value); static boolean isEmValue(final String value); static boolean isExValue(final String value); static boolean isNumericValue(final String value); static String extractUrl(final String url); static boolean isBase64Data(String data); static int findNextUnescapedChar(String source, char ch, int startIndex); static boolean isColorProperty(String value); static boolean compareFloats(double d1, double d2); static boolean compareFloats(float f1, float f2); static float[] parseRgbaColor(String colorValue); static Range parseUnicodeRange(String unicodeRange); static float convertPtsToPx(float pts); static double convertPtsToPx(double pts); static float convertPxToPts(float px); static double convertPxToPts(double px); static boolean isStyleSheetLink(IElementNode headChildElement); static boolean isInitialOrInheritOrUnset(String value);  }
@Test public void normalizeProperty() { Assert.assertEquals("part1 part2", CssUtils.normalizeCssProperty(" part1 part2 ")); Assert.assertEquals("\" the next quote is ESCAPED \\\\\\\" still IN string \"", CssUtils.normalizeCssProperty("\" the next quote is ESCAPED \\\\\\\" still IN string \"")); Assert.assertEquals("\" the next quote is NOT ESCAPED \\\\\" not in the string", CssUtils.normalizeCssProperty("\" the next quote is NOT ESCAPED \\\\\" NOT in THE string")); Assert.assertEquals("\" You CAN put 'Single Quotes' in double quotes WITHOUT escaping\"", CssUtils.normalizeCssProperty("\" You CAN put 'Single Quotes' in double quotes WITHOUT escaping\"")); Assert.assertEquals("' You CAN put \"DOUBLE Quotes\" in double quotes WITHOUT escaping'", CssUtils.normalizeCssProperty("' You CAN put \"DOUBLE Quotes\" in double quotes WITHOUT escaping'")); Assert.assertEquals("\" ( BLA \" attr(href)\" BLA ) \"", CssUtils.normalizeCssProperty("\" ( BLA \" AttR( Href )\" BLA ) \"")); Assert.assertEquals("\" ( \"attr(href) \" ) \"", CssUtils.normalizeCssProperty("\" ( \"aTTr( hREf ) \" ) \"")); Assert.assertEquals("rgba(255,255,255,0.2)", CssUtils.normalizeCssProperty("rgba( 255, 255 , 255 ,0.2 )")); }
@Test public void normalizeUrlTest() { Assert.assertEquals("url(data:application/font-woff;base64,2CBPCRXmgywtV1t4oWwjBju0kqkvfhPs0cYdMgFtDSY5uL7MIGT5wiGs078HrvBHekp0Yf=)", CssUtils.normalizeCssProperty("url(data:application/font-woff;base64,2CBPCRXmgywtV1t4oWwjBju0kqkvfhPs0cYdMgFtDSY5uL7MIGT5wiGs078HrvBHekp0Yf=)")); Assert.assertEquals("url(\"quoted Url\")", CssUtils.normalizeCssProperty(" url( \"quoted Url\")")); Assert.assertEquals("url('quoted Url')", CssUtils.normalizeCssProperty(" url( 'quoted Url')")); Assert.assertEquals("url(haveEscapedEndBracket\\))", CssUtils.normalizeCssProperty("url( haveEscapedEndBracket\\) )")); }