View Javadoc

1   // Copyright (C) 2008 - 2009 Philip Aston
2   // All rights reserved.
3   //
4   // This file is part of The Grinder software distribution. Refer to
5   // the file LICENSE which is part of The Grinder distribution for
6   // licensing details. The Grinder distribution is available on the
7   // Internet at http://grinder.sourceforge.net/
8   //
9   // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12  // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13  // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15  // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16  // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20  // OF THE POSSIBILITY OF SUCH DAMAGE.
21  
22  package net.grinder.console.model;
23  
24  import java.io.File;
25  import java.text.NumberFormat;
26  import java.util.Arrays;
27  import java.util.HashSet;
28  import java.util.Set;
29  
30  import net.grinder.console.model.SampleModelViews.Listener;
31  import net.grinder.statistics.ExpressionView;
32  import net.grinder.statistics.StatisticsServices;
33  import net.grinder.statistics.StatisticsServicesImplementation;
34  import net.grinder.statistics.StatisticsView;
35  import net.grinder.statistics.TestStatisticsQueries;
36  import net.grinder.testutility.AbstractFileTestCase;
37  import net.grinder.testutility.RandomStubFactory;
38  
39  
40  /**
41   * Unit tests for {@link SampleModelViewsImplementation}.
42   *
43   * @author Philip Aston
44   */
45  public class TestSampleModelViewsImplementation extends AbstractFileTestCase {
46  
47    private final RandomStubFactory<SampleModel> m_modelStubFactory =
48      RandomStubFactory.create(SampleModel.class);
49    private final SampleModel m_model = m_modelStubFactory.getStub();
50  
51    private ConsoleProperties m_consoleProperties;
52  
53    protected void setUp() throws Exception {
54      super.setUp();
55      m_consoleProperties =
56        new ConsoleProperties(null, new File(getDirectory(), "props"));
57    }
58  
59    public void testConstruction() throws Exception {
60  
61      final StatisticsServices statisticsServices =
62        StatisticsServicesImplementation.getInstance();
63  
64      final Set<ExpressionView> standardSummaryExpressionViews =
65        new HashSet<ExpressionView>(Arrays.asList(
66          statisticsServices.getSummaryStatisticsView().getExpressionViews()));
67  
68      final SampleModelViews sampleModelViews =
69        new SampleModelViewsImplementation(
70          m_consoleProperties,
71          statisticsServices,
72          m_model);
73  
74      m_modelStubFactory.assertSuccess("getPeakTPSExpression");
75  
76      final Set<ExpressionView> cumulativeViewSet =
77        expressionViewsSet(sampleModelViews.getCumulativeStatisticsView());
78  
79      assertTrue(cumulativeViewSet.containsAll(standardSummaryExpressionViews));
80      assertFalse(standardSummaryExpressionViews.containsAll(cumulativeViewSet));
81  
82      final Set<ExpressionView> intervalViewSet =
83        expressionViewsSet(sampleModelViews.getIntervalStatisticsView());
84  
85      assertTrue(intervalViewSet.containsAll(standardSummaryExpressionViews));
86      assertTrue(cumulativeViewSet.containsAll(intervalViewSet));
87      assertFalse(intervalViewSet.containsAll(cumulativeViewSet));
88  
89      final ExpressionView expressionView =
90        statisticsServices.getStatisticExpressionFactory().createExpressionView(
91          "My view", "userLong0", false);
92  
93      assertFalse(cumulativeViewSet.contains(expressionView));
94  
95      sampleModelViews.registerStatisticExpression(expressionView);
96  
97      assertTrue(
98        expressionViewsSet(sampleModelViews.getCumulativeStatisticsView())
99        .contains(expressionView));
100 
101     assertTrue(
102       expressionViewsSet(sampleModelViews.getIntervalStatisticsView())
103       .contains(expressionView));
104 
105     sampleModelViews.resetStatisticsViews();
106 
107     assertFalse(
108       expressionViewsSet(sampleModelViews.getCumulativeStatisticsView())
109       .contains(expressionView));
110 
111     assertFalse(
112       expressionViewsSet(sampleModelViews.getIntervalStatisticsView())
113       .contains(expressionView));
114 
115     final TestStatisticsQueries statisticsQueries =
116       sampleModelViews.getTestStatisticsQueries();
117     assertNotNull(statisticsQueries);
118     assertSame(statisticsQueries,
119                statisticsServices.getTestStatisticsQueries());
120 
121     m_modelStubFactory.assertNoMoreCalls();
122   }
123 
124   private HashSet<ExpressionView> expressionViewsSet(
125     StatisticsView statisticsView) {
126 
127     return new HashSet<ExpressionView>(
128         Arrays.asList(statisticsView.getExpressionViews()));
129   }
130 
131   public void testListeners() throws Exception {
132     final StatisticsServices statisticsServices =
133       StatisticsServicesImplementation.getInstance();
134 
135     final SampleModelViews sampleModelViews =
136       new SampleModelViewsImplementation(
137         m_consoleProperties,
138         statisticsServices,
139         m_model);
140 
141     final RandomStubFactory<Listener> listenerStubFactory =
142       RandomStubFactory.create(Listener.class);
143     sampleModelViews.addListener(listenerStubFactory.getStub());
144 
145     sampleModelViews.resetStatisticsViews();
146     listenerStubFactory.assertSuccess("resetStatisticsViews");
147 
148     final ExpressionView expressionView =
149       statisticsServices.getStatisticExpressionFactory().createExpressionView(
150         "My view", "userLong0", false);
151 
152     sampleModelViews.registerStatisticExpression(expressionView);
153     listenerStubFactory.assertSuccess("newStatisticExpression", expressionView);
154 
155     listenerStubFactory.assertNoMoreCalls();
156   }
157 
158   public void testNumberFormat() throws Exception {
159 
160     final SampleModelViews sampleModelViews =
161       new SampleModelViewsImplementation(
162         m_consoleProperties,
163         StatisticsServicesImplementation.getInstance(),
164         m_model);
165 
166     final NumberFormat numberFormat = sampleModelViews.getNumberFormat();
167 
168     assertNotNull(numberFormat);
169     assertSame(numberFormat, sampleModelViews.getNumberFormat());
170 
171     assertEquals("1.23", numberFormat.format(1.234));
172 
173     m_consoleProperties.setSignificantFigures(4);
174 
175     final NumberFormat numberFormat4sf = sampleModelViews.getNumberFormat();
176     assertNotSame(numberFormat, numberFormat4sf);
177     assertEquals("1.234", numberFormat4sf.format(1.234));
178   }
179 }