View Javadoc

1   // Copyright (C) 2000 Paco Gomez
2   // Copyright (C) 2000 - 2009 Philip Aston
3   // All rights reserved.
4   //
5   // This file is part of The Grinder software distribution. Refer to
6   // the file LICENSE which is part of The Grinder distribution for
7   // licensing details. The Grinder distribution is available on the
8   // Internet at http://grinder.sourceforge.net/
9   //
10  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
13  // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
14  // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
15  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
16  // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
17  // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
18  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
19  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
20  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
21  // OF THE POSSIBILITY OF SUCH DAMAGE.
22  
23  package net.grinder.statistics;
24  
25  import junit.framework.TestCase;
26  
27  import java.util.Comparator;
28  
29  import net.grinder.statistics.StatisticsSet;
30  
31  
32  /**
33   * Unit test case for <code>StatisticsView</code>.
34   *
35   * @author Philip Aston
36   * @see StatisticsSet
37   */
38  public class TestStatisticsView extends TestCase {
39  
40    private ExpressionView[] m_views;
41  
42    private int m_numberOfUniqueViews;
43  
44    protected void setUp() throws Exception {
45      final StatisticExpressionFactory statisticExpressionFactory =
46        StatisticsServicesImplementation.getInstance().getStatisticExpressionFactory();
47  
48      m_views = new ExpressionView[] {
49        statisticExpressionFactory.createExpressionView("One", "(+ userLong0 userLong1)", false),
50        statisticExpressionFactory.createExpressionView("Two", "userLong0", false),
51        statisticExpressionFactory.createExpressionView("Three", "(+ userLong0 userLong1)", false),
52        statisticExpressionFactory.createExpressionView("Four", "userLong1", false),
53        statisticExpressionFactory.createExpressionView("One", "(+ userLong0 userLong1)", false),
54      };
55  
56      m_numberOfUniqueViews = 4;
57    }
58  
59    public void testGetExpressionViews() throws Exception {
60      final StatisticsView statisticsView = new StatisticsView();
61  
62      assertEquals(0, statisticsView.getExpressionViews().length);
63  
64      for (int i = 0; i < m_views.length; ++i) {
65        statisticsView.add(m_views[i]);
66      }
67  
68      final ExpressionView[] expressionViews = statisticsView
69          .getExpressionViews();
70  
71      assertEquals(m_numberOfUniqueViews, expressionViews.length);
72  
73      // Ordered in order of creation.
74      assertEquals(m_views[0], expressionViews[0]);
75      assertEquals(m_views[1], expressionViews[1]);
76      assertEquals(m_views[2], expressionViews[2]);
77      assertEquals(m_views[3], expressionViews[3]);
78  
79      // Again, adding in a different order.
80      final StatisticsView statisticsView2 = new StatisticsView();
81  
82      for (int i = m_views.length - 1; i >= 0; --i) {
83        statisticsView2.add(m_views[(2 + i) % m_views.length]);
84      }
85  
86      final ExpressionView[] expressionViews2 = statisticsView
87          .getExpressionViews();
88  
89      assertEquals(m_numberOfUniqueViews, expressionViews2.length);
90  
91      // Ordered in order of creation.
92      assertEquals(m_views[0], expressionViews2[0]);
93      assertEquals(m_views[1], expressionViews2[1]);
94      assertEquals(m_views[2], expressionViews2[2]);
95      assertEquals(m_views[3], expressionViews2[3]);
96    }
97  
98    public void testAddStatisticsView() throws Exception {
99      final StatisticsView statisticsView = new StatisticsView();
100 
101     statisticsView.add(statisticsView);
102     assertEquals(0, statisticsView.getExpressionViews().length);
103 
104     final StatisticsView statisticsView2 = new StatisticsView();
105 
106     statisticsView.add(statisticsView);
107     assertEquals(0, statisticsView.getExpressionViews().length);
108 
109     for (int i = 0; i < m_views.length; ++i) {
110       statisticsView.add(m_views[i]);
111     }
112 
113     statisticsView2.add(statisticsView);
114     assertEquals(m_numberOfUniqueViews,
115       statisticsView2.getExpressionViews().length);
116 
117     statisticsView2.add(statisticsView);
118     assertEquals(m_numberOfUniqueViews,
119       statisticsView2.getExpressionViews().length);
120   }
121 
122   public void testComparator() throws Exception {
123     // Test the parts of the Comparator that the normal use cases don't reach.
124     final Comparator<ExpressionView> comparator =
125       new StatisticsView.CreationOrderComparator();
126 
127     assertEquals(0, comparator.compare(m_views[0], m_views[0]));
128   }
129 }