/src/test/java/com/t11e/discovery/datatool/SubqueryTest.java

http://github.com/t11e/discovery_datatool · Java · 220 lines · 195 code · 25 blank · 0 comment · 0 complexity · 0bc79f46612429a6ec0b295d2ee5e3e2 MD5 · raw file

  1. package com.t11e.discovery.datatool;
  2. import java.util.Arrays;
  3. import org.dom4j.Document;
  4. import org.junit.Assert;
  5. import org.junit.Test;
  6. public class SubqueryTest
  7. extends EndToEndTestBase
  8. {
  9. @Test
  10. public void testSnapshotWithVarcharSubquery()
  11. {
  12. final Document doc = assertChangeset("test-snapshot-varchar", "", "snapshot",
  13. Arrays.asList("1", "2", "3"),
  14. Arrays.asList("4", "5"),
  15. false);
  16. Assert.assertEquals("red",
  17. doc.selectSingleNode("/changeset/set-item[@id='1']/properties/struct/entry[@name='color']/string/text()")
  18. .getText());
  19. Assert.assertEquals("orange,yellow",
  20. doc.selectSingleNode("/changeset/set-item[@id='2']/properties/struct/entry[@name='color']/string/text()")
  21. .getText());
  22. Assert.assertNull(doc.selectSingleNode("/changeset/set-item[@id='3']/properties/struct/entry[@name='color']"));
  23. Assert.assertEquals(
  24. "red",
  25. doc.selectSingleNode(
  26. "/changeset/set-item[@id='1']/properties/struct/entry[@name='color-delimited']/string/text()")
  27. .getText());
  28. Assert.assertEquals(
  29. "orange|yellow",
  30. doc.selectSingleNode(
  31. "/changeset/set-item[@id='2']/properties/struct/entry[@name='color-delimited']/string/text()")
  32. .getText());
  33. Assert.assertNull(doc
  34. .selectSingleNode("/changeset/set-item[@id='3']/properties/struct/entry[@name='color-delimited']"));
  35. assertColorArraySubquery(doc, "color-default");
  36. assertColorArraySubquery(doc, "color-array");
  37. }
  38. private void assertColorArraySubquery(final Document doc, final String propertyName)
  39. {
  40. Assert.assertEquals("red",
  41. doc.selectSingleNode(
  42. "/changeset/set-item[@id='1']/properties/struct/entry[@name='" + propertyName + "']/string/text()")
  43. .getText());
  44. Assert.assertEquals(2,
  45. doc.selectNodes(
  46. "/changeset/set-item[@id='2']/properties/struct/entry[@name='" + propertyName + "']/array/element/string/text()")
  47. .size());
  48. Assert.assertEquals(
  49. Arrays.asList("orange", "yellow"),
  50. nodesAsStrings(doc,
  51. "/changeset/set-item[@id='2']/properties/struct/entry[@name='" + propertyName + "']/array/element/string/text()"));
  52. Assert.assertNull(doc
  53. .selectSingleNode("/changeset/set-item[@id='3']/properties/struct/entry[@name='" + propertyName + "']"));
  54. }
  55. @Test
  56. public void testSnapshotWithIntSubquery()
  57. {
  58. final Document doc = assertChangeset("test-snapshot-int", "", "snapshot",
  59. Arrays.asList("1", "2", "3"),
  60. Arrays.asList("4", "5"),
  61. false);
  62. Assert.assertEquals("10",
  63. doc.selectSingleNode("/changeset/set-item[@id='1']/properties/struct/entry[@name='color']/string/text()")
  64. .getText());
  65. Assert.assertEquals("20,30",
  66. doc.selectSingleNode("/changeset/set-item[@id='2']/properties/struct/entry[@name='color']/string/text()")
  67. .getText());
  68. Assert.assertNull(doc.selectSingleNode("/changeset/set-item[@id='3']/properties/struct/entry[@name='color']"));
  69. }
  70. @Test
  71. public void testSnapshotWithTimestampSubquery()
  72. {
  73. final Document doc = assertChangeset("test-snapshot-timestamp", "", "snapshot",
  74. Arrays.asList("1", "2", "3"),
  75. Arrays.asList("4", "5"),
  76. false);
  77. Assert.assertEquals("2011-01-01T00:00:00.000",
  78. doc.selectSingleNode("/changeset/set-item[@id='1']/properties/struct/entry[@name='color']/string/text()")
  79. .getText());
  80. Assert.assertEquals("2011-01-02T00:00:00.000,2011-01-03T00:00:00.000",
  81. doc.selectSingleNode("/changeset/set-item[@id='2']/properties/struct/entry[@name='color']/string/text()")
  82. .getText());
  83. Assert.assertNull(doc.selectSingleNode("/changeset/set-item[@id='3']/properties/struct/entry[@name='color']"));
  84. }
  85. @Test
  86. public void testSubQueryWithMultipleColumn()
  87. {
  88. final Document doc = assertChangeset("test-snapshot-multi-column", "", "snapshot",
  89. Arrays.asList("1", "2", "3"),
  90. Arrays.asList("4", "5"),
  91. false);
  92. Assert.assertEquals("red",
  93. doc.selectSingleNode(
  94. "/changeset/set-item[@id='1']/properties/struct/entry[@name='name']/string/text()")
  95. .getText());
  96. Assert.assertEquals("10",
  97. doc.selectSingleNode(
  98. "/changeset/set-item[@id='1']/properties/struct/entry[@name='renamed']/string/text()")
  99. .getText());
  100. Assert.assertEquals("red",
  101. doc.selectSingleNode(
  102. "/changeset/set-item[@id='1']/properties/struct/entry[@name='color']/struct/entry[@name='name']/string/text()")
  103. .getText());
  104. Assert.assertEquals("10",
  105. doc.selectSingleNode(
  106. "/changeset/set-item[@id='1']/properties/struct/entry[@name='color']/struct/entry[@name='renamed']/string/text()")
  107. .getText());
  108. Assert.assertEquals("red",
  109. doc.selectSingleNode(
  110. "/changeset/set-item[@id='1']/properties/struct/entry[@name='color_delimited_name']/string/text()")
  111. .getText());
  112. Assert.assertEquals("10",
  113. doc.selectSingleNode(
  114. "/changeset/set-item[@id='1']/properties/struct/entry[@name='color_delimited_renamed']/string/text()")
  115. .getText());
  116. Assert.assertEquals(2,
  117. doc.selectNodes("/changeset/set-item[@id='2']/properties/struct/entry[@name='name']/array/element").size());
  118. Assert.assertEquals(2,
  119. doc.selectNodes("/changeset/set-item[@id='2']/properties/struct/entry[@name='renamed']/array/element").size());
  120. Assert.assertEquals("orange",
  121. doc.selectSingleNode(
  122. "/changeset/set-item[@id='2']/properties/struct/entry[@name='name']/array/element[1]/string/text()")
  123. .getText());
  124. Assert.assertEquals("yellow",
  125. doc.selectSingleNode(
  126. "/changeset/set-item[@id='2']/properties/struct/entry[@name='name']/array/element[2]/string/text()")
  127. .getText());
  128. Assert.assertEquals("20",
  129. doc.selectSingleNode(
  130. "/changeset/set-item[@id='2']/properties/struct/entry[@name='renamed']/array/element[1]/string/text()")
  131. .getText());
  132. Assert.assertEquals("30",
  133. doc.selectSingleNode(
  134. "/changeset/set-item[@id='2']/properties/struct/entry[@name='renamed']/array/element[2]/string/text()")
  135. .getText());
  136. Assert.assertEquals(2,
  137. doc.selectNodes("/changeset/set-item[@id='2']/properties/struct/entry[@name='color']/array/element").size());
  138. Assert.assertEquals("orange",
  139. doc.selectSingleNode(
  140. "/changeset/set-item[@id='2']/properties/struct/entry[@name='color']/array/element[1]/struct/entry[@name='name']/string/text()")
  141. .getText());
  142. Assert.assertEquals("yellow",
  143. doc.selectSingleNode(
  144. "/changeset/set-item[@id='2']/properties/struct/entry[@name='color']/array/element[2]/struct/entry[@name='name']/string/text()")
  145. .getText());
  146. Assert.assertEquals("orange,yellow",
  147. doc.selectSingleNode(
  148. "/changeset/set-item[@id='2']/properties/struct/entry[@name='color_delimited_name']/string/text()")
  149. .getText());
  150. Assert.assertEquals("20,30",
  151. doc.selectSingleNode(
  152. "/changeset/set-item[@id='2']/properties/struct/entry[@name='color_delimited_renamed']/string/text()")
  153. .getText());
  154. Assert.assertNull(doc.selectSingleNode("/changeset/set-item[@id='3']/properties/struct/entry[@name='color']"));
  155. }
  156. @Test
  157. public void testSubQueryWithMultipleColumnAndDiscriminator()
  158. {
  159. final Document doc = assertChangeset("test-snapshot-multi-column-discriminator", "", "snapshot",
  160. Arrays.asList("1", "2", "3"),
  161. Arrays.asList("4", "5"),
  162. false);
  163. Assert.assertEquals("1 main st",
  164. doc.selectSingleNode(
  165. "/changeset/set-item[@id='1']/properties/struct/entry[@name='address']/struct/entry[@name='biz']/struct/entry[@name='street']/string/text()")
  166. .getText());
  167. Assert.assertNull(
  168. doc.selectSingleNode(
  169. "/changeset/set-item[@id='1']/properties/struct/entry[@name='address']/struct/entry[@name='biz']/struct/entry[@name='discriminator']"));
  170. Assert.assertEquals(2,
  171. doc.selectNodes("/changeset/set-item[@id='2']/properties/struct/entry[@name='address']/struct/entry").size());
  172. Assert.assertEquals(
  173. "123 main st",
  174. doc.selectSingleNode(
  175. "/changeset/set-item[@id='2']/properties/struct/entry[@name='address']/struct/entry[@name='biz']/struct/entry[@name='street']/string/text()")
  176. .getText());
  177. Assert.assertNull(
  178. doc.selectSingleNode(
  179. "/changeset/set-item[@id='2']/properties/struct/entry[@name='address']/struct/entry[@name='biz']/struct/entry[@name='discriminator']"));
  180. Assert.assertEquals(
  181. "456 main st",
  182. doc.selectSingleNode(
  183. "/changeset/set-item[@id='2']/properties/struct/entry[@name='address']/struct/entry[@name='per']/struct/entry[@name='street']/string/text()")
  184. .getText());
  185. Assert.assertNull(doc.selectSingleNode("/changeset/set-item[@id='3']/properties/struct/entry[@name='address']"));
  186. }
  187. @Test
  188. public void testEmptySubQuery()
  189. {
  190. assertChangeset("test-snapshot-empty-subquery", "", "snapshot",
  191. Arrays.asList("1", "2", "3"),
  192. Arrays.asList("4", "5"),
  193. false);
  194. }
  195. }