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