Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

SerializerTestTest.java 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package com.vaadin.tests.serialization;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertTrue;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Arrays;
  6. import java.util.Date;
  7. import java.util.Locale;
  8. import java.util.TimeZone;
  9. import java.util.stream.Collectors;
  10. import org.junit.Test;
  11. import org.openqa.selenium.JavascriptExecutor;
  12. import com.vaadin.tests.tb3.MultiBrowserTest;
  13. public class SerializerTestTest extends MultiBrowserTest {
  14. private static final SimpleDateFormat FORMAT = new SimpleDateFormat(
  15. "EEE MMM dd HH:mm:ss 'GMT'Z yyyy", new Locale("en", "fi"));
  16. @Test
  17. public void testSerialization() {
  18. // Set up formatting with browsers timezone
  19. FORMAT.setTimeZone(getBrowserTimeZone());
  20. openTestURL();
  21. int logRow = 0;
  22. assertEquals("sendJson: {\"b\":false,\"s\":\"JSON\"}, null, \"value\"",
  23. getLogRow(logRow++));
  24. assertEquals(
  25. "sendDateArray: January 31, 2013 12:00:00 AM UTC January 31, 2012 12:00:00 AM UTC",
  26. getLogRow(logRow++));
  27. assertEquals("sendDate: May 1, 2013 11:12:13 AM UTC",
  28. getLogRow(logRow++));
  29. assertEquals("sendDate: January 1, 1970 12:00:00 AM UTC",
  30. getLogRow(logRow++));
  31. assertEquals(
  32. "sendEnum: PREFORMATTED, [HTML, TEXT], [PREFORMATTED, TEXT]",
  33. getLogRow(logRow++));
  34. assertEquals(
  35. "sendWrappedGenerics: {[SimpleTestBean(1)]={1=[SimpleTestBean(42)]}}",
  36. getLogRow(logRow++));
  37. assertEquals(
  38. "sendMap: {a=SimpleTestBean(1)}, [com.vaadin.tests.widgetset.server.SerializerTestExtension=SimpleTestBean(4)], [2=com.vaadin.tests.widgetset.server.SerializerTestExtension], {SimpleTestBean(4)=SimpleTestBean(-4), SimpleTestBean(-5)=SimpleTestBean(5)}",
  39. getLogRow(logRow++));
  40. assertEquals(
  41. "sendSet: [-12, -7, -4], class com.vaadin.tests.serialization.SerializerTest, [SimpleTestBean(2), SimpleTestBean(3)]",
  42. getLogRow(logRow++));
  43. assertEquals(
  44. "sendArrayList: [[2], [2]], [[2, 1], [2, 3]], [[SimpleTestBean(7)]]",
  45. getLogRow(logRow++));
  46. assertEquals(
  47. "sendList: [-234, 5, 8], class com.vaadin.tests.widgetset.server.SerializerTestExtension, class com.vaadin.tests.serialization.SerializerTest, [SimpleTestBean(-568), SimpleTestBean(234)]",
  48. getLogRow(logRow++));
  49. assertEquals(
  50. "sendNestedArray: [[7, 5]], [[SimpleTestBean(2)], [SimpleTestBean(4)]]",
  51. getLogRow(logRow++));
  52. assertEquals("sendNull: null, Not null", getLogRow(logRow++));
  53. assertEquals(
  54. "sendBean: ComplexTestBean [innerBean1=SimpleTestBean(1), innerBean2=SimpleTestBean(3), innerBeanCollection=[SimpleTestBean(6), SimpleTestBean(0)], privimite=6], SimpleTestBean(0), [SimpleTestBean(7)]",
  55. getLogRow(logRow++));
  56. assertEquals(
  57. "sendConnector: com.vaadin.tests.widgetset.server.SerializerTestExtension",
  58. getLogRow(logRow++));
  59. assertEquals("sendString: Taegghiiiinnrsssstt‡, [null, ‡]",
  60. getLogRow(logRow++));
  61. assertEquals(
  62. "sendDouble: 0.423310825130748, 5.859874482048838, [2.0, 1.7976931348623157E308, 4.9E-324]",
  63. getLogRow(logRow++));
  64. assertEquals("sendFloat: 1.0000001, 3.14159, [-12.0, 0.0, 57.0]",
  65. getLogRow(logRow++));
  66. assertEquals("sendLong: -57841235865, 577431841358, [57, 0]",
  67. getLogRow(logRow++));
  68. assertEquals("sendInt: 2, 5, [2147483647, 0]", getLogRow(logRow++));
  69. assertEquals("sendChar: Å, ∫, [a, b, c, d]", getLogRow(logRow++));
  70. assertEquals("sendByte: 5, -12, [3, 1, 2]", getLogRow(logRow++));
  71. assertEquals(
  72. "sendBoolean: false, false, [false, false, true, false, true, true]",
  73. getLogRow(logRow++));
  74. assertEquals("sendBeanSubclass: 43", getLogRow(logRow++));
  75. // Dates from state
  76. Date date1 = new Date(1);
  77. Date date2 = new Date(Date.UTC(2013 - 1900, 4, 1, 11, 12, 13));
  78. Date[] dateArray = new Date[] { new Date(1), new Date(2) };
  79. assertEquals(
  80. "state.dateArray: " + Arrays.stream(dateArray)
  81. .map(this::formatDate).collect(Collectors.joining(" ")),
  82. getLogRow(logRow++));
  83. assertEquals("state.date2: " + formatDate(date2), getLogRow(logRow++));
  84. assertEquals("state.date1: " + formatDate(date1), getLogRow(logRow++));
  85. assertEquals("state.jsonBoolean: false", getLogRow(logRow++));
  86. assertEquals("state.jsonString: a string", getLogRow(logRow++));
  87. assertEquals("state.jsonNull: NULL", getLogRow(logRow++));
  88. assertEquals("state.stringArray: [null, ‡]", getLogRow(logRow++));
  89. assertEquals("state.string: This is a tesing string ‡",
  90. getLogRow(logRow++));
  91. assertEquals("state.doubleArray: [1.7976931348623157e+308, 5e-324]",
  92. getLogRow(logRow++));
  93. assertEquals("state.doubleObjectValue: -2.718281828459045",
  94. getLogRow(logRow++));
  95. assertEquals("state.doubleValue: 3.141592653589793",
  96. getLogRow(logRow++));
  97. assertEquals("state.floatArray: [57, 0, -12]", getLogRow(logRow++));
  98. assertTrue(getLogRow(logRow++)
  99. .startsWith("state.floatObjectValue: 1.0000001"));
  100. assertTrue(getLogRow(logRow++).startsWith("state.floatValue: 3.14159"));
  101. assertEquals("state.longArray: [-57841235865, 57]",
  102. getLogRow(logRow++));
  103. assertEquals("state.longObjectValue: 577431841360",
  104. getLogRow(logRow++));
  105. assertEquals("state.longValue: 577431841359", getLogRow(logRow++));
  106. assertEquals("state.intArray: [5, 7]", getLogRow(logRow++));
  107. assertEquals("state.intObjectValue: 42", getLogRow(logRow++));
  108. assertEquals("state.intValue: 2147483647", getLogRow(logRow++));
  109. assertEquals("state.charArray: aBcD", getLogRow(logRow++));
  110. assertEquals("state.charObjectValue: å", getLogRow(logRow++));
  111. assertEquals("state.charValue: ∫", getLogRow(logRow++));
  112. assertEquals("state.byteArray: [3, 1, 2]", getLogRow(logRow++));
  113. assertEquals("state.byteObjectValue: -12", getLogRow(logRow++));
  114. assertEquals("state.byteValue: 5", getLogRow(logRow++));
  115. assertEquals(
  116. "state.booleanArray: [true, true, false, true, false, false]",
  117. getLogRow(logRow++));
  118. }
  119. private TimeZone getBrowserTimeZone() {
  120. // Ask TimeZone from browser
  121. String browserTimeZone = ((JavascriptExecutor) getDriver())
  122. .executeScript(
  123. "return Intl.DateTimeFormat().resolvedOptions().timeZone;")
  124. .toString();
  125. return TimeZone.getTimeZone(browserTimeZone);
  126. }
  127. private String formatDate(Date date) {
  128. // JavaScript formatting drops leading 0 from offset
  129. return FORMAT.format(date).replaceAll("(GMT[+-])0", "$1");
  130. }
  131. }