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