PageRenderTime 41ms CodeModel.GetById 10ms RepoModel.GetById 1ms app.codeStats 0ms

/jira-project/jira-components/jira-tests-parent/jira-tests-unit/src/test/java/com/atlassian/jira/issue/search/searchers/transformer/TestSimpleNavigatorCollectorVisitor.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 189 lines | 146 code | 40 blank | 3 comment | 0 complexity | c007b006694fef83e7faeee3e381d250 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.issue.search.searchers.transformer;
  2. import com.atlassian.query.clause.AndClause;
  3. import com.atlassian.query.clause.NotClause;
  4. import com.atlassian.query.clause.OrClause;
  5. import com.atlassian.query.clause.TerminalClause;
  6. import com.atlassian.query.clause.TerminalClauseImpl;
  7. import com.atlassian.query.operator.Operator;
  8. import org.junit.Test;
  9. import static org.junit.Assert.assertEquals;
  10. import static org.junit.Assert.assertFalse;
  11. import static org.junit.Assert.assertTrue;
  12. /**
  13. * @since v4.0
  14. */
  15. public class TestSimpleNavigatorCollectorVisitor {
  16. @Test
  17. public void testSingleTerminal() throws Exception {
  18. TerminalClause terminalClause = new TerminalClauseImpl("field", Operator.EQUALS, "operand");
  19. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  20. terminalClause.accept(collector);
  21. assertTrue(collector.isValid());
  22. assertEquals(1, collector.getClauses().size());
  23. assertEquals(terminalClause, collector.getClauses().get(0));
  24. }
  25. @Test
  26. public void testNotSingleTerminal() throws Exception {
  27. final TerminalClauseImpl terminalClause = new TerminalClauseImpl("field", Operator.EQUALS, "operand");
  28. NotClause notClause = new NotClause(terminalClause);
  29. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  30. notClause.accept(collector);
  31. assertFalse(collector.isValid());
  32. assertEquals(1, collector.getClauses().size());
  33. assertEquals(terminalClause, collector.getClauses().get(0));
  34. }
  35. @Test
  36. public void testOneLevelAnd() throws Exception {
  37. TerminalClause terminalClause1 = new TerminalClauseImpl("field", Operator.EQUALS, "operand1");
  38. TerminalClause terminalClause2 = new TerminalClauseImpl("field", Operator.EQUALS, "operand2");
  39. AndClause andClause = new AndClause(terminalClause1, terminalClause2);
  40. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  41. andClause.accept(collector);
  42. assertTrue(collector.isValid());
  43. assertEquals(2, collector.getClauses().size());
  44. assertEquals(terminalClause1, collector.getClauses().get(0));
  45. assertEquals(terminalClause2, collector.getClauses().get(1));
  46. }
  47. @Test
  48. public void testOneLevelAndWithNot() throws Exception {
  49. TerminalClause terminalClause1 = new TerminalClauseImpl("field", Operator.EQUALS, "operand1");
  50. TerminalClause terminalClause2 = new TerminalClauseImpl("field", Operator.EQUALS, "operand2");
  51. AndClause andClause = new AndClause(terminalClause1, new NotClause(terminalClause2));
  52. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  53. andClause.accept(collector);
  54. assertFalse(collector.isValid());
  55. assertEquals(2, collector.getClauses().size());
  56. assertEquals(terminalClause1, collector.getClauses().get(0));
  57. assertEquals(terminalClause2, collector.getClauses().get(1));
  58. }
  59. @Test
  60. public void testTwoLevelAndOr() throws Exception {
  61. TerminalClause terminalClause1 = new TerminalClauseImpl("field", Operator.EQUALS, "operand1");
  62. TerminalClause terminalClause2 = new TerminalClauseImpl("field", Operator.EQUALS, "operand2");
  63. TerminalClause terminalClause3 = new TerminalClauseImpl("field", Operator.EQUALS, "operand3");
  64. OrClause orClause = new OrClause(terminalClause2, terminalClause3);
  65. AndClause andClause = new AndClause(terminalClause1, orClause);
  66. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  67. andClause.accept(collector);
  68. assertFalse(collector.isValid());
  69. assertEquals(3, collector.getClauses().size());
  70. assertEquals(terminalClause1, collector.getClauses().get(0));
  71. assertEquals(terminalClause2, collector.getClauses().get(1));
  72. assertEquals(terminalClause3, collector.getClauses().get(2));
  73. }
  74. @Test
  75. public void testTwoLevelAndOrCaseInsensitive() throws Exception {
  76. TerminalClause terminalClause1 = new TerminalClauseImpl("FIELD", Operator.EQUALS, "operand1");
  77. TerminalClause terminalClause2 = new TerminalClauseImpl("fiELD", Operator.EQUALS, "operand2");
  78. TerminalClause terminalClause3 = new TerminalClauseImpl("field", Operator.EQUALS, "operand3");
  79. OrClause orClause = new OrClause(terminalClause2, terminalClause3);
  80. AndClause andClause = new AndClause(terminalClause1, orClause);
  81. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  82. andClause.accept(collector);
  83. assertFalse(collector.isValid());
  84. assertEquals(3, collector.getClauses().size());
  85. assertEquals(terminalClause1, collector.getClauses().get(0));
  86. assertEquals(terminalClause2, collector.getClauses().get(1));
  87. assertEquals(terminalClause3, collector.getClauses().get(2));
  88. }
  89. @Test
  90. public void testTwoLevelAnd() throws Exception {
  91. TerminalClause terminalClause1 = new TerminalClauseImpl("field", Operator.EQUALS, "operand1");
  92. TerminalClause terminalClause2 = new TerminalClauseImpl("field", Operator.EQUALS, "operand2");
  93. TerminalClause terminalClause3 = new TerminalClauseImpl("field", Operator.EQUALS, "operand3");
  94. AndClause andClause1 = new AndClause(terminalClause2, terminalClause3);
  95. AndClause andClause2 = new AndClause(terminalClause1, andClause1);
  96. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  97. andClause2.accept(collector);
  98. assertTrue(collector.isValid());
  99. assertEquals(3, collector.getClauses().size());
  100. assertEquals(terminalClause1, collector.getClauses().get(0));
  101. assertEquals(terminalClause2, collector.getClauses().get(1));
  102. assertEquals(terminalClause3, collector.getClauses().get(2));
  103. }
  104. @Test
  105. public void testThreeLevelAnd() throws Exception {
  106. TerminalClause terminalClause1 = new TerminalClauseImpl("field", Operator.EQUALS, "operand1");
  107. TerminalClause terminalClause2 = new TerminalClauseImpl("field", Operator.EQUALS, "operand2");
  108. TerminalClause terminalClause3 = new TerminalClauseImpl("field", Operator.EQUALS, "operand3");
  109. TerminalClause terminalClause4 = new TerminalClauseImpl("field", Operator.EQUALS, "operand3");
  110. AndClause andClause1 = new AndClause(terminalClause1, terminalClause2);
  111. AndClause andClause2 = new AndClause(terminalClause3, andClause1);
  112. AndClause andClause3 = new AndClause(terminalClause4, andClause2);
  113. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  114. andClause3.accept(collector);
  115. assertTrue(collector.isValid());
  116. assertEquals(4, collector.getClauses().size());
  117. assertTrue(collector.getClauses().contains(terminalClause1));
  118. assertTrue(collector.getClauses().contains(terminalClause2));
  119. assertTrue(collector.getClauses().contains(terminalClause3));
  120. assertTrue(collector.getClauses().contains(terminalClause4));
  121. }
  122. @Test
  123. public void testOneLevelOr() throws Exception {
  124. TerminalClause terminalClause1 = new TerminalClauseImpl("field", Operator.EQUALS, "operand1");
  125. TerminalClause terminalClause2 = new TerminalClauseImpl("field", Operator.EQUALS, "operand2");
  126. OrClause orClause = new OrClause(terminalClause1, terminalClause2);
  127. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  128. orClause.accept(collector);
  129. assertFalse(collector.isValid());
  130. assertEquals(2, collector.getClauses().size());
  131. assertEquals(terminalClause1, collector.getClauses().get(0));
  132. assertEquals(terminalClause2, collector.getClauses().get(1));
  133. }
  134. @Test
  135. public void testThreeLevelAndOrNot() throws Exception {
  136. TerminalClause terminalClause1 = new TerminalClauseImpl("field", Operator.EQUALS, "operand1");
  137. TerminalClause terminalClause2 = new TerminalClauseImpl("field", Operator.EQUALS, "operand2");
  138. TerminalClause terminalClause3 = new TerminalClauseImpl("field", Operator.EQUALS, "operand3");
  139. OrClause orClause = new OrClause(new NotClause(terminalClause2), terminalClause3);
  140. AndClause andClause = new AndClause(terminalClause1, orClause);
  141. SimpleNavigatorCollectorVisitor collector = new SimpleNavigatorCollectorVisitor("field");
  142. andClause.accept(collector);
  143. assertFalse(collector.isValid());
  144. assertEquals(3, collector.getClauses().size());
  145. assertEquals(terminalClause1, collector.getClauses().get(0));
  146. assertEquals(terminalClause2, collector.getClauses().get(1));
  147. assertEquals(terminalClause3, collector.getClauses().get(2));
  148. }
  149. }