You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

HexPatternParsingTest.java 2.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.vaadin.tests.server.component.colorpicker;
  2. import static org.junit.Assert.assertTrue;
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. import java.util.Collections;
  6. import java.util.regex.Matcher;
  7. import org.junit.Test;
  8. import org.junit.runner.RunWith;
  9. import org.junit.runners.Parameterized;
  10. import org.junit.runners.Parameterized.Parameter;
  11. import org.junit.runners.Parameterized.Parameters;
  12. import com.vaadin.shared.ui.colorpicker.Color;
  13. import com.vaadin.ui.components.colorpicker.ColorUtil;
  14. @RunWith(value = Parameterized.class)
  15. public class HexPatternParsingTest {
  16. @Parameter(value = 0)
  17. public String input;
  18. @Parameter(value = 1)
  19. public int expectedRed;
  20. @Parameter(value = 2)
  21. public int expectedGreen;
  22. @Parameter(value = 3)
  23. public int expectedBlue;
  24. @Parameter(value = 4)
  25. public boolean expectedMatches;
  26. @Parameters(name = "{index}: textValidHEX({0}) = ({1},{2},{3},{4})")
  27. public static Collection<Object[]> hexdata() {
  28. Object[][] validValues = { { "#000000", 0, 0, 0, true },
  29. { "#ffffff", 255, 255, 255, true },
  30. { "#FF00ff", 255, 0, 255, true },
  31. { "#aa90e3", 170, 144, 227, true },
  32. { "#016953", 1, 105, 83, true },
  33. { "#bC64D0", 188, 100, 208, true },
  34. { "#F100FF", 241, 0, 255, true },
  35. { "#F0E9a5", 240, 233, 165, true },
  36. { "#990077", 153, 0, 119, true } };
  37. Object[][] invalidValues = { { "#0000000", 0, 0, 0, false },
  38. { "#ffgfff", 0, 0, 0, false }, { "#FF10f", 0, 0, 0, false },
  39. { "#aa9", 0, 0, 0, false }, { "#03", 0, 0, 0, false },
  40. { "#aab3c4c", 0, 0, 0, false }, { "#6010", 0, 0, 0, false },
  41. { "#CCCC", 0, 0, 0, false }, { "#9", 0, 0, 0, false },
  42. { "#10 10 10", 0, 0, 0, false }, { "101010", 0, 0, 0, false },
  43. { "#10101q", 0, 0, 0, false },
  44. { "\\s%\\d[0-9]", 0, 0, 0, false },
  45. { "#\\d.*", 0, 0, 0, false }, { "rgb\\(\\.*", 0, 0, 0, false },
  46. { "#\\d\\d\\d", 0, 0, 0, false }, { "#\\d.*", 0, 0, 0, false },
  47. { "", 0, 0, 0, false }, { "hsl(25,25,25)", 0, 0, 0, false } };
  48. ArrayList<Object[]> values = new ArrayList<>();
  49. Collections.addAll(values, validValues);
  50. Collections.addAll(values, invalidValues);
  51. return values;
  52. }
  53. @Test
  54. public void testValidHEX() {
  55. Matcher m = ColorUtil.HEX_PATTERN.matcher(input);
  56. boolean matches = m.matches();
  57. if (expectedMatches) {
  58. Color c = new Color(expectedRed, expectedGreen, expectedBlue);
  59. Color c1 = ColorUtil.getHexPatternColor(m);
  60. assertTrue(c.equals(c1));
  61. } else {
  62. assertTrue(!matches);
  63. }
  64. }
  65. }