View Javadoc
1   /*
2    * This file is part of dependency-check-core.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   *
16   * Copyright (c) 2012 Jeremy Long. All Rights Reserved.
17   */
18  package org.owasp.dependencycheck.utils;
19  
20  import java.util.Arrays;
21  import java.util.Iterator;
22  import java.util.List;
23  import static org.junit.Assert.assertArrayEquals;
24  import static org.junit.Assert.assertEquals;
25  import static org.junit.Assert.assertTrue;
26  import org.junit.Test;
27  
28  /**
29   *
30   * @author Jeremy Long
31   */
32  public class DependencyVersionTest {
33  
34      /**
35       * Test of parseVersion method, of class DependencyVersion.
36       */
37      @Test
38      public void testParseVersion() {
39          String version = "1.2r1";
40          DependencyVersion instance = new DependencyVersion();
41          instance.parseVersion(version);
42          List<String> parts = instance.getVersionParts();
43          assertEquals(3, parts.size());
44          assertEquals("1", parts.get(0));
45          assertEquals("2", parts.get(1));
46          assertEquals("r1", parts.get(2));
47  
48          instance.parseVersion("x6.0");
49          parts = instance.getVersionParts();
50          assertEquals(2, parts.size());
51          assertEquals("x6", parts.get(0));
52          assertEquals("0", parts.get(1));
53          // TODO(code review): should this be here/do something?
54          //assertEquals("0", parts.get(2));
55  
56      }
57  
58      /**
59       * Test of iterator method, of class DependencyVersion.
60       */
61      @Test
62      public void testIterator() {
63          DependencyVersion instance = new DependencyVersion("1.2.3");
64          Iterator<String> result = instance.iterator();
65          assertTrue(result.hasNext());
66          int count = 1;
67          while (result.hasNext()) {
68              String v = result.next();
69              assertTrue(String.valueOf(count++).equals(v));
70          }
71      }
72  
73      /**
74       * Test of toString method, of class DependencyVersion.
75       */
76      @Test
77      public void testToString() {
78          DependencyVersion instance = new DependencyVersion("1.2.3r1");
79          String expResult = "1.2.3.r1";
80          String result = instance.toString();
81          assertEquals(expResult, result);
82      }
83  
84      /**
85       * Test of equals method, of class DependencyVersion.
86       */
87      @Test
88      public void testEquals() {
89          DependencyVersion obj = new DependencyVersion("1.2.3.r1");
90          DependencyVersion instance = new DependencyVersion("1.2.3");
91          boolean expResult = false;
92          boolean result = instance.equals(obj);
93          assertEquals(expResult, result);
94          obj = new DependencyVersion("1.2.3");
95          expResult = true;
96          result = instance.equals(obj);
97          assertEquals(expResult, result);
98      }
99  
100     /**
101      * Test of hashCode method, of class DependencyVersion.
102      */
103     @Test
104     public void testHashCode() {
105         DependencyVersion instance = new DependencyVersion("3.2.1");
106         int expResult = 80756;
107         int result = instance.hashCode();
108         assertEquals(expResult, result);
109     }
110 
111     /**
112      * Test of matchesAtLeastThreeLevels method, of class DependencyVersion.
113      */
114     @Test
115     public void testMatchesAtLeastThreeLevels() {
116 
117         DependencyVersion instance = new DependencyVersion("2.3.16.3");
118         DependencyVersion version = new DependencyVersion("2.3.16.4");
119         //true tests
120         assertEquals(true, instance.matchesAtLeastThreeLevels(version));
121         version = new DependencyVersion("2.3");
122         assertEquals(true, instance.matchesAtLeastThreeLevels(version));
123         //false tests
124         version = new DependencyVersion("2.3.16.1");
125         assertEquals(false, instance.matchesAtLeastThreeLevels(version));
126         version = new DependencyVersion("2");
127         assertEquals(false, instance.matchesAtLeastThreeLevels(version));
128     }
129 
130     /**
131      * Test of compareTo method, of class DependencyVersion.
132      */
133     @Test
134     public void testCompareTo() {
135         DependencyVersion instance = new DependencyVersion("1.2.3");
136         DependencyVersion version = new DependencyVersion("1.2.3");
137         assertEquals(0, instance.compareTo(version));
138         version = new DependencyVersion("1.1");
139         assertEquals(1, instance.compareTo(version));
140         version = new DependencyVersion("1.2");
141         assertEquals(1, instance.compareTo(version));
142         version = new DependencyVersion("1.3");
143         assertEquals(-1, instance.compareTo(version));
144         version = new DependencyVersion("1.2.3.1");
145         assertEquals(-1, instance.compareTo(version));
146 
147         instance = new DependencyVersion("1.0.1n");
148         version = new DependencyVersion("1.0.1m");
149         assertEquals(1, instance.compareTo(version));
150         version = new DependencyVersion("1.0.1n");
151         assertEquals(0, instance.compareTo(version));
152         version = new DependencyVersion("1.0.1o");
153         assertEquals(-1, instance.compareTo(version));
154 
155         DependencyVersion[] dv = new DependencyVersion[7];
156         dv[0] = new DependencyVersion("2.1.3");
157         dv[1] = new DependencyVersion("2.1.3.r2");
158         dv[2] = new DependencyVersion("2.1.3.r1");
159         dv[3] = new DependencyVersion("1.2.3.1");
160         dv[4] = new DependencyVersion("1.2.3");
161         dv[5] = new DependencyVersion("2");
162         dv[6] = new DependencyVersion("-");
163 
164         DependencyVersion[] expected = new DependencyVersion[7];
165         expected[0] = new DependencyVersion("-");
166         expected[1] = new DependencyVersion("1.2.3");
167         expected[2] = new DependencyVersion("1.2.3.1");
168         expected[3] = new DependencyVersion("2");
169         expected[4] = new DependencyVersion("2.1.3");
170         expected[5] = new DependencyVersion("2.1.3.r1");
171         expected[6] = new DependencyVersion("2.1.3.r2");
172         java.util.Arrays.sort(dv);
173 
174         assertArrayEquals(expected, dv);
175     }
176 
177     /**
178      * Test of getVersionParts method, of class DependencyVersion.
179      */
180     @Test
181     public void testGetVersionParts() {
182         DependencyVersion instance = new DependencyVersion();
183         List<String> versionParts = Arrays.asList("1", "1", "1");
184         instance.setVersionParts(versionParts);
185         List<String> expResult = Arrays.asList("1", "1", "1");
186         List<String> result = instance.getVersionParts();
187         assertEquals(expResult, result);
188     }
189 
190     /**
191      * Test of setVersionParts method, of class DependencyVersion.
192      */
193     @Test
194     public void testSetVersionParts() {
195         List<String> versionParts = Arrays.asList("1", "1", "1");
196         DependencyVersion instance = new DependencyVersion();
197         instance.setVersionParts(versionParts);
198     }
199 }