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.

RGBPatternParsingTest.java 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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 RGBPatternParsingTest {
  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}: testRGBData({0}) = ({1},{2},{3},{4})")
  27. public static Collection<Object[]> rgbdata() {
  28. Object[][] validValues = { { "rgb(0,0,0)", 0, 0, 0, true },
  29. { "rgb(0, 0, 0)", 0, 0, 0, true },
  30. { "rgb(0 0 0)", 0, 0, 0, true },
  31. { "rgb(1 1 1)", 1, 1, 1, true },
  32. { "rgb(0 100 255)", 0, 100, 255, true },
  33. { "rgb(255,255,255)", 255, 255, 255, true },
  34. { "RGB(255, 255, 255 )", 255, 255, 255, true },
  35. { "rgb(255 255 255)", 255, 255, 255, true },
  36. { "rgb(1, 10, 100)", 1, 10, 100, true } };
  37. Object[][] invalidValues = { { "rgb(,0,0)", 0, 0, 0, false },
  38. { "rgb(0, 0, 0, )", 0, 0, 0, false },
  39. { "rgb(0.0,0,0)", 0, 0, 0, false },
  40. { "rgb( 0 0 -1 )", 0, 0, 0, false },
  41. { "rgb(1 00)", 0, 0, 0, false },
  42. { "rgb(255,255,255.)", 0, 0, 0, false },
  43. { "r gb(255, 256, 255)", 0, 0, 0, false },
  44. { "rgb( 255, 255, 256 )", 0, 0, 0, false },
  45. { "rgb(163, 2%, 210)", 0, 0, 0, false },
  46. { "rGb(000)", 0, 0, 0, false },
  47. { "rgb(255255255)", 0, 0, 0, false },
  48. { "rGBA(255,255,255)", 0, 0, 0, false },
  49. { "rgb 255 255 255)", 0, 0, 0, false },
  50. { "255, 255, 0", 0, 0, 0, false },
  51. { "hsl(10,0,0)", 0, 0, 0, false },
  52. { "\\s%\\d[0-9]", 0, 0, 0, false },
  53. { "rgb(\\.*,255,255)", 0, 0, 0, false },
  54. { "#\\d.*", 0, 0, 0, false }, { "", 0, 0, 0, false },
  55. { "rgb(\\d,\\d,\\d)", 0, 0, 0, false },
  56. { "^rgb\\( \\.*)", 0, 0, 0, false } };
  57. ArrayList<Object[]> values = new ArrayList<>();
  58. Collections.addAll(values, validValues);
  59. Collections.addAll(values, invalidValues);
  60. return values;
  61. }
  62. @Test
  63. public void testRGBData() {
  64. Matcher m = ColorUtil.RGB_PATTERN.matcher(input);
  65. boolean matches = m.matches();
  66. if (expectedMatches) {
  67. Color expectedColor = new Color(expectedRed, expectedGreen,
  68. expectedBlue);
  69. Color c1 = ColorUtil.getRGBPatternColor(m);
  70. assertTrue(expectedColor.equals(c1));
  71. } else {
  72. assertTrue(!matches);
  73. }
  74. }
  75. }