/** * Copyright (C) 2014-2017 Philip Helger (www.helger.com) * philip[at]helger[dot]com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.helger.css.utils; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.Test; /** * Test class for class {@link CSSRectHelper}. * * @author Philip Helger */ public final class CSSRectHelperTest { @Test public void testIsRectValue () { // Invalid string assertFalse (CSSRectHelper.isRectValue (null)); assertFalse (CSSRectHelper.isRectValue ("")); assertFalse (CSSRectHelper.isRectValue (" ")); assertFalse (CSSRectHelper.isRectValue (" rect ")); assertFalse (CSSRectHelper.isRectValue (" rect( ")); assertFalse (CSSRectHelper.isRectValue (" rect ( ")); assertFalse (CSSRectHelper.isRectValue (" rect ( 5 ")); assertFalse (CSSRectHelper.isRectValue (" rect ( 5 6 7 8 ))")); assertFalse (CSSRectHelper.isRectValue (" rect (( 5 6 7 8 )")); assertFalse (CSSRectHelper.isRectValue (" rect ( 5, 6, 7, 8 ))")); assertFalse (CSSRectHelper.isRectValue (" rect (( 5, 6, 7, 8 )")); // OK, current syntax assertTrue (CSSRectHelper.isRectValue ("rect(0,0,100,50)")); assertTrue (CSSRectHelper.isRectValue ("rect( 0 , 0 , 100 , 50 ) ")); assertTrue (CSSRectHelper.isRectValue ("rect(0%,0%,100%,50%)")); assertTrue (CSSRectHelper.isRectValue ("rect( 0% , 0% , 100% , 50% )")); assertTrue (CSSRectHelper.isRectValue ("rect(0in,0px,10em,50pt)")); assertTrue (CSSRectHelper.isRectValue ("rect( 0in , 0px , 10em , 50pt ) ")); assertTrue (CSSRectHelper.isRectValue ("rect(auto, auto, auto, auto)")); // OK, backward compatible syntax assertTrue (CSSRectHelper.isRectValue ("rect(0 0 100 50)")); assertTrue (CSSRectHelper.isRectValue ("rect( 0 0 100 50 ) ")); assertTrue (CSSRectHelper.isRectValue ("rect(0% 0% 100% 50%)")); assertTrue (CSSRectHelper.isRectValue ("rect( 0% 0% 100% 50% )")); assertTrue (CSSRectHelper.isRectValue ("rect(0in 0px 10em 50pt)")); assertTrue (CSSRectHelper.isRectValue ("rect( 0in 0px 10em 50pt ) ")); assertTrue (CSSRectHelper.isRectValue ("rect(auto auto auto auto)")); // error cases assertFalse (CSSRectHelper.isRectValue ("rect( a , 0px , 10em , 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in , a , 10em , 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in , 0px , a , 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in , 0px , 10em , a ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in , 0px , 10em ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in , 0px , 10em, 20pt, 22pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in , 0px , 10em, 20.5pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect(auto, auto, auto, auto,auto)")); assertFalse (CSSRectHelper.isRectValue ("rect( a 0px 10em 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in a 10em 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in 0px a 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in 0px 10em a ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in 0px 10em ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in 0px 10em 20pt 22pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in 0px 10em 20.5pt) ")); assertFalse (CSSRectHelper.isRectValue ("rect(auto auto auto auto auto)")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in% , 0px , 10em , 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in , 0px% , 10em , 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in , 0px , 10em% , 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in , 0px , 10em , 50pt% ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in% 0px 10em 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in 0px% 10em 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in 0px 10em% 50pt ) ")); assertFalse (CSSRectHelper.isRectValue ("rect( 0in 0px 10em 50pt% ) ")); } @Test public void testGetRectValue () { // Invalid string assertNull (CSSRectHelper.getRectValues (null)); assertNull (CSSRectHelper.getRectValues ("")); assertNull (CSSRectHelper.getRectValues (" ")); assertNull (CSSRectHelper.getRectValues (" rect ")); assertNull (CSSRectHelper.getRectValues (" rect( ")); assertNull (CSSRectHelper.getRectValues (" rect ( ")); assertNull (CSSRectHelper.getRectValues (" rect ( 5 ")); assertNull (CSSRectHelper.getRectValues (" rect ( 5 6 7 8 ))")); assertNull (CSSRectHelper.getRectValues (" rect (( 5 6 7 8 )")); assertNull (CSSRectHelper.getRectValues (" rect ( 5, 6, 7, 8 ))")); assertNull (CSSRectHelper.getRectValues (" rect (( 5, 6, 7, 8 )")); // OK, current syntax assertArrayEquals (new String [] { "0in", "0pt", "100ex", "50em" }, CSSRectHelper.getRectValues ("rect(0in,0pt,100ex,50em)")); assertArrayEquals (new String [] { "0", "0", "100", "50" }, CSSRectHelper.getRectValues ("rect(0,0,100,50)")); assertArrayEquals (new String [] { "0", "0", "100", "50" }, CSSRectHelper.getRectValues ("rect( 0 , 0 , 100 , 50 ) ")); assertArrayEquals (new String [] { "0%", "0%", "100%", "50%" }, CSSRectHelper.getRectValues ("rect(0%,0%,100%,50%)")); assertArrayEquals (new String [] { "0%", "0%", "100%", "50%" }, CSSRectHelper.getRectValues ("rect( 0% , 0% , 100% , 50% )")); assertArrayEquals (new String [] { "0in", "0px", "10em", "50pt" }, CSSRectHelper.getRectValues ("rect(0in,0px,10em,50pt)")); assertArrayEquals (new String [] { "0in", "0px", "10em", "50pt" }, CSSRectHelper.getRectValues ("rect( 0in , 0px , 10em , 50pt ) ")); assertArrayEquals (new String [] { "auto", "auto", "auto", "auto" }, CSSRectHelper.getRectValues ("rect(auto, auto, auto, auto)")); // OK, backward compatible syntax assertArrayEquals (new String [] { "0", "0", "100", "50" }, CSSRectHelper.getRectValues ("rect(0 0 100 50)")); assertArrayEquals (new String [] { "0", "0", "100", "50" }, CSSRectHelper.getRectValues ("rect( 0 0 100 50 ) ")); assertArrayEquals (new String [] { "0%", "0%", "100%", "50%" }, CSSRectHelper.getRectValues ("rect(0% 0% 100% 50%)")); assertArrayEquals (new String [] { "0%", "0%", "100%", "50%" }, CSSRectHelper.getRectValues ("rect( 0% 0% 100% 50% )")); assertArrayEquals (new String [] { "0in", "0px", "10em", "50pt" }, CSSRectHelper.getRectValues ("rect(0in 0px 10em 50pt)")); assertArrayEquals (new String [] { "0in", "0px", "10em", "50pt" }, CSSRectHelper.getRectValues ("rect( 0in 0px 10em 50pt ) ")); assertArrayEquals (new String [] { "auto", "auto", "auto", "auto" }, CSSRectHelper.getRectValues ("rect(auto auto auto auto)")); } }