View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      https://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.lang3;
19  
20  import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21  import static org.junit.jupiter.api.Assertions.assertEquals;
22  import static org.junit.jupiter.api.Assertions.assertFalse;
23  import static org.junit.jupiter.api.Assertions.assertNotNull;
24  import static org.junit.jupiter.api.Assertions.assertNull;
25  import static org.junit.jupiter.api.Assertions.assertTrue;
26  import static org.junit.jupiter.api.Assumptions.assumeTrue;
27  
28  import java.util.function.Supplier;
29  
30  import org.junit.jupiter.api.Test;
31  import org.junit.jupiter.api.function.ThrowingSupplier;
32  import org.junit.jupiter.params.ParameterizedTest;
33  import org.junit.jupiter.params.provider.ValueSource;
34  import org.junitpioneer.jupiter.SetSystemProperty;
35  import org.junitpioneer.jupiter.SetSystemProperty.SetSystemProperties;
36  
37  @SetSystemProperties({
38      @SetSystemProperty(key = SystemPropertiesTest.KEY_SPACE_1, value = "value1"),
39      @SetSystemProperty(key = SystemPropertiesTest.KEY_TAB_1, value = "value2") })
40  class SystemPropertiesTest {
41  
42      static final String KEY_SPACE_1 = " ";
43      static final String KEY_TAB_1 = "\t";
44  
45      private void basicKeyCheck(final String key) {
46          assertNotNull(key);
47          assertFalse(key.isEmpty());
48          assertDoesNotThrow(() -> System.getProperties().get(key));
49          assertDoesNotThrow(() -> System.getProperty(key));
50          assertDoesNotThrow(() -> System.getProperty(key, ""));
51  // Debug/Info
52  //        if (!System.getProperties().containsKey(key)) {
53  //            System.out.printf("No key '%s'%n", key);
54  //        } else if (System.getProperty(key) == null) {
55  //            System.out.printf("Null value at key '%s'%n", key);
56  //        }
57      }
58  
59      private boolean isJava11OrGreater() {
60          return SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_11);
61      }
62  
63      @Test
64      void testActualKeys() {
65          basicKeyCheck(SystemProperties.APPLE_AWT_ENABLE_TEMPLATE_IMAGES);
66          basicKeyCheck(SystemProperties.AWT_TOOLKIT);
67          basicKeyCheck(SystemProperties.COM_SUN_JNDI_LDAP_OBJECT_TRUST_SERIAL_DATA);
68          basicKeyCheck(SystemProperties.COM_SUN_NET_HTTP_SERVER_HTTP_SERVER_PROVIDER);
69          basicKeyCheck(SystemProperties.FILE_ENCODING);
70          basicKeyCheck(SystemProperties.FILE_SEPARATOR);
71          basicKeyCheck(SystemProperties.FTP_NON_PROXY_HOST);
72          basicKeyCheck(SystemProperties.FTP_PROXY_HOST);
73          basicKeyCheck(SystemProperties.FTP_PROXY_PORT);
74          basicKeyCheck(SystemProperties.HTTP_AGENT);
75          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_CNONCE_REPEAT);
76          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_RE_ENABLED_ALGORITHMS);
77          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_VALIDATE_PROXY);
78          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_VALIDATE_SERVER);
79          basicKeyCheck(SystemProperties.HTTP_AUTH_NTLM_DOMAIN);
80          basicKeyCheck(SystemProperties.HTTP_KEEP_ALIVE);
81          basicKeyCheck(SystemProperties.HTTP_KEEP_ALIVE_TIME_PROXY);
82          basicKeyCheck(SystemProperties.HTTP_KEEP_ALIVE_TIME_SERVER);
83          basicKeyCheck(SystemProperties.HTTP_MAX_CONNECTIONS);
84          basicKeyCheck(SystemProperties.HTTP_MAX_REDIRECTS);
85          basicKeyCheck(SystemProperties.HTTP_NON_PROXY_HOSTS);
86          basicKeyCheck(SystemProperties.HTTP_PROXY_HOST);
87          basicKeyCheck(SystemProperties.HTTP_PROXY_PORT);
88          basicKeyCheck(SystemProperties.HTTPS_PROXY_HOST);
89          basicKeyCheck(SystemProperties.HTTPS_PROXY_PORT);
90          basicKeyCheck(SystemProperties.JAVA_AWT_FONTS);
91          basicKeyCheck(SystemProperties.JAVA_AWT_GRAPHICSENV);
92          basicKeyCheck(SystemProperties.JAVA_AWT_HEADLESS);
93          basicKeyCheck(SystemProperties.JAVA_AWT_PRINTERJOB);
94          basicKeyCheck(SystemProperties.JAVA_CLASS_PATH);
95          basicKeyCheck(SystemProperties.JAVA_CLASS_VERSION);
96          basicKeyCheck(SystemProperties.JAVA_COMPILER);
97          basicKeyCheck(SystemProperties.JAVA_CONTENT_HANDLER_PKGS);
98          basicKeyCheck(SystemProperties.JAVA_ENDORSED_DIRS);
99          basicKeyCheck(SystemProperties.JAVA_EXT_DIRS);
100         basicKeyCheck(SystemProperties.JAVA_HOME);
101         basicKeyCheck(SystemProperties.JAVA_IO_TMPDIR);
102         basicKeyCheck(SystemProperties.JAVA_LIBRARY_PATH);
103         basicKeyCheck(SystemProperties.JAVA_LOCALE_PROVIDERS);
104         basicKeyCheck(SystemProperties.JAVA_LOCALE_USE_OLD_ISO_CODES);
105         basicKeyCheck(SystemProperties.JAVA_NET_PREFER_IPV4_STACK);
106         basicKeyCheck(SystemProperties.JAVA_NET_PREFER_IPV6_ADDRESSES);
107         basicKeyCheck(SystemProperties.JAVA_NET_SOCKS_PASSWORD);
108         basicKeyCheck(SystemProperties.JAVA_NET_SOCKS_USER_NAME);
109         basicKeyCheck(SystemProperties.JAVA_NET_USE_SYSTEM_PROXIES);
110         basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_INITIAL_SIZE);
111         basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_THREAD_FACTORY);
112         basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_SPI_ASYNCHRONOUS_CHANNEL_PROVIDER);
113         basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_SPI_SELECTOR_PROVIDER);
114         basicKeyCheck(SystemProperties.JAVA_NIO_FILE_SPI_DEFAULT_FILE_SYSTEM_PROVIDER);
115         basicKeyCheck(SystemProperties.JAVA_PROPERTIES_DATE);
116         basicKeyCheck(SystemProperties.JAVA_PROTOCOL_HANDLER_PKGS);
117         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_CODEBASE);
118         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_HOST_NAME);
119         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_RANDOM_IDS);
120         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_RMI_CLASS_LOADER_SPI);
121         basicKeyCheck(SystemProperties.JAVA_RUNTIME_NAME);
122         basicKeyCheck(SystemProperties.JAVA_RUNTIME_VERSION);
123         basicKeyCheck(SystemProperties.JAVA_SECURITY_AUTH_LOGIN_CONFIG);
124         basicKeyCheck(SystemProperties.JAVA_SECURITY_KERBEROS_CONF);
125         basicKeyCheck(SystemProperties.JAVA_SECURITY_KERBEROS_KDC);
126         basicKeyCheck(SystemProperties.JAVA_SECURITY_KERBEROS_REALM);
127         basicKeyCheck(SystemProperties.JAVA_SECURITY_DEBUG);
128         basicKeyCheck(SystemProperties.JAVA_SECURITY_MANAGER);
129         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_MAINTENANCE_VERSION);
130         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_NAME);
131         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_VENDOR);
132         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_VERSION);
133         basicKeyCheck(SystemProperties.JAVA_SYSTEM_CLASS_LOADER);
134         basicKeyCheck(SystemProperties.JAVA_TIME_ZONE_DEFAULT_ZONE_RULES_PROVIDER);
135         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_EXCEPTION_HANDLER);
136         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_MAXIMUM_SPARES);
137         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_PARALLELISM);
138         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_THREAD_FACTORY);
139         basicKeyCheck(SystemProperties.JAVA_UTIL_CURRENCY_DATA);
140         basicKeyCheck(SystemProperties.JAVA_UTIL_LOGGING_CONFIG_CLASS);
141         basicKeyCheck(SystemProperties.JAVA_UTIL_LOGGING_CONFIG_FILE);
142         basicKeyCheck(SystemProperties.JAVA_UTIL_LOGGING_SIMPLE_FORMATTER_FORMAT);
143         basicKeyCheck(SystemProperties.JAVA_UTIL_PREFS_PREFERENCES_FACTORY);
144         basicKeyCheck(SystemProperties.JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE_ENCODING);
145         basicKeyCheck(SystemProperties.JAVA_VENDOR);
146         basicKeyCheck(SystemProperties.JAVA_VENDOR_URL);
147         basicKeyCheck(SystemProperties.JAVA_VENDOR_VERSION);
148         basicKeyCheck(SystemProperties.JAVA_VERSION);
149         basicKeyCheck(SystemProperties.JAVA_VERSION_DATE);
150         basicKeyCheck(SystemProperties.JAVA_VM_INFO);
151         basicKeyCheck(SystemProperties.JAVA_VM_NAME);
152         basicKeyCheck(SystemProperties.JAVA_VM_SPECIFICATION_NAME);
153         basicKeyCheck(SystemProperties.JAVA_VM_SPECIFICATION_VENDOR);
154         basicKeyCheck(SystemProperties.JAVA_VM_SPECIFICATION_VERSION);
155         basicKeyCheck(SystemProperties.JAVA_VM_VENDOR);
156         basicKeyCheck(SystemProperties.JAVA_VM_VERSION);
157         basicKeyCheck(SystemProperties.JAVA_XML_CONFIG_FILE);
158         basicKeyCheck(SystemProperties.JAVAX_ACCESSIBILITY_ASSISTIVE_TECHNOLOGIES);
159         basicKeyCheck(SystemProperties.JAVAX_NET_SSL_SESSION_CACHE_SIZE);
160         basicKeyCheck(SystemProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES);
161         basicKeyCheck(SystemProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS);
162         basicKeyCheck(SystemProperties.JAVAX_SECURITY_AUTH_USE_SUBJECT_CREDS_ONLY);
163         basicKeyCheck(SystemProperties.JAVAX_SMART_CARD_IO_TERMINAL_FACTORY_DEFAULT_TYPE);
164         basicKeyCheck(SystemProperties.JDBC_DRIVERS);
165         basicKeyCheck(SystemProperties.JDK_HTTP_AUTH_PROXYING_DISABLED_SCHEMES);
166         basicKeyCheck(SystemProperties.JDK_HTTP_AUTH_TUNNELING_DISABLED_SCHEMES);
167         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_ALLOW_RESTRICTED_HEADERS);
168         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_AUTH_RETRY_LIMIT);
169         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_BUF_SIZE);
170         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_CONNECTION_POOL_SIZE);
171         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_CONNECTION_WINDOW_SIZE);
172         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_DISABLE_RETRY_CONNECT);
173         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_ENABLE_ALL_METHOD_RETRY);
174         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_ENABLE_PUSH);
175         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_HPACK_MAX_HEADER_TABLE_SIZE);
176         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_HTTP_CLIENT_LOG);
177         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT);
178         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT_H2);
179         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_MAX_FRAME_SIZE);
180         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_MAX_STREAMS);
181         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_RECEIVE_BUFFER_SIZE);
182         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_REDIRECTS_RETRY_LIMIT);
183         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_SEND_BUFFER_SIZE);
184         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_WEB_SOCKET_WRITE_BUFFER_SIZE);
185         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_WINDOW_SIZE);
186         basicKeyCheck(SystemProperties.JDK_HTTPS_NEGOTIATE_CBT);
187         basicKeyCheck(SystemProperties.JDK_HTTP_SERVER_MAX_CONNECTIONS);
188         basicKeyCheck(SystemProperties.JDK_INCLUDE_IN_EXCEPTIONS);
189         basicKeyCheck(SystemProperties.JDK_INTERNAL_HTTP_CLIENT_DISABLE_HOST_NAME_VERIFICATION);
190         basicKeyCheck(SystemProperties.JDK_IO_PERMISSIONS_USE_CANONICAL_PATH);
191         basicKeyCheck(SystemProperties.JDK_JNDI_LDAP_OBJECT_FACTORIES_FILTER);
192         basicKeyCheck(SystemProperties.JDK_JNDI_OBJECT_FACTORIES_FILTER);
193         basicKeyCheck(SystemProperties.JDK_JNDI_RMI_OBJECT_FACTORIES_FILTER);
194         basicKeyCheck(SystemProperties.JDK_MODULE_MAIN);
195         basicKeyCheck(SystemProperties.JDK_MODULE_MAIN_CLASS);
196         basicKeyCheck(SystemProperties.JDK_MODULE_PATH);
197         basicKeyCheck(SystemProperties.JDK_MODULE_UPGRADE_PATH);
198         basicKeyCheck(SystemProperties.JDK_NET_UNIX_DOMAIN_TMPDIR);
199         basicKeyCheck(SystemProperties.JDK_NET_URL_CLASS_PATH_SHOW_IGNORED_CLASS_PATH_ENTRIES);
200         basicKeyCheck(SystemProperties.JDK_SERIAL_FILTER);
201         basicKeyCheck(SystemProperties.JDK_SERIAL_FILTER_FACTORY);
202         basicKeyCheck(SystemProperties.JDK_TLS_CLIENT_SIGNATURE_SCHEMES);
203         basicKeyCheck(SystemProperties.JDK_TLS_NAMED_GROUPS);
204         basicKeyCheck(SystemProperties.JDK_TLS_SERVER_SIGNATURE_SCHEMES);
205         basicKeyCheck(SystemProperties.JDK_VIRTUAL_THREAD_SCHEDULER_MAXPOOLSIZE);
206         basicKeyCheck(SystemProperties.JDK_VIRTUAL_THREAD_SCHEDULER_PARALLELISM);
207         basicKeyCheck(SystemProperties.JDK_XML_CDATA_CHUNK_SIZE);
208         basicKeyCheck(SystemProperties.JDK_XML_DTD_SUPPORT);
209         basicKeyCheck(SystemProperties.JDK_XML_ELEMENT_ATTRIBUTE_LIMIT);
210         basicKeyCheck(SystemProperties.JDK_XML_ENABLE_EXTENSION_FUNCTIONS);
211         basicKeyCheck(SystemProperties.JDK_XML_ENTITY_EXPANSION_LIMIT);
212         basicKeyCheck(SystemProperties.JDK_XML_ENTITY_REPLACEMENT_LIMIT);
213         basicKeyCheck(SystemProperties.JDK_XML_IS_STANDALONE);
214         basicKeyCheck(SystemProperties.JDK_XML_JDK_CATALOG_RESOLVE);
215         basicKeyCheck(SystemProperties.JDK_XML_MAX_ELEMENT_DEPTH);
216         basicKeyCheck(SystemProperties.JDK_XML_MAX_GENERAL_ENTITY_SIZE_LIMIT);
217         basicKeyCheck(SystemProperties.JDK_XML_MAX_OCCUR_LIMIT);
218         basicKeyCheck(SystemProperties.JDK_XML_MAX_PARAMETER_ENTITY_SIZE_LIMIT);
219         basicKeyCheck(SystemProperties.JDK_XML_MAX_XML_NAME_LIMIT);
220         basicKeyCheck(SystemProperties.JDK_XML_OVERRIDE_DEFAULT_PARSER);
221         basicKeyCheck(SystemProperties.JDK_XML_RESET_SYMBOL_TABLE);
222         basicKeyCheck(SystemProperties.JDK_XML_TOTAL_ENTITY_SIZE_LIMIT);
223         basicKeyCheck(SystemProperties.JDK_XML_XSLTC_IS_STANDALONE);
224         basicKeyCheck(SystemProperties.LINE_SEPARATOR);
225         basicKeyCheck(SystemProperties.NATIVE_ENCODING);
226         basicKeyCheck(SystemProperties.NETWORK_ADDRESS_CACHE_NEGATIVE_TTL);
227         basicKeyCheck(SystemProperties.NETWORK_ADDRESS_CACHE_STALE_TTL);
228         basicKeyCheck(SystemProperties.NETWORK_ADDRESS_CACHE_TTL);
229         basicKeyCheck(SystemProperties.ORG_JCP_XML_DSIG_SECURE_VALIDATION);
230         basicKeyCheck(SystemProperties.ORG_OPENJDK_JAVA_UTIL_STREAM_TRIPWIRE);
231         basicKeyCheck(SystemProperties.OS_ARCH);
232         basicKeyCheck(SystemProperties.OS_NAME);
233         basicKeyCheck(SystemProperties.OS_VERSION);
234         basicKeyCheck(SystemProperties.PATH_SEPARATOR);
235         basicKeyCheck(SystemProperties.SOCKS_PROXY_HOST);
236         basicKeyCheck(SystemProperties.SOCKS_PROXY_PORT);
237         basicKeyCheck(SystemProperties.SOCKS_PROXY_VERSION);
238         basicKeyCheck(SystemProperties.STDERR_ENCODING);
239         basicKeyCheck(SystemProperties.STDOUT_ENCODING);
240         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_DRAIN_AMOUNT);
241         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_IDLE_INTERVAL);
242         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_IDLE_CONNECTIONS);
243         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_REQ_HEADERS);
244         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_REQ_TIME);
245         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_RSP_TIME);
246         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_NO_DELAY);
247         basicKeyCheck(SystemProperties.SUN_SECURITY_KRB5_PRINCIPAL);
248         basicKeyCheck(SystemProperties.USER_COUNTRY);
249         basicKeyCheck(SystemProperties.USER_DIR);
250         basicKeyCheck(SystemProperties.USER_EXTENSIONS);
251         basicKeyCheck(SystemProperties.USER_HOME);
252         basicKeyCheck(SystemProperties.USER_LANGUAGE);
253         basicKeyCheck(SystemProperties.USER_NAME);
254         basicKeyCheck(SystemProperties.USER_REGION);
255         basicKeyCheck(SystemProperties.USER_SCRIPT);
256         basicKeyCheck(SystemProperties.USER_TIMEZONE);
257         basicKeyCheck(SystemProperties.USER_VARIANT);
258     }
259 
260     @Test
261     void testGetAwtToolkit() {
262         assertDoesNotThrow(SystemProperties::getAwtToolkit);
263     }
264 
265     @Test
266     void testGetBoolean() {
267         final String key = RandomStringUtils.random(10);
268         final String absentKey = RandomStringUtils.random(10);
269         assertNull(System.getProperty(absentKey));
270         try {
271             System.setProperty(key, Boolean.toString(Boolean.TRUE));
272             assertEquals(Boolean.TRUE, SystemProperties.getBoolean(key, () -> false));
273             assertEquals(Boolean.TRUE, SystemProperties.getBoolean(absentKey, () -> Boolean.TRUE));
274             assertFalse(SystemProperties.getBoolean(absentKey, () -> false));
275             assertFalse(SystemProperties.getBoolean(absentKey, null));
276         } finally {
277             System.clearProperty(key);
278         }
279     }
280 
281     @Test
282     void testGetDoesNotThrow() {
283         assertDoesNotThrow(SystemProperties::getAppleAwtEnableTemplateImages);
284         assertDoesNotThrow(SystemProperties::getAwtToolkit);
285         assertDoesNotThrow(SystemProperties::getComSunJndiLdapObjectTrustSerialData);
286         assertDoesNotThrow(SystemProperties::getComSunNetHttpServerHttpServerProvider);
287         assertDoesNotThrow(SystemProperties::getFileEncoding);
288         assertDoesNotThrow(SystemProperties::getFileSeparator);
289         assertDoesNotThrow(SystemProperties::getFtpNonProxyHost);
290         assertDoesNotThrow(SystemProperties::getFtpProxyHost);
291         assertDoesNotThrow(SystemProperties::getFtpProxyPort);
292         assertDoesNotThrow(SystemProperties::getHttpAgent);
293         assertDoesNotThrow(SystemProperties::getHttpAuthDigestCnonceRepeat);
294         assertDoesNotThrow(SystemProperties::getHttpAuthDigestReenabledAlgorithms);
295         assertDoesNotThrow(SystemProperties::getHttpAuthDigestValidateProxy);
296         assertDoesNotThrow(SystemProperties::getHttpAuthDigestValidateServer);
297         assertDoesNotThrow(SystemProperties::getHttpAuthNtlmDomain);
298         assertDoesNotThrow(SystemProperties::getHttpKeepAlive);
299         assertDoesNotThrow(SystemProperties::getHttpKeepAliveTimeProxy);
300         assertDoesNotThrow(SystemProperties::getHttpKeepAliveTimeServer);
301         assertDoesNotThrow(SystemProperties::getHttpMaxConnections);
302         assertDoesNotThrow(SystemProperties::getHttpMaxRedirects);
303         assertDoesNotThrow(SystemProperties::getHttpNonProxyHosts);
304         assertDoesNotThrow(SystemProperties::getHttpProxyHost);
305         assertDoesNotThrow(SystemProperties::getHttpProxyPort);
306         assertDoesNotThrow(SystemProperties::getHttpsProxyHost);
307         assertDoesNotThrow(SystemProperties::getHttpsProxyPort);
308         assertDoesNotThrow(SystemProperties::getJavaAwtFonts);
309         assertDoesNotThrow(SystemProperties::getJavaAwtGraphicsenv);
310         assertDoesNotThrow(SystemProperties::getJavaAwtHeadless);
311         assertDoesNotThrow(SystemProperties::getJavaAwtPrinterjob);
312         assertDoesNotThrow(SystemProperties::getJavaClassPath);
313         assertDoesNotThrow(SystemProperties::getJavaClassVersion);
314         assertDoesNotThrow(SystemProperties::getJavaCompiler);
315         assertDoesNotThrow(SystemProperties::getJavaContentHandlerPkgs);
316         assertDoesNotThrow(SystemProperties::getJavaEndorsedDirs);
317         assertDoesNotThrow(SystemProperties::getJavaExtDirs);
318         assertDoesNotThrow(SystemProperties::getJavaHome);
319         assertDoesNotThrow(SystemProperties::getJavaIoTmpdir);
320         assertDoesNotThrow(SystemProperties::getJavaLibraryPath);
321         assertDoesNotThrow(SystemProperties::getJavaLocaleProviders);
322         assertDoesNotThrow(SystemProperties::getJavaLocaleUseOldIsoCodes);
323         assertDoesNotThrow(SystemProperties::getJavaNetPreferIpv4Stack);
324         assertDoesNotThrow(SystemProperties::getJavaNetPreferIpv6Addresses);
325         assertDoesNotThrow(SystemProperties::getJavaNetSocksPassword);
326         assertDoesNotThrow(SystemProperties::getJavaNetSocksUserName);
327         assertDoesNotThrow(SystemProperties::getJavaNetUseSystemProxies);
328         assertDoesNotThrow(SystemProperties::getJavaNioChannelsDefaultThreadPoolInitialSize);
329         assertDoesNotThrow(SystemProperties::getJavaNioChannelsDefaultThreadPoolThreadFactory);
330         assertDoesNotThrow(SystemProperties::getJavaNioChannelsSpiAsynchronousChannelProvider);
331         assertDoesNotThrow(SystemProperties::getJavaNioChannelsSpiSelectorProvider);
332         assertDoesNotThrow(SystemProperties::getJavaNioFileSpiDefaultFileSystemProvider);
333         assertDoesNotThrow(SystemProperties::getJavaPropertiesDate);
334         assertDoesNotThrow(SystemProperties::getJavaProtocolHandlerPkgs);
335         assertDoesNotThrow(SystemProperties::getJavaRmiServerCodebase);
336         assertDoesNotThrow(SystemProperties::getJavaRmiServerHostName);
337         assertDoesNotThrow(SystemProperties::getJavaRmiServerRandomIds);
338         assertDoesNotThrow(SystemProperties::getJavaRmiServerRmiClassLoaderSpi);
339         assertDoesNotThrow(SystemProperties::getJavaRuntimeName);
340         assertDoesNotThrow(SystemProperties::getJavaRuntimeVersion);
341         assertDoesNotThrow(SystemProperties::getJavaSecurityAuthLoginConfig);
342         assertDoesNotThrow(SystemProperties::getJavaSecurityManager);
343         assertDoesNotThrow(SystemProperties::getJavaSpecificationMaintenanceVersion);
344         assertDoesNotThrow(SystemProperties::getJavaSpecificationName);
345         assertDoesNotThrow(SystemProperties::getJavaSpecificationVendor);
346         assertDoesNotThrow((ThrowingSupplier<String>) SystemProperties::getJavaSpecificationVersion);
347         assertDoesNotThrow(SystemProperties::getJavaSystemClassLoader);
348         assertDoesNotThrow(SystemProperties::getJavaTimeZoneDefaultZoneRulesProvider);
349         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonExceptionHandler);
350         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonMaximumSpares);
351         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonParallelism);
352         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonThreadFactory);
353         assertDoesNotThrow(SystemProperties::getJavaUtilCurrencyData);
354         assertDoesNotThrow(SystemProperties::getJavaUtilLoggingConfigClass);
355         assertDoesNotThrow(SystemProperties::getJavaUtilLoggingConfigFile);
356         assertDoesNotThrow(SystemProperties::getJavaUtilLoggingSimpleFormatterFormat);
357         assertDoesNotThrow(SystemProperties::getJavaUtilPrefsPreferencesFactory);
358         assertDoesNotThrow(SystemProperties::getJavaUtilPropertyResourceBundleEncoding);
359         assertDoesNotThrow(SystemProperties::getJavaVendor);
360         assertDoesNotThrow(SystemProperties::getJavaVendorUrl);
361         assertDoesNotThrow(SystemProperties::getJavaVendorVersion);
362         assertDoesNotThrow(SystemProperties::getJavaVersion);
363         assertDoesNotThrow(SystemProperties::getJavaVersionDate);
364         assertDoesNotThrow(SystemProperties::getJavaVmInfo);
365         assertDoesNotThrow(SystemProperties::getJavaVmName);
366         assertDoesNotThrow(SystemProperties::getJavaVmSpecificationName);
367         assertDoesNotThrow(SystemProperties::getJavaVmSpecificationVendor);
368         assertDoesNotThrow(SystemProperties::getJavaVmSpecificationVersion);
369         assertDoesNotThrow(SystemProperties::getJavaVmVendor);
370         assertDoesNotThrow(SystemProperties::getJavaVmVersion);
371         assertDoesNotThrow(SystemProperties::getJavaxAccessibilityAssistiveTechnologies);
372         assertDoesNotThrow(SystemProperties::getJavaXmlConfigFile);
373         assertDoesNotThrow(SystemProperties::getJavaxNetSslSessionCacheSize);
374         assertDoesNotThrow(SystemProperties::getJavaxRmiSslClientEnabledCipherSuites);
375         assertDoesNotThrow(SystemProperties::getJavaxRmiSslClientEnabledProtocols);
376         assertDoesNotThrow(SystemProperties::getJavaxSecurityAuthUseSubjectCredsOnly);
377         assertDoesNotThrow(SystemProperties::getJavaxSmartCardIoTerminalFactoryDefaultType);
378         assertDoesNotThrow(SystemProperties::getJdbcDrivers);
379         assertDoesNotThrow(SystemProperties::getJdkHttpAuthProxyingDisabledSchemes);
380         assertDoesNotThrow(SystemProperties::getJdkHttpAuthTunnelingDisabledSchemes);
381         assertDoesNotThrow(SystemProperties::getJdkHttpClientAllowRestrictedHeaders);
382         assertDoesNotThrow(SystemProperties::getJdkHttpClientAuthRetryLimit);
383         assertDoesNotThrow(SystemProperties::getJdkHttpClientBufSize);
384         assertDoesNotThrow(SystemProperties::getJdkHttpClientConnectionPoolSize);
385         assertDoesNotThrow(SystemProperties::getJdkHttpClientConnectionWindowSize);
386         assertDoesNotThrow(SystemProperties::getJdkHttpClientDisableRetryConnect);
387         assertDoesNotThrow(SystemProperties::getJdkHttpClientEnableAllMethodRetry);
388         assertDoesNotThrow(SystemProperties::getJdkHttpClientEnablePush);
389         assertDoesNotThrow(SystemProperties::getJdkHttpClientHpackMaxHeaderTableSize);
390         assertDoesNotThrow(SystemProperties::getJdkHttpClientHttpClientLog);
391         assertDoesNotThrow(SystemProperties::getJdkHttpClientKeepAliveTimeout);
392         assertDoesNotThrow(SystemProperties::getJdkHttpClientKeepAliveTimeoutH2);
393         assertDoesNotThrow(SystemProperties::getJdkHttpClientMaxFrameSize);
394         assertDoesNotThrow(SystemProperties::getJdkHttpClientMaxStreams);
395         assertDoesNotThrow(SystemProperties::getJdkHttpClientReceiveBufferSize);
396         assertDoesNotThrow(SystemProperties::getJdkHttpClientRedirectsRetryLimit);
397         assertDoesNotThrow(SystemProperties::getJdkHttpClientSendBufferSize);
398         assertDoesNotThrow(SystemProperties::getJdkHttpClientWebSocketWriteBufferSize);
399         assertDoesNotThrow(SystemProperties::getJdkHttpClientWindowSize);
400         assertDoesNotThrow(SystemProperties::getJdkHttpServerMaxConnections);
401         assertDoesNotThrow(SystemProperties::getJdkHttpsNegotiateCbt);
402         assertDoesNotThrow(SystemProperties::getJdkIncludeInExceptions);
403         assertDoesNotThrow(SystemProperties::getJdkInternalHttpClientDisableHostNameVerification);
404         assertDoesNotThrow(SystemProperties::getJdkIoPermissionsUseCanonicalPath);
405         assertDoesNotThrow(SystemProperties::getJdkJndiLdapObjectFactoriesFilter);
406         assertDoesNotThrow(SystemProperties::getJdkJndiObjectFactoriesFilter);
407         assertDoesNotThrow(SystemProperties::getJdkJndiRmiObjectFactoriesFilter);
408         assertDoesNotThrow(SystemProperties::getJdkModuleMain);
409         assertDoesNotThrow(SystemProperties::getJdkModuleMainClass);
410         assertDoesNotThrow(SystemProperties::getJdkModulePath);
411         assertDoesNotThrow(SystemProperties::getJdkModuleUpgradePath);
412         assertDoesNotThrow(SystemProperties::getJdkNetUnixDomainTmpDir);
413         assertDoesNotThrow(SystemProperties::getJdkNetUrlClassPathShowIgnoredClassPathEntries);
414         assertDoesNotThrow(SystemProperties::getJdkSerialFilter);
415         assertDoesNotThrow(SystemProperties::getJdkSerialFilterFactory);
416         assertDoesNotThrow(SystemProperties::getJdkTlsClientSignatureSchemes);
417         assertDoesNotThrow(SystemProperties::getJdkTlsNamedGroups);
418         assertDoesNotThrow(SystemProperties::getJdkTlsServerSignatureSchemes);
419         assertDoesNotThrow(SystemProperties::getJdkVirtualThreadSchedulerMaxPoolSize);
420         assertDoesNotThrow(SystemProperties::getJdkVirtualThreadSchedulerParallelism);
421         assertDoesNotThrow(SystemProperties::getJdkXmlCdataChunkSize);
422         assertDoesNotThrow(SystemProperties::getJdkXmlDtdSupport);
423         assertDoesNotThrow(SystemProperties::getJdkXmlElementAttributeLimit);
424         assertDoesNotThrow(SystemProperties::getJdkXmlEnableExtensionFunctions);
425         assertDoesNotThrow(SystemProperties::getJdkXmlEntityExpansionLimit);
426         assertDoesNotThrow(SystemProperties::getJdkXmlEntityReplacementLimit);
427         assertDoesNotThrow(SystemProperties::getJdkXmlIsStandalone);
428         assertDoesNotThrow(SystemProperties::getJdkXmlJdkCatalogResolve);
429         assertDoesNotThrow(SystemProperties::getJdkXmlMaxElementDepth);
430         assertDoesNotThrow(SystemProperties::getJdkXmlMaxGeneralEntitySizeLimit);
431         assertDoesNotThrow(SystemProperties::getJdkXmlMaxOccurLimit);
432         assertDoesNotThrow(SystemProperties::getJdkXmlMaxParameterEntitySizeLimit);
433         assertDoesNotThrow(SystemProperties::getJdkXmlMaxXmlNameLimit);
434         assertDoesNotThrow(SystemProperties::getJdkXmlOverrideDefaultParser);
435         assertDoesNotThrow(SystemProperties::getJdkXmlResetSymbolTable);
436         assertDoesNotThrow(SystemProperties::getJdkXmlTotalEntitySizeLimit);
437         assertDoesNotThrow(SystemProperties::getJdkXmlXsltcIsStandalone);
438         assertDoesNotThrow((ThrowingSupplier<String>) SystemProperties::getLineSeparator);
439         assertDoesNotThrow(SystemProperties::getNativeEncoding);
440         assertDoesNotThrow(SystemProperties::getNetworkAddressCacheNegativeTtl);
441         assertDoesNotThrow(SystemProperties::getNetworkAddressCacheStaleTtl);
442         assertDoesNotThrow(SystemProperties::getNetworkAddressCacheTtl);
443         assertDoesNotThrow(SystemProperties::getOrgJcpXmlDsigSecureValidation);
444         assertDoesNotThrow(SystemProperties::getOrgOpenJdkJavaUtilStreamTripwire);
445         assertDoesNotThrow(SystemProperties::getOsArch);
446         assertDoesNotThrow(SystemProperties::getOsName);
447         assertDoesNotThrow(SystemProperties::getOsVersion);
448         assertDoesNotThrow(SystemProperties::getPathSeparator);
449         assertDoesNotThrow(SystemProperties::getSocksProxyHost);
450         assertDoesNotThrow(SystemProperties::getSocksProxyPort);
451         assertDoesNotThrow(SystemProperties::getSocksProxyVersion);
452         assertDoesNotThrow(SystemProperties::getStdErrEncoding);
453         assertDoesNotThrow(SystemProperties::getStdOutEncoding);
454         assertDoesNotThrow(SystemProperties::getSunNetHttpServerDrainAmount);
455         assertDoesNotThrow(SystemProperties::getSunNetHttpServerIdleInterval);
456         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxIdleConnections);
457         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxReqHeaders);
458         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxReqTime);
459         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxRspTime);
460         assertDoesNotThrow(SystemProperties::getSunNetHttpServerNoDelay);
461         assertDoesNotThrow(SystemProperties::getSunSecurityKrb5Principal);
462         assertDoesNotThrow(SystemProperties::getUserCountry);
463         assertDoesNotThrow(SystemProperties::getUserDir);
464         assertDoesNotThrow(SystemProperties::getUserExtensions);
465         assertDoesNotThrow(SystemProperties::getUserHome);
466         assertDoesNotThrow(SystemProperties::getUserLanguage);
467         assertDoesNotThrow((ThrowingSupplier<String>) SystemProperties::getUserName);
468         assertDoesNotThrow(SystemProperties::getUserRegion);
469         assertDoesNotThrow(SystemProperties::getUserScript);
470         assertDoesNotThrow(SystemProperties::getUserTimezone);
471         assertDoesNotThrow(SystemProperties::getUserVariant);
472     }
473 
474     @Test
475     void testGetFileEncoding() {
476         basicKeyCheck(SystemProperties.getFileEncoding());
477     }
478 
479     @Test
480     void testGetFileSeparator() {
481         assertNotNull(SystemProperties.getFileSeparator());
482     }
483 
484     @Test
485     void testGetInt() {
486         final String key = RandomStringUtils.random(10);
487         final String absentKey = RandomStringUtils.random(10);
488         assertNull(System.getProperty(absentKey));
489         try {
490             System.setProperty(key, Integer.toString(Integer.MAX_VALUE));
491             assertEquals(Integer.MAX_VALUE, SystemProperties.getInt(key, () -> 0));
492             assertEquals(Integer.MAX_VALUE, SystemProperties.getInt(absentKey, () -> Integer.MAX_VALUE));
493             assertEquals(0, SystemProperties.getInt(absentKey, () -> 0));
494             assertEquals(0, SystemProperties.getInt(absentKey, null));
495         } finally {
496             System.clearProperty(key);
497         }
498     }
499 
500     @Test
501     void testGetJavaAwtFonts() {
502         assertNull(SystemProperties.getJavaAwtFonts());
503     }
504 
505     @Test
506     void testGetJavaAwtGraphicsenv() {
507         assertDoesNotThrow(SystemProperties::getJavaAwtGraphicsenv);
508     }
509 
510     @Test
511     void testGetJavaAwtHeadless() {
512         assertNull(SystemProperties.getJavaAwtHeadless());
513     }
514 
515     @Test
516     void testGetJavaAwtPrinterjob() {
517         assertDoesNotThrow(SystemProperties::getJavaAwtPrinterjob);
518     }
519 
520     @Test
521     void testGetJavaClassPath() {
522         assertNotNull(SystemProperties.getJavaClassPath());
523     }
524 
525     @Test
526     void testGetJavaClassVersion() {
527         assertNotNull(SystemProperties.getJavaClassVersion());
528     }
529 
530     @Test
531     void testGetJavaCompiler() {
532         if (SystemUtils.IS_JAVA_14) {
533             // Not in Java 11
534             assertNotNull(SystemProperties.getJavaCompiler());
535         }
536     }
537 
538     @Test
539     void testGetJavaEndorsedDirs() {
540         if (isJava11OrGreater()) {
541             // Not in Java 11
542             assertNull(SystemProperties.getJavaEndorsedDirs());
543         } else {
544             assertNotNull(SystemProperties.getJavaExtDirs());
545         }
546     }
547 
548     @Test
549     void testGetJavaExtDirs() {
550         if (isJava11OrGreater()) {
551             // Not in Java 11
552             assertNull(SystemProperties.getJavaExtDirs());
553         } else {
554             assertNotNull(SystemProperties.getJavaExtDirs());
555         }
556     }
557 
558     @Test
559     void testGetJavaHome() {
560         assertNotNull(SystemProperties.getJavaHome());
561     }
562 
563     @Test
564     void testGetJavaIoTmpdir() {
565         assertNotNull(SystemProperties.getJavaIoTmpdir());
566     }
567 
568     @Test
569     void testGetJavaLibraryPath() {
570         assertNotNull(SystemProperties.getJavaLibraryPath());
571     }
572 
573     @Test
574     void testGetJavaLocaleProviders() {
575         assumeTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_9));
576         // default is null
577         assertNull(SystemProperties.getJavaLocaleProviders(), SystemProperties.getJavaVersion());
578     }
579 
580     @Test
581     void testGetJavaRuntimeName() {
582         assertNotNull(SystemProperties.getJavaRuntimeName());
583     }
584 
585     @Test
586     void testGetJavaRuntimeVersion() {
587         assertNotNull(SystemProperties.getJavaRuntimeVersion());
588     }
589 
590     @Test
591     void testGetJavaSpecificationName() {
592         assertNotNull(SystemProperties.getJavaSpecificationName());
593     }
594 
595     @Test
596     void testGetJavaSpecificationVendor() {
597         assertNotNull(SystemProperties.getJavaSpecificationVendor());
598     }
599 
600     @Test
601     void testGetJavaSpecificationVersion() {
602         assertNotNull(SystemProperties.getJavaSpecificationVersion());
603     }
604 
605     @Test
606     void testGetJavaSpecificationVersionSupplier() {
607         assertNotNull(SystemProperties.getJavaSpecificationVersion("99.0"));
608     }
609 
610     @Test
611     void testGetJavaUtilPrefsPreferencesFactory() {
612         assertNull(SystemProperties.getJavaUtilPrefsPreferencesFactory());
613     }
614 
615     @Test
616     void testGetJavaVendor() {
617         assertNotNull(SystemProperties.getJavaVendor());
618     }
619 
620     @Test
621     void testGetJavaVendorUrl() {
622         assertNotNull(SystemProperties.getJavaVendorUrl());
623     }
624 
625     @Test
626     void testGetJavaVersion() {
627         assertNotNull(SystemProperties.getJavaVersion());
628     }
629 
630     @Test
631     void testGetJavaVmInfo() {
632         assertNotNull(SystemProperties.getJavaVmInfo());
633     }
634 
635     @Test
636     void testGetJavaVmName() {
637         assertNotNull(SystemProperties.getJavaVmName());
638     }
639 
640     @Test
641     void testGetJavaVmSpecificationName() {
642         assertNotNull(SystemProperties.getJavaVmSpecificationName());
643     }
644 
645     @Test
646     void testGetJavaVmSpecificationVendor() {
647         assertNotNull(SystemProperties.getJavaVmSpecificationVendor());
648     }
649 
650     @Test
651     void testGetJavaVmSpecificationVersion() {
652         assertNotNull(SystemProperties.getJavaVmSpecificationVersion());
653     }
654 
655     @Test
656     void testGetJavaVmVendor() {
657         assertNotNull(SystemProperties.getJavaVmVendor());
658     }
659 
660     @Test
661     void testGetJavaVmVersion() {
662         assertNotNull(SystemProperties.getJavaVmVersion());
663     }
664 
665     @Test
666     void testGetLineSeparator() {
667         assertNotNull(SystemProperties.getLineSeparator());
668         assertNotNull(SystemProperties.getLineSeparator(null));
669         assertNotNull(SystemProperties.getLineSeparator(() -> ""));
670         assertNotNull(SystemProperties.getLineSeparator(() -> "\n"));
671         assertNotNull(SystemProperties.getLineSeparator(() -> null));
672         assertNotNull(SystemProperties.getLineSeparator(null));
673     }
674 
675     @Test
676     void testGetLong() {
677         final String key = RandomStringUtils.random(10);
678         final String absentKey = RandomStringUtils.random(10);
679         assertNull(System.getProperty(absentKey));
680         try {
681             System.setProperty(key, Long.toString(Long.MAX_VALUE));
682             assertEquals(Long.MAX_VALUE, SystemProperties.getLong(key, () -> 0));
683             assertEquals(Long.MAX_VALUE, SystemProperties.getLong(absentKey, () -> Long.MAX_VALUE));
684             assertEquals(0, SystemProperties.getLong(absentKey, () -> 0));
685             assertEquals(0, SystemProperties.getLong(absentKey, null));
686         } finally {
687             System.clearProperty(key);
688         }
689     }
690 
691     @Test
692     void testGetOsArch() {
693         assertNotNull(SystemProperties.getOsArch());
694     }
695 
696     @Test
697     void testGetOsName() {
698         assertNotNull(SystemProperties.getOsName());
699     }
700 
701     @Test
702     void testGetOsVersion() {
703         assertNotNull(SystemProperties.getOsVersion());
704     }
705 
706     @Test
707     void testGetPathSeparator() {
708         assertNotNull(SystemProperties.getPathSeparator());
709     }
710 
711     @Test
712     void testGetProperty() {
713         assertNull(SystemProperties.getProperty(null));
714         assertNull(SystemProperties.getProperty(StringUtils.EMPTY));
715         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1));
716         assertEquals("value2", SystemProperties.getProperty(KEY_TAB_1));
717     }
718 
719     @Test
720     void testGetPropertyStringString() {
721         assertNull(SystemProperties.getProperty(null, StringUtils.NULL));
722         assertNull(SystemProperties.getProperty(StringUtils.EMPTY, StringUtils.NULL));
723         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1, StringUtils.NULL));
724         assertEquals("value2", SystemProperties.getProperty("\t", StringUtils.NULL));
725         assertEquals("x", SystemProperties.getProperty(null, "x"));
726         assertEquals("x", SystemProperties.getProperty(StringUtils.EMPTY, "x"));
727         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1, "v"));
728         assertEquals("value2", SystemProperties.getProperty("\t", "v"));
729     }
730 
731     @Test
732     void testGetPropertyStringSupplier() {
733         assertNull(SystemProperties.getProperty(null, (Supplier<String>) null));
734         assertNull(SystemProperties.getProperty(StringUtils.EMPTY, (Supplier<String>) null));
735         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1, (Supplier<String>) null));
736         assertEquals("value2", SystemProperties.getProperty("\t", (Supplier<String>) null));
737         assertEquals("x", SystemProperties.getProperty(null, () -> "x"));
738         assertEquals("x", SystemProperties.getProperty(StringUtils.EMPTY, () -> "x"));
739         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1, () -> "v"));
740         assertEquals("value2", SystemProperties.getProperty("\t", () -> "v"));
741     }
742 
743     @Test
744     void testGetUserCountry() {
745         assertDoesNotThrow(SystemProperties::getUserCountry);
746     }
747 
748     @Test
749     void testGetUserDir() {
750         assertNotNull(SystemProperties.getUserDir());
751     }
752 
753     @Test
754     void testGetUserHome() {
755         assertNotNull(SystemProperties.getUserHome());
756     }
757 
758     @Test
759     void testGetUserLanguage() {
760         assertNotNull(SystemProperties.getUserLanguage());
761     }
762 
763     @Test
764     void testGetUserName() {
765         assertNotNull(SystemProperties.getUserName());
766         assertNotNull(SystemProperties.getUserName(""));
767         assertNotNull(SystemProperties.getUserName("User"));
768         assertNotNull(SystemProperties.getUserName(null));
769     }
770 
771     @Test
772     void testGetUserTimezone() {
773         assertDoesNotThrow(SystemProperties::getUserTimezone);
774     }
775 
776     @ParameterizedTest
777     @ValueSource(strings = { KEY_SPACE_1, KEY_TAB_1 })
778     void testIsPropertySet(final String property) {
779         assertTrue(SystemProperties.isPropertySet(property));
780     }
781 
782     @Test
783     void testIsPropertySetEdges() {
784         assertFalse(SystemProperties.isPropertySet(StringUtils.NULL));
785         assertFalse(SystemProperties.isPropertySet(StringUtils.EMPTY));
786     }
787 
788 }