View Javadoc

1   // Copyright (C) 2008 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.distribution;
23  
24  import java.io.File;
25  import java.util.regex.Pattern;
26  
27  import junit.framework.TestCase;
28  import net.grinder.messages.agent.CacheHighWaterMark;
29  import net.grinder.util.Directory;
30  import net.grinder.util.Directory.DirectoryException;
31  
32  
33  /**
34   * Unit tests for {@link CacheParametersImplementation}.
35   *
36   * @author Philip Aston
37   */
38  public class TestCacheParametersImplementation extends TestCase {
39  
40    private Directory m_directory1;
41    private Directory m_directory2;
42    private Pattern m_pattern1;
43    private Pattern m_pattern2;
44  
45    protected void setUp() throws DirectoryException {
46      m_directory1 = new Directory(new File("blah"));
47      m_directory2 = new Directory(new File("blurghah"));
48      m_pattern1 = Pattern.compile(".*");
49      m_pattern2 = Pattern.compile(".?");
50    }
51  
52    public void testBasics() throws Exception {
53      final CacheParameters cacheParameters1 =
54        new CacheParametersImplementation(m_directory1, m_pattern1);
55      final CacheParameters cacheParameters2 =
56        new CacheParametersImplementation(m_directory2, m_pattern1);
57      final CacheParameters cacheParameters3 =
58        new CacheParametersImplementation(m_directory2, m_pattern2);
59      final CacheParameters cacheParameters4 =
60        new CacheParametersImplementation(m_directory1, m_pattern1);
61  
62      assertEquals(m_directory1, cacheParameters1.getDirectory());
63      assertEquals(m_pattern1.pattern(),
64                   cacheParameters1.getFileFilterPattern().pattern());
65      assertEquals(m_directory2, cacheParameters2.getDirectory());
66  
67      assertEquals(cacheParameters1, cacheParameters1);
68      assertEquals(cacheParameters1.hashCode(), cacheParameters1.hashCode());
69  
70      assertEquals(cacheParameters1, cacheParameters4);
71      assertEquals(cacheParameters1.hashCode(), cacheParameters4.hashCode());
72  
73      assertFalse(cacheParameters1.equals(cacheParameters2));
74      assertFalse(cacheParameters2.equals(cacheParameters3));
75      assertFalse(cacheParameters2.equals(cacheParameters1));
76      assertFalse(cacheParameters2.equals(null));
77  
78      assertFalse(cacheParameters2.equals(this));
79  
80    }
81  
82    public void testCreateCacheHighWaterMark() throws Exception {
83      final CacheParameters cache1 =
84        new CacheParametersImplementation(m_directory1, m_pattern1);
85      final CacheParameters cache2 =
86        new CacheParametersImplementation(m_directory2, m_pattern2);
87  
88      final CacheHighWaterMark a = cache1.createHighWaterMark(100);
89      final CacheHighWaterMark b = cache1.createHighWaterMark(100);
90      final CacheHighWaterMark c = cache2.createHighWaterMark(120);
91  
92      assertEquals(100, a.getTime());
93      assertEquals(100, b.getTime());
94      assertEquals(120, c.getTime());
95  
96      assertTrue(a.isForSameCache(b));
97      assertTrue(a.isForSameCache(a));
98      assertTrue(b.isForSameCache(a));
99      assertFalse(a.isForSameCache(c));
100     assertFalse(c.isForSameCache(a));
101     assertFalse(c.isForSameCache(
102       new CacheHighWaterMark() {
103         public long getTime() {
104           return 120;
105         }
106 
107         public boolean isForSameCache(CacheHighWaterMark other) {
108           return true;
109         }
110       }
111     ));
112   }
113 }