View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  
20  package org.apache.commons.lang3;
21  
22  import static org.apache.commons.lang3.JavaVersion.JAVA_10;
23  import static org.apache.commons.lang3.JavaVersion.JAVA_11;
24  import static org.apache.commons.lang3.JavaVersion.JAVA_12;
25  import static org.apache.commons.lang3.JavaVersion.JAVA_13;
26  import static org.apache.commons.lang3.JavaVersion.JAVA_1_1;
27  import static org.apache.commons.lang3.JavaVersion.JAVA_1_2;
28  import static org.apache.commons.lang3.JavaVersion.JAVA_1_3;
29  import static org.apache.commons.lang3.JavaVersion.JAVA_1_4;
30  import static org.apache.commons.lang3.JavaVersion.JAVA_1_5;
31  import static org.apache.commons.lang3.JavaVersion.JAVA_1_6;
32  import static org.apache.commons.lang3.JavaVersion.JAVA_1_7;
33  import static org.apache.commons.lang3.JavaVersion.JAVA_1_8;
34  import static org.apache.commons.lang3.JavaVersion.JAVA_9;
35  import static org.junit.jupiter.api.Assertions.assertEquals;
36  import static org.junit.jupiter.api.Assertions.assertFalse;
37  import static org.junit.jupiter.api.Assertions.assertNotNull;
38  import static org.junit.jupiter.api.Assertions.assertNull;
39  import static org.junit.jupiter.api.Assertions.assertTrue;
40  
41  import java.io.File;
42  import java.lang.reflect.Constructor;
43  import java.lang.reflect.Field;
44  import java.lang.reflect.Modifier;
45  import java.util.Locale;
46  
47  import org.junit.jupiter.api.Test;
48  
49  /**
50   * Unit tests {@link org.apache.commons.lang3.SystemUtils}.
51   *
52   * Only limited testing can be performed.
53   */
54  public class SystemUtilsTest extends AbstractLangTest {
55  
56      /**
57       * Returns the value of the SystemUtils.IS_JAVA_X field for the versions >= 9.
58       */
59      private boolean getIS_JAVA(int version) throws Exception {
60          return SystemUtils.class.getField("IS_JAVA_" + version).getBoolean(null);
61      }
62  
63      /**
64       * Returns the last supported version with the SystemUtils.IS_JAVA_X fields.
65       */
66      public int getLastSupportedJavaVersion() {
67          int lastSupportedVersion = 0;
68  
69          for (Field field : SystemUtils.class.getFields()) {
70              if (field.getName().matches("IS_JAVA_\\d+")) {
71                  lastSupportedVersion = Math.max(lastSupportedVersion, Integer.parseInt(field.getName().substring(8)));
72              }
73          }
74  
75          return lastSupportedVersion;
76      }
77  
78      @Test
79      @SuppressWarnings("deprecation")
80      public void test_IS_JAVA() throws Exception {
81          String javaVersion = SystemUtils.JAVA_VERSION;
82          int lastSupportedVersion = getLastSupportedJavaVersion();
83  
84          if (javaVersion == null) {
85              assertFalse(SystemUtils.IS_JAVA_1_1);
86              assertFalse(SystemUtils.IS_JAVA_1_2);
87              assertFalse(SystemUtils.IS_JAVA_1_3);
88              assertFalse(SystemUtils.IS_JAVA_1_4);
89              assertFalse(SystemUtils.IS_JAVA_1_5);
90              assertFalse(SystemUtils.IS_JAVA_1_6);
91              assertFalse(SystemUtils.IS_JAVA_1_7);
92              assertFalse(SystemUtils.IS_JAVA_1_8);
93              assertFalse(SystemUtils.IS_JAVA_1_9);
94  
95              for (int version = 9; version <= lastSupportedVersion; version++) {
96                  assertFalse(getIS_JAVA(version));
97              }
98  
99          } else if (javaVersion.startsWith("1.8")) {
100             assertFalse(SystemUtils.IS_JAVA_1_1);
101             assertFalse(SystemUtils.IS_JAVA_1_2);
102             assertFalse(SystemUtils.IS_JAVA_1_3);
103             assertFalse(SystemUtils.IS_JAVA_1_4);
104             assertFalse(SystemUtils.IS_JAVA_1_5);
105             assertFalse(SystemUtils.IS_JAVA_1_6);
106             assertFalse(SystemUtils.IS_JAVA_1_7);
107             assertTrue(SystemUtils.IS_JAVA_1_8);
108             assertFalse(SystemUtils.IS_JAVA_1_9);
109 
110             for (int version = 9; version <= lastSupportedVersion; version++) {
111                 assertFalse(getIS_JAVA(version));
112             }
113 
114         } else if (!javaVersion.startsWith("1.")) {
115             assertFalse(SystemUtils.IS_JAVA_1_1);
116             assertFalse(SystemUtils.IS_JAVA_1_2);
117             assertFalse(SystemUtils.IS_JAVA_1_3);
118             assertFalse(SystemUtils.IS_JAVA_1_4);
119             assertFalse(SystemUtils.IS_JAVA_1_5);
120             assertFalse(SystemUtils.IS_JAVA_1_6);
121             assertFalse(SystemUtils.IS_JAVA_1_7);
122             assertFalse(SystemUtils.IS_JAVA_1_8);
123             assertEquals(javaVersion.startsWith("9"), SystemUtils.IS_JAVA_1_9);
124 
125             for (int version = 9; version <= lastSupportedVersion; version++) {
126                 assertEquals(javaVersion.startsWith("" + version), getIS_JAVA(version));
127             }
128 
129         } else {
130             System.out.println("Can't test IS_JAVA value: " + javaVersion);
131         }
132     }
133 
134     @Test
135     public void test_IS_OS() {
136         final String osName = System.getProperty("os.name");
137         if (osName == null) {
138             assertFalse(SystemUtils.IS_OS_WINDOWS);
139             assertFalse(SystemUtils.IS_OS_UNIX);
140             assertFalse(SystemUtils.IS_OS_SOLARIS);
141             assertFalse(SystemUtils.IS_OS_LINUX);
142             assertFalse(SystemUtils.IS_OS_MAC_OSX);
143         } else if (osName.startsWith("Windows")) {
144             assertFalse(SystemUtils.IS_OS_UNIX);
145             assertTrue(SystemUtils.IS_OS_WINDOWS);
146         } else if (osName.startsWith("Solaris")) {
147             assertTrue(SystemUtils.IS_OS_SOLARIS);
148             assertTrue(SystemUtils.IS_OS_UNIX);
149             assertFalse(SystemUtils.IS_OS_WINDOWS);
150         } else if (osName.toLowerCase(Locale.ENGLISH).startsWith("linux")) {
151             assertTrue(SystemUtils.IS_OS_LINUX);
152             assertTrue(SystemUtils.IS_OS_UNIX);
153             assertFalse(SystemUtils.IS_OS_WINDOWS);
154         } else if (osName.startsWith("Mac OS X")) {
155             assertTrue(SystemUtils.IS_OS_MAC_OSX);
156             assertTrue(SystemUtils.IS_OS_UNIX);
157             assertFalse(SystemUtils.IS_OS_WINDOWS);
158         } else if (osName.startsWith("OS/2")) {
159             assertTrue(SystemUtils.IS_OS_OS2);
160             assertFalse(SystemUtils.IS_OS_UNIX);
161             assertFalse(SystemUtils.IS_OS_WINDOWS);
162         } else if (osName.startsWith("SunOS")) {
163             assertTrue(SystemUtils.IS_OS_SUN_OS);
164             assertTrue(SystemUtils.IS_OS_UNIX);
165             assertFalse(SystemUtils.IS_OS_WINDOWS);
166         } else if (osName.startsWith("FreeBSD")) {
167             assertTrue(SystemUtils.IS_OS_FREE_BSD);
168             assertTrue(SystemUtils.IS_OS_UNIX);
169             assertFalse(SystemUtils.IS_OS_WINDOWS);
170         } else {
171             System.out.println("Can't test IS_OS value: " + osName);
172         }
173     }
174 
175     @Test
176     public void test_IS_zOS() {
177         final String osName = System.getProperty("os.name");
178         if (osName == null) {
179             assertFalse(SystemUtils.IS_OS_ZOS);
180         } else if (osName.contains("z/OS")) {
181             assertFalse(SystemUtils.IS_OS_WINDOWS);
182             assertTrue(SystemUtils.IS_OS_ZOS);
183         }
184     }
185 
186     /**
187      * Assumes no security manager exists.
188      */
189     @Test
190     public void test_USER_NAME() {
191         assertEquals(System.getProperty("user.name"), SystemUtils.USER_NAME);
192     }
193 
194     @Test
195     public void testConstructor() {
196         assertNotNull(new SystemUtils());
197         final Constructor<?>[] cons = SystemUtils.class.getDeclaredConstructors();
198         assertEquals(1, cons.length);
199         assertTrue(Modifier.isPublic(cons[0].getModifiers()));
200         assertTrue(Modifier.isPublic(SystemUtils.class.getModifiers()));
201         assertFalse(Modifier.isFinal(SystemUtils.class.getModifiers()));
202     }
203 
204     @Test
205     public void testGetEnvironmentVariableAbsent() {
206         final String name = "THIS_ENV_VAR_SHOULD_NOT_EXIST_FOR_THIS_TEST_TO_PASS";
207         final String expected = System.getenv(name);
208         assertNull(expected);
209         final String value = SystemUtils.getEnvironmentVariable(name, "DEFAULT");
210         assertEquals("DEFAULT", value);
211     }
212 
213     @Test
214     public void testGetEnvironmentVariablePresent() {
215         final String name = "PATH";
216         final String expected = System.getenv(name);
217         final String value = SystemUtils.getEnvironmentVariable(name, null);
218         assertEquals(expected, value);
219     }
220 
221     @Test
222     public void testGetHostName() {
223         final String hostName = SystemUtils.getHostName();
224         final String expected = SystemUtils.IS_OS_WINDOWS ? System.getenv("COMPUTERNAME") : System.getenv("HOSTNAME");
225         assertEquals(expected, hostName);
226     }
227 
228     /**
229      * Assumes no security manager exists.
230      */
231     @Test
232     public void testGetJavaHome() {
233         final File dir = SystemUtils.getJavaHome();
234         assertNotNull(dir);
235         assertTrue(dir.exists());
236     }
237 
238     /**
239      * Assumes no security manager exists.
240      */
241     @Test
242     public void testGetJavaIoTmpDir() {
243         final File dir = SystemUtils.getJavaIoTmpDir();
244         assertNotNull(dir);
245         assertTrue(dir.exists());
246     }
247 
248     /**
249      * Assumes no security manager exists.
250      */
251     @Test
252     public void testGetUserDir() {
253         final File dir = SystemUtils.getUserDir();
254         assertNotNull(dir);
255         assertTrue(dir.exists());
256     }
257 
258     /**
259      * Assumes no security manager exists.
260      */
261     @Test
262     public void testGetUserHome() {
263         final File dir = SystemUtils.getUserHome();
264         assertNotNull(dir);
265         assertTrue(dir.exists());
266     }
267 
268     /**
269      * Assumes no security manager exists.
270      */
271     @Test
272     public void testGetUserName() {
273         assertEquals(System.getProperty("user.name"), SystemUtils.getUserName());
274         // Don't overwrite the system property in this test in case something goes awfully wrong.
275         assertEquals(System.getProperty("user.name", "foo"), SystemUtils.getUserName("foo"));
276     }
277 
278     @Test
279     public void testIsJavaVersionAtLeast() {
280         if (SystemUtils.IS_JAVA_1_8) {
281             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
282             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
283             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3));
284             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_4));
285             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_5));
286             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_6));
287             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
288             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
289             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_9));
290             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_10));
291             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_11));
292             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_12));
293             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_13));
294         } else if (SystemUtils.IS_JAVA_9) {
295             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
296             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
297             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3));
298             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_4));
299             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_5));
300             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_6));
301             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
302             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
303             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_9));
304             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_10));
305             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_11));
306             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_12));
307             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_13));
308         } else if (SystemUtils.IS_JAVA_10) {
309             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
310             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
311             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3));
312             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_4));
313             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_5));
314             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_6));
315             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
316             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
317             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_9));
318             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_10));
319             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_11));
320             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_12));
321             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_13));
322         } else if (SystemUtils.IS_JAVA_11) {
323             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
324             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
325             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3));
326             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_4));
327             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_5));
328             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_6));
329             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
330             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
331             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_9));
332             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_10));
333             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_11));
334             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_12));
335             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_13));
336         } else if (SystemUtils.IS_JAVA_12) {
337             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
338             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
339             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3));
340             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_4));
341             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_5));
342             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_6));
343             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
344             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
345             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_9));
346             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_10));
347             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_11));
348             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_12));
349             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_13));
350         } else if (SystemUtils.IS_JAVA_13) {
351             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
352             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
353             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3));
354             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_4));
355             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_5));
356             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_6));
357             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
358             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
359             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_9));
360             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_10));
361             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_11));
362             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_12));
363             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_13));
364         }
365     }
366 
367     @Test
368     public void testIsJavaVersionAtMost() {
369         if (SystemUtils.IS_JAVA_1_8) {
370             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
371             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
372             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
373             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
374             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
375             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
376             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
377             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
378             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_9));
379             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_10));
380             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11));
381             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_12));
382             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_13));
383         } else if (SystemUtils.IS_JAVA_9) {
384             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
385             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
386             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
387             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
388             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
389             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
390             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
391             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
392             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_9));
393             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_10));
394             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11));
395             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_12));
396             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_13));
397         } else if (SystemUtils.IS_JAVA_10) {
398             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
399             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
400             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
401             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
402             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
403             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
404             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
405             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
406             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_9));
407             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_10));
408             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11));
409             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_12));
410             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_13));
411         } else if (SystemUtils.IS_JAVA_11) {
412             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
413             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
414             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
415             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
416             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
417             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
418             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
419             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
420             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_9));
421             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_10));
422             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11));
423             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_12));
424             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_13));
425         } else if (SystemUtils.IS_JAVA_12) {
426             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
427             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
428             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
429             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
430             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
431             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
432             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
433             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
434             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_9));
435             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_10));
436             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_11));
437             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_12));
438             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_13));
439         } else if (SystemUtils.IS_JAVA_13) {
440             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1));
441             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2));
442             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3));
443             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4));
444             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5));
445             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6));
446             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7));
447             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8));
448             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_9));
449             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_10));
450             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_11));
451             assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_12));
452             assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_13));
453         }
454     }
455 
456     @Test
457     public void testJavaAwtHeadless() {
458         final String expectedStringValue = System.getProperty("java.awt.headless");
459         final String expectedStringValueWithDefault = System.getProperty("java.awt.headless", "false");
460         assertNotNull(expectedStringValueWithDefault);
461         final boolean expectedValue = Boolean.parseBoolean(expectedStringValue);
462         if (expectedStringValue != null) {
463             assertEquals(expectedStringValue, SystemUtils.JAVA_AWT_HEADLESS);
464         }
465         assertEquals(expectedValue, SystemUtils.isJavaAwtHeadless());
466         assertEquals(expectedStringValueWithDefault, "" + SystemUtils.isJavaAwtHeadless());
467     }
468 
469     @Test
470     public void testJavaVersionMatches() {
471         String javaVersion = null;
472         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
473         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
474         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
475         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
476         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
477         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
478         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
479         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
480         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
481         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
482         javaVersion = "";
483         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
484         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
485         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
486         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
487         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
488         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
489         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
490         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
491         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
492         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
493         javaVersion = "1.0";
494         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
495         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
496         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
497         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
498         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
499         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
500         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
501         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
502         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
503         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
504         javaVersion = "1.1";
505         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
506         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
507         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
508         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
509         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
510         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
511         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
512         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
513         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
514         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
515         javaVersion = "1.2";
516         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
517         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
518         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
519         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
520         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
521         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
522         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
523         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
524         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
525         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
526         javaVersion = "1.3.0";
527         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
528         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
529         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
530         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
531         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
532         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
533         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
534         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
535         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
536         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
537         javaVersion = "1.3.1";
538         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
539         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
540         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
541         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
542         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
543         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
544         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
545         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
546         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
547         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
548         javaVersion = "1.4.0";
549         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
550         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
551         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
552         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
553         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
554         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
555         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
556         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
557         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
558         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
559         javaVersion = "1.4.1";
560         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
561         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
562         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
563         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
564         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
565         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
566         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
567         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
568         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
569         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
570         javaVersion = "1.4.2";
571         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
572         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
573         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
574         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
575         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
576         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
577         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
578         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
579         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
580         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
581         javaVersion = "1.5.0";
582         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
583         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
584         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
585         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
586         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
587         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
588         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
589         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
590         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
591         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
592         javaVersion = "1.6.0";
593         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
594         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
595         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
596         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
597         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
598         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
599         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
600         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
601         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
602         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
603         javaVersion = "1.7.0";
604         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
605         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
606         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
607         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
608         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
609         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
610         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
611         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
612         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
613         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
614         javaVersion = "1.8.0";
615         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
616         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
617         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
618         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
619         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
620         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
621         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
622         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
623         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
624         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
625         javaVersion = "9";
626         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.0"));
627         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.1"));
628         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.2"));
629         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.3"));
630         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.4"));
631         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.5"));
632         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.6"));
633         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.7"));
634         assertFalse(SystemUtils.isJavaVersionMatch(javaVersion, "1.8"));
635         assertTrue(SystemUtils.isJavaVersionMatch(javaVersion, "9"));
636     }
637 
638     @Test
639     public void testOSMatchesName() {
640         String osName = null;
641         assertFalse(SystemUtils.isOSNameMatch(osName, "Windows"));
642         osName = "";
643         assertFalse(SystemUtils.isOSNameMatch(osName, "Windows"));
644         osName = "Windows 95";
645         assertTrue(SystemUtils.isOSNameMatch(osName, "Windows"));
646         osName = "Windows NT";
647         assertTrue(SystemUtils.isOSNameMatch(osName, "Windows"));
648         osName = "OS/2";
649         assertFalse(SystemUtils.isOSNameMatch(osName, "Windows"));
650     }
651 
652     @Test
653     public void testOSMatchesNameAndVersion() {
654         String osName = null;
655         String osVersion = null;
656         assertFalse(SystemUtils.isOSMatch(osName, osVersion, "Windows 9", "4.1"));
657         osName = "";
658         osVersion = "";
659         assertFalse(SystemUtils.isOSMatch(osName, osVersion, "Windows 9", "4.1"));
660         osName = "Windows 95";
661         osVersion = "4.0";
662         assertFalse(SystemUtils.isOSMatch(osName, osVersion, "Windows 9", "4.1"));
663         osName = "Windows 95";
664         osVersion = "4.1";
665         assertTrue(SystemUtils.isOSMatch(osName, osVersion, "Windows 9", "4.1"));
666         osName = "Windows 98";
667         osVersion = "4.1";
668         assertTrue(SystemUtils.isOSMatch(osName, osVersion, "Windows 9", "4.1"));
669         osName = "Windows NT";
670         osVersion = "4.0";
671         assertFalse(SystemUtils.isOSMatch(osName, osVersion, "Windows 9", "4.1"));
672         osName = "OS/2";
673         osVersion = "4.0";
674         assertFalse(SystemUtils.isOSMatch(osName, osVersion, "Windows 9", "4.1"));
675     }
676 
677     @Test
678     public void testOsVersionMatches() {
679         String osVersion = null;
680         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.1"));
681 
682         osVersion = "";
683         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.1"));
684 
685         osVersion = "10";
686         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.1"));
687         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.1.1"));
688         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.10"));
689         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.10.1"));
690 
691         osVersion = "10.1";
692         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.1"));
693         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.1.1"));
694         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.10"));
695         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.10.1"));
696 
697         osVersion = "10.1.1";
698         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.1"));
699         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.1.1"));
700         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.10"));
701         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.10.1"));
702 
703         osVersion = "10.10";
704         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.1"));
705         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.1.1"));
706         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.10"));
707         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.10.1"));
708 
709         osVersion = "10.10.1";
710         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.1"));
711         assertFalse(SystemUtils.isOSVersionMatch(osVersion, "10.1.1"));
712         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.10"));
713         assertTrue(SystemUtils.isOSVersionMatch(osVersion, "10.10.1"));
714     }
715 }