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  import org.owasp.dependencycheck.BaseTest;
28  
29  /**
30   *
31   * @author Jeremy Long
32   */
33  public class DependencyVersionTest extends BaseTest {
34  
35      /**
36       * Test of parseVersion method, of class DependencyVersion.
37       */
38      @Test
39      public void testParseVersion() {
40          String version = "1.2r1";
41          DependencyVersion instance = new DependencyVersion();
42          instance.parseVersion(version);
43          List<String> parts = instance.getVersionParts();
44          assertEquals(3, parts.size());
45          assertEquals("1", parts.get(0));
46          assertEquals("2", parts.get(1));
47          assertEquals("r1", parts.get(2));
48  
49          instance.parseVersion("x6.0");
50          parts = instance.getVersionParts();
51          assertEquals(2, parts.size());
52          assertEquals("x6", parts.get(0));
53          assertEquals("0", parts.get(1));
54          // TODO(code review): should this be here/do something?
55          //assertEquals("0", parts.get(2));
56  
57      }
58  
59      /**
60       * Test of iterator method, of class DependencyVersion.
61       */
62      @Test
63      public void testIterator() {
64          DependencyVersion instance = new DependencyVersion("1.2.3");
65          Iterator<String> result = instance.iterator();
66          assertTrue(result.hasNext());
67          int count = 1;
68          while (result.hasNext()) {
69              String v = result.next();
70              assertTrue(String.valueOf(count++).equals(v));
71          }
72      }
73  
74      /**
75       * Test of toString method, of class DependencyVersion.
76       */
77      @Test
78      public void testToString() {
79          DependencyVersion instance = new DependencyVersion("1.2.3r1");
80          String expResult = "1.2.3.r1";
81          String result = instance.toString();
82          assertEquals(expResult, result);
83      }
84  
85      /**
86       * Test of equals method, of class DependencyVersion.
87       */
88      @Test
89      public void testEquals() {
90          DependencyVersion obj = new DependencyVersion("1.2.3.r1");
91          DependencyVersion instance = new DependencyVersion("1.2.3");
92          boolean expResult = false;
93          boolean result = instance.equals(obj);
94          assertEquals(expResult, result);
95          obj = new DependencyVersion("1.2.3");
96          expResult = true;
97          result = instance.equals(obj);
98          assertEquals(expResult, result);
99      }
100 
101     /**
102      * Test of hashCode method, of class DependencyVersion.
103      */
104     @Test
105     public void testHashCode() {
106         DependencyVersion instance = new DependencyVersion("3.2.1");
107         int expResult = 80756;
108         int result = instance.hashCode();
109         assertEquals(expResult, result);
110     }
111 
112     /**
113      * Test of matchesAtLeastThreeLevels method, of class DependencyVersion.
114      */
115     @Test
116     public void testMatchesAtLeastThreeLevels() {
117 
118         DependencyVersion instance = new DependencyVersion("2.3.16.3");
119         DependencyVersion version = new DependencyVersion("2.3.16.4");
120         //true tests
121         assertEquals(true, instance.matchesAtLeastThreeLevels(version));
122         version = new DependencyVersion("2.3");
123         assertEquals(true, instance.matchesAtLeastThreeLevels(version));
124         //false tests
125         version = new DependencyVersion("2.3.16.1");
126         assertEquals(false, instance.matchesAtLeastThreeLevels(version));
127         version = new DependencyVersion("2");
128         assertEquals(false, instance.matchesAtLeastThreeLevels(version));
129     }
130 
131     /**
132      * Test of compareTo method, of class DependencyVersion.
133      */
134     @Test
135     public void testCompareTo() {
136         DependencyVersion instance = new DependencyVersion("1.2.3");
137         DependencyVersion version = new DependencyVersion("1.2.3");
138         assertEquals(0, instance.compareTo(version));
139         version = new DependencyVersion("1.1");
140         assertEquals(1, instance.compareTo(version));
141         version = new DependencyVersion("1.2");
142         assertEquals(1, instance.compareTo(version));
143         version = new DependencyVersion("1.3");
144         assertEquals(-1, instance.compareTo(version));
145         version = new DependencyVersion("1.2.3.1");
146         assertEquals(-1, instance.compareTo(version));
147 
148         instance = new DependencyVersion("1.0.1n");
149         version = new DependencyVersion("1.0.1m");
150         assertEquals(1, instance.compareTo(version));
151         version = new DependencyVersion("1.0.1n");
152         assertEquals(0, instance.compareTo(version));
153         version = new DependencyVersion("1.0.1o");
154         assertEquals(-1, instance.compareTo(version));
155 
156         DependencyVersion[] dv = new DependencyVersion[7];
157         dv[0] = new DependencyVersion("2.1.3");
158         dv[1] = new DependencyVersion("2.1.3.r2");
159         dv[2] = new DependencyVersion("2.1.3.r1");
160         dv[3] = new DependencyVersion("1.2.3.1");
161         dv[4] = new DependencyVersion("1.2.3");
162         dv[5] = new DependencyVersion("2");
163         dv[6] = new DependencyVersion("-");
164 
165         DependencyVersion[] expected = new DependencyVersion[7];
166         expected[0] = new DependencyVersion("-");
167         expected[1] = new DependencyVersion("1.2.3");
168         expected[2] = new DependencyVersion("1.2.3.1");
169         expected[3] = new DependencyVersion("2");
170         expected[4] = new DependencyVersion("2.1.3");
171         expected[5] = new DependencyVersion("2.1.3.r1");
172         expected[6] = new DependencyVersion("2.1.3.r2");
173         java.util.Arrays.sort(dv);
174 
175         assertArrayEquals(expected, dv);
176     }
177 
178     /**
179      * Test of getVersionParts method, of class DependencyVersion.
180      */
181     @Test
182     public void testGetVersionParts() {
183         DependencyVersion instance = new DependencyVersion();
184         List<String> versionParts = Arrays.asList("1", "1", "1");
185         instance.setVersionParts(versionParts);
186         List<String> expResult = Arrays.asList("1", "1", "1");
187         List<String> result = instance.getVersionParts();
188         assertEquals(expResult, result);
189     }
190 
191     /**
192      * Test of setVersionParts method, of class DependencyVersion.
193      */
194     @Test
195     public void testSetVersionParts() {
196         List<String> versionParts = Arrays.asList("1", "1", "1");
197         DependencyVersion instance = new DependencyVersion();
198         instance.setVersionParts(versionParts);
199     }
200 }