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.nio.file.Paths;
29  import java.util.function.Supplier;
30  
31  import org.junit.jupiter.api.Test;
32  import org.junit.jupiter.api.function.ThrowingSupplier;
33  import org.junit.jupiter.params.ParameterizedTest;
34  import org.junit.jupiter.params.provider.ValueSource;
35  import org.junitpioneer.jupiter.SetSystemProperty;
36  import org.junitpioneer.jupiter.SetSystemProperty.SetSystemProperties;
37  
38  @SetSystemProperties({
39      @SetSystemProperty(key = SystemPropertiesTest.KEY_SPACE_1, value = "value1"),
40      @SetSystemProperty(key = SystemPropertiesTest.KEY_TAB_1, value = "value2") })
41  class SystemPropertiesTest extends AbstractLangTest {
42  
43      private static final String SIMPLE_NAME = SystemPropertiesTest.class.getSimpleName();
44      static final String KEY_SPACE_1 = " ";
45      static final String KEY_TAB_1 = "\t";
46  
47      private void basicKeyCheck(final String key) {
48          assertNotNull(key);
49          assertFalse(key.isEmpty());
50          assertDoesNotThrow(() -> System.getProperties().get(key));
51          assertDoesNotThrow(() -> System.getProperty(key));
52          assertDoesNotThrow(() -> System.getProperty(key, ""));
53  // Debug/Info
54  //        if (!System.getProperties().containsKey(key)) {
55  //            System.out.printf("No key '%s'%n", key);
56  //        } else if (System.getProperty(key) == null) {
57  //            System.out.printf("Null value at key '%s'%n", key);
58  //        }
59      }
60  
61      private boolean isJava11OrGreater() {
62          return SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_11);
63      }
64  
65      @Test
66      void testActualKeys() {
67          basicKeyCheck(SystemProperties.APPLE_AWT_ENABLE_TEMPLATE_IMAGES);
68          basicKeyCheck(SystemProperties.AWT_TOOLKIT);
69          basicKeyCheck(SystemProperties.COM_SUN_JNDI_LDAP_OBJECT_TRUST_SERIAL_DATA);
70          basicKeyCheck(SystemProperties.COM_SUN_NET_HTTP_SERVER_HTTP_SERVER_PROVIDER);
71          basicKeyCheck(SystemProperties.FILE_ENCODING);
72          basicKeyCheck(SystemProperties.FILE_SEPARATOR);
73          basicKeyCheck(SystemProperties.FTP_NON_PROXY_HOST);
74          basicKeyCheck(SystemProperties.FTP_PROXY_HOST);
75          basicKeyCheck(SystemProperties.FTP_PROXY_PORT);
76          basicKeyCheck(SystemProperties.HTTP_AGENT);
77          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_CNONCE_REPEAT);
78          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_RE_ENABLED_ALGORITHMS);
79          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_VALIDATE_PROXY);
80          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_VALIDATE_SERVER);
81          basicKeyCheck(SystemProperties.HTTP_AUTH_NTLM_DOMAIN);
82          basicKeyCheck(SystemProperties.HTTP_KEEP_ALIVE);
83          basicKeyCheck(SystemProperties.HTTP_KEEP_ALIVE_TIME_PROXY);
84          basicKeyCheck(SystemProperties.HTTP_KEEP_ALIVE_TIME_SERVER);
85          basicKeyCheck(SystemProperties.HTTP_MAX_CONNECTIONS);
86          basicKeyCheck(SystemProperties.HTTP_MAX_REDIRECTS);
87          basicKeyCheck(SystemProperties.HTTP_NON_PROXY_HOSTS);
88          basicKeyCheck(SystemProperties.HTTP_PROXY_HOST);
89          basicKeyCheck(SystemProperties.HTTP_PROXY_PORT);
90          basicKeyCheck(SystemProperties.HTTPS_PROXY_HOST);
91          basicKeyCheck(SystemProperties.HTTPS_PROXY_PORT);
92          basicKeyCheck(SystemProperties.JAVA_AWT_FONTS);
93          basicKeyCheck(SystemProperties.JAVA_AWT_GRAPHICSENV);
94          basicKeyCheck(SystemProperties.JAVA_AWT_HEADLESS);
95          basicKeyCheck(SystemProperties.JAVA_AWT_PRINTERJOB);
96          basicKeyCheck(SystemProperties.JAVA_CLASS_PATH);
97          basicKeyCheck(SystemProperties.JAVA_CLASS_VERSION);
98          basicKeyCheck(SystemProperties.JAVA_COMPILER);
99          basicKeyCheck(SystemProperties.JAVA_CONTENT_HANDLER_PKGS);
100         basicKeyCheck(SystemProperties.JAVA_ENDORSED_DIRS);
101         basicKeyCheck(SystemProperties.JAVA_EXT_DIRS);
102         basicKeyCheck(SystemProperties.JAVA_HOME);
103         basicKeyCheck(SystemProperties.JAVA_IO_TMPDIR);
104         basicKeyCheck(SystemProperties.JAVA_LIBRARY_PATH);
105         basicKeyCheck(SystemProperties.JAVA_LOCALE_PROVIDERS);
106         basicKeyCheck(SystemProperties.JAVA_LOCALE_USE_OLD_ISO_CODES);
107         basicKeyCheck(SystemProperties.JAVA_NET_PREFER_IPV4_STACK);
108         basicKeyCheck(SystemProperties.JAVA_NET_PREFER_IPV6_ADDRESSES);
109         basicKeyCheck(SystemProperties.JAVA_NET_SOCKS_PASSWORD);
110         basicKeyCheck(SystemProperties.JAVA_NET_SOCKS_USER_NAME);
111         basicKeyCheck(SystemProperties.JAVA_NET_USE_SYSTEM_PROXIES);
112         basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_INITIAL_SIZE);
113         basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_THREAD_FACTORY);
114         basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_SPI_ASYNCHRONOUS_CHANNEL_PROVIDER);
115         basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_SPI_SELECTOR_PROVIDER);
116         basicKeyCheck(SystemProperties.JAVA_NIO_FILE_SPI_DEFAULT_FILE_SYSTEM_PROVIDER);
117         basicKeyCheck(SystemProperties.JAVA_PROPERTIES_DATE);
118         basicKeyCheck(SystemProperties.JAVA_PROTOCOL_HANDLER_PKGS);
119         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_CODEBASE);
120         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_HOST_NAME);
121         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_RANDOM_IDS);
122         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_RMI_CLASS_LOADER_SPI);
123         basicKeyCheck(SystemProperties.JAVA_RUNTIME_NAME);
124         basicKeyCheck(SystemProperties.JAVA_RUNTIME_VERSION);
125         basicKeyCheck(SystemProperties.JAVA_SECURITY_AUTH_LOGIN_CONFIG);
126         basicKeyCheck(SystemProperties.JAVA_SECURITY_KERBEROS_CONF);
127         basicKeyCheck(SystemProperties.JAVA_SECURITY_KERBEROS_KDC);
128         basicKeyCheck(SystemProperties.JAVA_SECURITY_KERBEROS_REALM);
129         basicKeyCheck(SystemProperties.JAVA_SECURITY_DEBUG);
130         basicKeyCheck(SystemProperties.JAVA_SECURITY_MANAGER);
131         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_MAINTENANCE_VERSION);
132         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_NAME);
133         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_VENDOR);
134         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_VERSION);
135         basicKeyCheck(SystemProperties.JAVA_SYSTEM_CLASS_LOADER);
136         basicKeyCheck(SystemProperties.JAVA_TIME_ZONE_DEFAULT_ZONE_RULES_PROVIDER);
137         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_EXCEPTION_HANDLER);
138         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_MAXIMUM_SPARES);
139         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_PARALLELISM);
140         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_THREAD_FACTORY);
141         basicKeyCheck(SystemProperties.JAVA_UTIL_CURRENCY_DATA);
142         basicKeyCheck(SystemProperties.JAVA_UTIL_LOGGING_CONFIG_CLASS);
143         basicKeyCheck(SystemProperties.JAVA_UTIL_LOGGING_CONFIG_FILE);
144         basicKeyCheck(SystemProperties.JAVA_UTIL_LOGGING_SIMPLE_FORMATTER_FORMAT);
145         basicKeyCheck(SystemProperties.JAVA_UTIL_PREFS_PREFERENCES_FACTORY);
146         basicKeyCheck(SystemProperties.JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE_ENCODING);
147         basicKeyCheck(SystemProperties.JAVA_VENDOR);
148         basicKeyCheck(SystemProperties.JAVA_VENDOR_URL);
149         basicKeyCheck(SystemProperties.JAVA_VENDOR_VERSION);
150         basicKeyCheck(SystemProperties.JAVA_VERSION);
151         basicKeyCheck(SystemProperties.JAVA_VERSION_DATE);
152         basicKeyCheck(SystemProperties.JAVA_VM_INFO);
153         basicKeyCheck(SystemProperties.JAVA_VM_NAME);
154         basicKeyCheck(SystemProperties.JAVA_VM_SPECIFICATION_NAME);
155         basicKeyCheck(SystemProperties.JAVA_VM_SPECIFICATION_VENDOR);
156         basicKeyCheck(SystemProperties.JAVA_VM_SPECIFICATION_VERSION);
157         basicKeyCheck(SystemProperties.JAVA_VM_VENDOR);
158         basicKeyCheck(SystemProperties.JAVA_VM_VERSION);
159         basicKeyCheck(SystemProperties.JAVA_XML_CONFIG_FILE);
160         basicKeyCheck(SystemProperties.JAVAX_ACCESSIBILITY_ASSISTIVE_TECHNOLOGIES);
161         basicKeyCheck(SystemProperties.JAVAX_NET_SSL_SESSION_CACHE_SIZE);
162         basicKeyCheck(SystemProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES);
163         basicKeyCheck(SystemProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS);
164         basicKeyCheck(SystemProperties.JAVAX_SECURITY_AUTH_USE_SUBJECT_CREDS_ONLY);
165         basicKeyCheck(SystemProperties.JAVAX_SMART_CARD_IO_TERMINAL_FACTORY_DEFAULT_TYPE);
166         basicKeyCheck(SystemProperties.JDBC_DRIVERS);
167         basicKeyCheck(SystemProperties.JDK_HTTP_AUTH_PROXYING_DISABLED_SCHEMES);
168         basicKeyCheck(SystemProperties.JDK_HTTP_AUTH_TUNNELING_DISABLED_SCHEMES);
169         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_ALLOW_RESTRICTED_HEADERS);
170         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_AUTH_RETRY_LIMIT);
171         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_BUF_SIZE);
172         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_CONNECTION_POOL_SIZE);
173         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_CONNECTION_WINDOW_SIZE);
174         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_DISABLE_RETRY_CONNECT);
175         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_ENABLE_ALL_METHOD_RETRY);
176         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_ENABLE_PUSH);
177         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_HPACK_MAX_HEADER_TABLE_SIZE);
178         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_HTTP_CLIENT_LOG);
179         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT);
180         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT_H2);
181         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_MAX_FRAME_SIZE);
182         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_MAX_STREAMS);
183         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_RECEIVE_BUFFER_SIZE);
184         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_REDIRECTS_RETRY_LIMIT);
185         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_SEND_BUFFER_SIZE);
186         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_WEB_SOCKET_WRITE_BUFFER_SIZE);
187         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_WINDOW_SIZE);
188         basicKeyCheck(SystemProperties.JDK_HTTPS_NEGOTIATE_CBT);
189         basicKeyCheck(SystemProperties.JDK_HTTP_SERVER_MAX_CONNECTIONS);
190         basicKeyCheck(SystemProperties.JDK_INCLUDE_IN_EXCEPTIONS);
191         basicKeyCheck(SystemProperties.JDK_INTERNAL_HTTP_CLIENT_DISABLE_HOST_NAME_VERIFICATION);
192         basicKeyCheck(SystemProperties.JDK_IO_PERMISSIONS_USE_CANONICAL_PATH);
193         basicKeyCheck(SystemProperties.JDK_JNDI_LDAP_OBJECT_FACTORIES_FILTER);
194         basicKeyCheck(SystemProperties.JDK_JNDI_OBJECT_FACTORIES_FILTER);
195         basicKeyCheck(SystemProperties.JDK_JNDI_RMI_OBJECT_FACTORIES_FILTER);
196         basicKeyCheck(SystemProperties.JDK_MODULE_MAIN);
197         basicKeyCheck(SystemProperties.JDK_MODULE_MAIN_CLASS);
198         basicKeyCheck(SystemProperties.JDK_MODULE_PATH);
199         basicKeyCheck(SystemProperties.JDK_MODULE_UPGRADE_PATH);
200         basicKeyCheck(SystemProperties.JDK_NET_UNIX_DOMAIN_TMPDIR);
201         basicKeyCheck(SystemProperties.JDK_NET_URL_CLASS_PATH_SHOW_IGNORED_CLASS_PATH_ENTRIES);
202         basicKeyCheck(SystemProperties.JDK_SERIAL_FILTER);
203         basicKeyCheck(SystemProperties.JDK_SERIAL_FILTER_FACTORY);
204         basicKeyCheck(SystemProperties.JDK_TLS_CLIENT_SIGNATURE_SCHEMES);
205         basicKeyCheck(SystemProperties.JDK_TLS_NAMED_GROUPS);
206         basicKeyCheck(SystemProperties.JDK_TLS_SERVER_SIGNATURE_SCHEMES);
207         basicKeyCheck(SystemProperties.JDK_VIRTUAL_THREAD_SCHEDULER_MAXPOOLSIZE);
208         basicKeyCheck(SystemProperties.JDK_VIRTUAL_THREAD_SCHEDULER_PARALLELISM);
209         basicKeyCheck(SystemProperties.JDK_XML_CDATA_CHUNK_SIZE);
210         basicKeyCheck(SystemProperties.JDK_XML_DTD_SUPPORT);
211         basicKeyCheck(SystemProperties.JDK_XML_ELEMENT_ATTRIBUTE_LIMIT);
212         basicKeyCheck(SystemProperties.JDK_XML_ENABLE_EXTENSION_FUNCTIONS);
213         basicKeyCheck(SystemProperties.JDK_XML_ENTITY_EXPANSION_LIMIT);
214         basicKeyCheck(SystemProperties.JDK_XML_ENTITY_REPLACEMENT_LIMIT);
215         basicKeyCheck(SystemProperties.JDK_XML_IS_STANDALONE);
216         basicKeyCheck(SystemProperties.JDK_XML_JDK_CATALOG_RESOLVE);
217         basicKeyCheck(SystemProperties.JDK_XML_MAX_ELEMENT_DEPTH);
218         basicKeyCheck(SystemProperties.JDK_XML_MAX_GENERAL_ENTITY_SIZE_LIMIT);
219         basicKeyCheck(SystemProperties.JDK_XML_MAX_OCCUR_LIMIT);
220         basicKeyCheck(SystemProperties.JDK_XML_MAX_PARAMETER_ENTITY_SIZE_LIMIT);
221         basicKeyCheck(SystemProperties.JDK_XML_MAX_XML_NAME_LIMIT);
222         basicKeyCheck(SystemProperties.JDK_XML_OVERRIDE_DEFAULT_PARSER);
223         basicKeyCheck(SystemProperties.JDK_XML_RESET_SYMBOL_TABLE);
224         basicKeyCheck(SystemProperties.JDK_XML_TOTAL_ENTITY_SIZE_LIMIT);
225         basicKeyCheck(SystemProperties.JDK_XML_XSLTC_IS_STANDALONE);
226         basicKeyCheck(SystemProperties.LINE_SEPARATOR);
227         basicKeyCheck(SystemProperties.NATIVE_ENCODING);
228         basicKeyCheck(SystemProperties.NETWORK_ADDRESS_CACHE_NEGATIVE_TTL);
229         basicKeyCheck(SystemProperties.NETWORK_ADDRESS_CACHE_STALE_TTL);
230         basicKeyCheck(SystemProperties.NETWORK_ADDRESS_CACHE_TTL);
231         basicKeyCheck(SystemProperties.ORG_JCP_XML_DSIG_SECURE_VALIDATION);
232         basicKeyCheck(SystemProperties.ORG_OPENJDK_JAVA_UTIL_STREAM_TRIPWIRE);
233         basicKeyCheck(SystemProperties.OS_ARCH);
234         basicKeyCheck(SystemProperties.OS_NAME);
235         basicKeyCheck(SystemProperties.OS_VERSION);
236         basicKeyCheck(SystemProperties.PATH_SEPARATOR);
237         basicKeyCheck(SystemProperties.SOCKS_PROXY_HOST);
238         basicKeyCheck(SystemProperties.SOCKS_PROXY_PORT);
239         basicKeyCheck(SystemProperties.SOCKS_PROXY_VERSION);
240         basicKeyCheck(SystemProperties.STDERR_ENCODING);
241         basicKeyCheck(SystemProperties.STDOUT_ENCODING);
242         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_DRAIN_AMOUNT);
243         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_IDLE_INTERVAL);
244         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_IDLE_CONNECTIONS);
245         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_REQ_HEADERS);
246         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_REQ_TIME);
247         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_RSP_TIME);
248         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_NO_DELAY);
249         basicKeyCheck(SystemProperties.SUN_SECURITY_KRB5_PRINCIPAL);
250         basicKeyCheck(SystemProperties.USER_COUNTRY);
251         basicKeyCheck(SystemProperties.USER_DIR);
252         basicKeyCheck(SystemProperties.USER_EXTENSIONS);
253         basicKeyCheck(SystemProperties.USER_HOME);
254         basicKeyCheck(SystemProperties.USER_LANGUAGE);
255         basicKeyCheck(SystemProperties.USER_NAME);
256         basicKeyCheck(SystemProperties.USER_REGION);
257         basicKeyCheck(SystemProperties.USER_SCRIPT);
258         basicKeyCheck(SystemProperties.USER_TIMEZONE);
259         basicKeyCheck(SystemProperties.USER_VARIANT);
260     }
261 
262     /**
263      * Tests that all names match expected system property names.
264      *
265      * @see #testEntityReplacementLimitConstantName
266      */
267     @Test
268     void testConstants() {
269         assertEquals("apple.awt.enableTemplateImages", SystemProperties.APPLE_AWT_ENABLE_TEMPLATE_IMAGES);
270         assertEquals("awt.toolkit", SystemProperties.AWT_TOOLKIT);
271         assertEquals("com.sun.jndi.ldap.object.trustSerialData", SystemProperties.COM_SUN_JNDI_LDAP_OBJECT_TRUST_SERIAL_DATA);
272         assertEquals("com.sun.net.httpserver.HttpServerProvider", SystemProperties.COM_SUN_NET_HTTP_SERVER_HTTP_SERVER_PROVIDER);
273         assertEquals("file.encoding", SystemProperties.FILE_ENCODING);
274         assertEquals("file.separator", SystemProperties.FILE_SEPARATOR);
275         assertEquals("ftp.nonProxyHosts", SystemProperties.FTP_NON_PROXY_HOST);
276         assertEquals("ftp.proxyHost", SystemProperties.FTP_PROXY_HOST);
277         assertEquals("ftp.proxyPort", SystemProperties.FTP_PROXY_PORT);
278         assertEquals("http.agent", SystemProperties.HTTP_AGENT);
279         assertEquals("http.auth.digest.cnonceRepeat", SystemProperties.HTTP_AUTH_DIGEST_CNONCE_REPEAT);
280         assertEquals("http.auth.digest.reEnabledAlgorithms", SystemProperties.HTTP_AUTH_DIGEST_RE_ENABLED_ALGORITHMS);
281         assertEquals("http.auth.digest.validateProxy", SystemProperties.HTTP_AUTH_DIGEST_VALIDATE_PROXY);
282         assertEquals("http.auth.digest.validateServer", SystemProperties.HTTP_AUTH_DIGEST_VALIDATE_SERVER);
283         assertEquals("http.auth.ntlm.domain", SystemProperties.HTTP_AUTH_NTLM_DOMAIN);
284         assertEquals("http.keepAlive", SystemProperties.HTTP_KEEP_ALIVE);
285         assertEquals("http.keepAlive.time.proxy", SystemProperties.HTTP_KEEP_ALIVE_TIME_PROXY);
286         assertEquals("http.keepAlive.time.server", SystemProperties.HTTP_KEEP_ALIVE_TIME_SERVER);
287         assertEquals("http.maxConnections", SystemProperties.HTTP_MAX_CONNECTIONS);
288         assertEquals("http.maxRedirects", SystemProperties.HTTP_MAX_REDIRECTS);
289         assertEquals("http.nonProxyHosts", SystemProperties.HTTP_NON_PROXY_HOSTS);
290         assertEquals("http.proxyHost", SystemProperties.HTTP_PROXY_HOST);
291         assertEquals("http.proxyPort", SystemProperties.HTTP_PROXY_PORT);
292         assertEquals("https.proxyHost", SystemProperties.HTTPS_PROXY_HOST);
293         assertEquals("https.proxyPort", SystemProperties.HTTPS_PROXY_PORT);
294         assertEquals("java.awt.fonts", SystemProperties.JAVA_AWT_FONTS);
295         assertEquals("java.awt.graphicsenv", SystemProperties.JAVA_AWT_GRAPHICSENV);
296         assertEquals("java.awt.headless", SystemProperties.JAVA_AWT_HEADLESS);
297         assertEquals("java.awt.printerjob", SystemProperties.JAVA_AWT_PRINTERJOB);
298         assertEquals("java.class.path", SystemProperties.JAVA_CLASS_PATH);
299         assertEquals("java.class.version", SystemProperties.JAVA_CLASS_VERSION);
300         assertEquals("java.compiler", SystemProperties.JAVA_COMPILER);
301         assertEquals("java.content.handler.pkgs", SystemProperties.JAVA_CONTENT_HANDLER_PKGS);
302         assertEquals("java.endorsed.dirs", SystemProperties.JAVA_ENDORSED_DIRS);
303         assertEquals("java.ext.dirs", SystemProperties.JAVA_EXT_DIRS);
304         assertEquals("java.home", SystemProperties.JAVA_HOME);
305         assertEquals("java.io.tmpdir", SystemProperties.JAVA_IO_TMPDIR);
306         assertEquals("java.library.path", SystemProperties.JAVA_LIBRARY_PATH);
307         assertEquals("java.locale.providers", SystemProperties.JAVA_LOCALE_PROVIDERS);
308         assertEquals("java.locale.useOldISOCodes", SystemProperties.JAVA_LOCALE_USE_OLD_ISO_CODES);
309         assertEquals("java.net.preferIPv4Stack", SystemProperties.JAVA_NET_PREFER_IPV4_STACK);
310         assertEquals("java.net.preferIPv6Addresses", SystemProperties.JAVA_NET_PREFER_IPV6_ADDRESSES);
311         assertEquals("java.net.socks.password", SystemProperties.JAVA_NET_SOCKS_PASSWORD);
312         assertEquals("java.net.socks.username", SystemProperties.JAVA_NET_SOCKS_USER_NAME);
313         assertEquals("java.net.useSystemProxies", SystemProperties.JAVA_NET_USE_SYSTEM_PROXIES);
314         assertEquals("java.nio.channels.DefaultThreadPool.initialSize", SystemProperties.JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_INITIAL_SIZE);
315         assertEquals("java.nio.channels.DefaultThreadPool.threadFactory", SystemProperties.JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_THREAD_FACTORY);
316         assertEquals("java.nio.channels.spi.AsynchronousChannelProvider", SystemProperties.JAVA_NIO_CHANNELS_SPI_ASYNCHRONOUS_CHANNEL_PROVIDER);
317         assertEquals("java.nio.channels.spi.SelectorProvider", SystemProperties.JAVA_NIO_CHANNELS_SPI_SELECTOR_PROVIDER);
318         assertEquals("java.nio.file.spi.DefaultFileSystemProvider", SystemProperties.JAVA_NIO_FILE_SPI_DEFAULT_FILE_SYSTEM_PROVIDER);
319         assertEquals("java.properties.date", SystemProperties.JAVA_PROPERTIES_DATE);
320         assertEquals("java.protocol.handler.pkgs", SystemProperties.JAVA_PROTOCOL_HANDLER_PKGS);
321         assertEquals("java.rmi.server.codebase", SystemProperties.JAVA_RMI_SERVER_CODEBASE);
322         assertEquals("java.rmi.server.hostname", SystemProperties.JAVA_RMI_SERVER_HOST_NAME);
323         assertEquals("java.rmi.server.randomIDs", SystemProperties.JAVA_RMI_SERVER_RANDOM_IDS);
324         assertEquals("java.rmi.server.RMIClassLoaderSpi", SystemProperties.JAVA_RMI_SERVER_RMI_CLASS_LOADER_SPI);
325         assertEquals("java.runtime.name", SystemProperties.JAVA_RUNTIME_NAME);
326         assertEquals("java.runtime.version", SystemProperties.JAVA_RUNTIME_VERSION);
327         assertEquals("java.security.auth.login.config", SystemProperties.JAVA_SECURITY_AUTH_LOGIN_CONFIG);
328         assertEquals("java.security.debug", SystemProperties.JAVA_SECURITY_DEBUG);
329         assertEquals("java.security.krb5.conf", SystemProperties.JAVA_SECURITY_KERBEROS_CONF);
330         assertEquals("java.security.krb5.kdc", SystemProperties.JAVA_SECURITY_KERBEROS_KDC);
331         assertEquals("java.security.krb5.realm", SystemProperties.JAVA_SECURITY_KERBEROS_REALM);
332         assertEquals("java.security.manager", SystemProperties.JAVA_SECURITY_MANAGER);
333         assertEquals("java.specification.maintenance.version", SystemProperties.JAVA_SPECIFICATION_MAINTENANCE_VERSION);
334         assertEquals("java.specification.name", SystemProperties.JAVA_SPECIFICATION_NAME);
335         assertEquals("java.specification.vendor", SystemProperties.JAVA_SPECIFICATION_VENDOR);
336         assertEquals("java.specification.version", SystemProperties.JAVA_SPECIFICATION_VERSION);
337         assertEquals("java.system.class.loader", SystemProperties.JAVA_SYSTEM_CLASS_LOADER);
338         assertEquals("java.time.zone.DefaultZoneRulesProvider", SystemProperties.JAVA_TIME_ZONE_DEFAULT_ZONE_RULES_PROVIDER);
339         assertEquals("java.util.concurrent.ForkJoinPool.common.exceptionHandler", SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_EXCEPTION_HANDLER);
340         assertEquals("java.util.concurrent.ForkJoinPool.common.maximumSpares", SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_MAXIMUM_SPARES);
341         assertEquals("java.util.concurrent.ForkJoinPool.common.parallelism", SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_PARALLELISM);
342         assertEquals("java.util.concurrent.ForkJoinPool.common.threadFactory", SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_THREAD_FACTORY);
343         assertEquals("java.util.currency.data", SystemProperties.JAVA_UTIL_CURRENCY_DATA);
344         assertEquals("java.util.logging.config.class", SystemProperties.JAVA_UTIL_LOGGING_CONFIG_CLASS);
345         assertEquals("java.util.logging.config.file", SystemProperties.JAVA_UTIL_LOGGING_CONFIG_FILE);
346         assertEquals("java.util.logging.simpleformatter.format", SystemProperties.JAVA_UTIL_LOGGING_SIMPLE_FORMATTER_FORMAT);
347         assertEquals("java.util.prefs.PreferencesFactory", SystemProperties.JAVA_UTIL_PREFS_PREFERENCES_FACTORY);
348         assertEquals("java.util.PropertyResourceBundle.encoding", SystemProperties.JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE_ENCODING);
349         assertEquals("java.vendor", SystemProperties.JAVA_VENDOR);
350         assertEquals("java.vendor.url", SystemProperties.JAVA_VENDOR_URL);
351         assertEquals("java.vendor.version", SystemProperties.JAVA_VENDOR_VERSION);
352         assertEquals("java.version", SystemProperties.JAVA_VERSION);
353         assertEquals("java.version.date", SystemProperties.JAVA_VERSION_DATE);
354         assertEquals("java.vm.info", SystemProperties.JAVA_VM_INFO);
355         assertEquals("java.vm.name", SystemProperties.JAVA_VM_NAME);
356         assertEquals("java.vm.specification.name", SystemProperties.JAVA_VM_SPECIFICATION_NAME);
357         assertEquals("java.vm.specification.vendor", SystemProperties.JAVA_VM_SPECIFICATION_VENDOR);
358         assertEquals("java.vm.specification.version", SystemProperties.JAVA_VM_SPECIFICATION_VERSION);
359         assertEquals("java.vm.vendor", SystemProperties.JAVA_VM_VENDOR);
360         assertEquals("java.vm.version", SystemProperties.JAVA_VM_VERSION);
361         assertEquals("java.xml.config.file", SystemProperties.JAVA_XML_CONFIG_FILE);
362         assertEquals("javax.accessibility.assistive_technologies", SystemProperties.JAVAX_ACCESSIBILITY_ASSISTIVE_TECHNOLOGIES);
363         assertEquals("javax.net.ssl.sessionCacheSize", SystemProperties.JAVAX_NET_SSL_SESSION_CACHE_SIZE);
364         assertEquals("javax.rmi.ssl.client.enabledCipherSuites", SystemProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES);
365         assertEquals("javax.rmi.ssl.client.enabledProtocols", SystemProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS);
366         assertEquals("javax.security.auth.useSubjectCredsOnly", SystemProperties.JAVAX_SECURITY_AUTH_USE_SUBJECT_CREDS_ONLY);
367         assertEquals("javax.smartcardio.TerminalFactory.DefaultType", SystemProperties.JAVAX_SMART_CARD_IO_TERMINAL_FACTORY_DEFAULT_TYPE);
368         assertEquals("jdbc.drivers", SystemProperties.JDBC_DRIVERS);
369         assertEquals("jdk.http.auth.proxying.disabledSchemes", SystemProperties.JDK_HTTP_AUTH_PROXYING_DISABLED_SCHEMES);
370         assertEquals("jdk.http.auth.tunneling.disabledSchemes", SystemProperties.JDK_HTTP_AUTH_TUNNELING_DISABLED_SCHEMES);
371         assertEquals("jdk.httpclient.allowRestrictedHeaders", SystemProperties.JDK_HTTP_CLIENT_ALLOW_RESTRICTED_HEADERS);
372         assertEquals("jdk.httpclient.auth.retrylimit", SystemProperties.JDK_HTTP_CLIENT_AUTH_RETRY_LIMIT);
373         assertEquals("jdk.httpclient.bufsize", SystemProperties.JDK_HTTP_CLIENT_BUF_SIZE);
374         assertEquals("jdk.httpclient.connectionPoolSize", SystemProperties.JDK_HTTP_CLIENT_CONNECTION_POOL_SIZE);
375         assertEquals("jdk.httpclient.connectionWindowSize", SystemProperties.JDK_HTTP_CLIENT_CONNECTION_WINDOW_SIZE);
376         assertEquals("jdk.httpclient.disableRetryConnect", SystemProperties.JDK_HTTP_CLIENT_DISABLE_RETRY_CONNECT);
377         assertEquals("jdk.httpclient.enableAllMethodRetry", SystemProperties.JDK_HTTP_CLIENT_ENABLE_ALL_METHOD_RETRY);
378         assertEquals("jdk.httpclient.enablepush", SystemProperties.JDK_HTTP_CLIENT_ENABLE_PUSH);
379         assertEquals("jdk.httpclient.hpack.maxheadertablesize", SystemProperties.JDK_HTTP_CLIENT_HPACK_MAX_HEADER_TABLE_SIZE);
380         assertEquals("jdk.httpclient.HttpClient.log", SystemProperties.JDK_HTTP_CLIENT_HTTP_CLIENT_LOG);
381         assertEquals("jdk.httpclient.keepalive.timeout", SystemProperties.JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT);
382         assertEquals("jdk.httpclient.keepalive.timeout.h2", SystemProperties.JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT_H2);
383         assertEquals("jdk.httpclient.maxframesize", SystemProperties.JDK_HTTP_CLIENT_MAX_FRAME_SIZE);
384         assertEquals("jdk.httpclient.maxstreams", SystemProperties.JDK_HTTP_CLIENT_MAX_STREAMS);
385         assertEquals("jdk.httpclient.receiveBufferSize", SystemProperties.JDK_HTTP_CLIENT_RECEIVE_BUFFER_SIZE);
386         assertEquals("jdk.httpclient.redirects.retrylimit", SystemProperties.JDK_HTTP_CLIENT_REDIRECTS_RETRY_LIMIT);
387         assertEquals("jdk.httpclient.sendBufferSize", SystemProperties.JDK_HTTP_CLIENT_SEND_BUFFER_SIZE);
388         assertEquals("jdk.httpclient.websocket.writeBufferSize", SystemProperties.JDK_HTTP_CLIENT_WEB_SOCKET_WRITE_BUFFER_SIZE);
389         assertEquals("jdk.httpclient.windowsize", SystemProperties.JDK_HTTP_CLIENT_WINDOW_SIZE);
390         assertEquals("jdk.httpserver.maxConnections", SystemProperties.JDK_HTTP_SERVER_MAX_CONNECTIONS);
391         assertEquals("jdk.https.negotiate.cbt", SystemProperties.JDK_HTTPS_NEGOTIATE_CBT);
392         assertEquals("jdk.includeInExceptions", SystemProperties.JDK_INCLUDE_IN_EXCEPTIONS);
393         assertEquals("jdk.internal.httpclient.disableHostnameVerification", SystemProperties.JDK_INTERNAL_HTTP_CLIENT_DISABLE_HOST_NAME_VERIFICATION);
394         assertEquals("jdk.io.permissionsUseCanonicalPath", SystemProperties.JDK_IO_PERMISSIONS_USE_CANONICAL_PATH);
395         assertEquals("jdk.jndi.ldap.object.factoriesFilter", SystemProperties.JDK_JNDI_LDAP_OBJECT_FACTORIES_FILTER);
396         assertEquals("jdk.jndi.object.factoriesFilter", SystemProperties.JDK_JNDI_OBJECT_FACTORIES_FILTER);
397         assertEquals("jdk.jndi.rmi.object.factoriesFilter", SystemProperties.JDK_JNDI_RMI_OBJECT_FACTORIES_FILTER);
398         assertEquals("jdk.module.main", SystemProperties.JDK_MODULE_MAIN);
399         assertEquals("jdk.module.main.class", SystemProperties.JDK_MODULE_MAIN_CLASS);
400         assertEquals("jdk.module.path", SystemProperties.JDK_MODULE_PATH);
401         assertEquals("jdk.module.upgrade.path", SystemProperties.JDK_MODULE_UPGRADE_PATH);
402         assertEquals("jdk.net.unixdomain.tmpdir", SystemProperties.JDK_NET_UNIX_DOMAIN_TMPDIR);
403         assertEquals("jdk.net.URLClassPath.showIgnoredClassPathEntries", SystemProperties.JDK_NET_URL_CLASS_PATH_SHOW_IGNORED_CLASS_PATH_ENTRIES);
404         assertEquals("jdk.serialFilter", SystemProperties.JDK_SERIAL_FILTER);
405         assertEquals("jdk.serialFilterFactory", SystemProperties.JDK_SERIAL_FILTER_FACTORY);
406         assertEquals("jdk.tls.client.SignatureSchemes", SystemProperties.JDK_TLS_CLIENT_SIGNATURE_SCHEMES);
407         assertEquals("jdk.tls.namedGroups", SystemProperties.JDK_TLS_NAMED_GROUPS);
408         assertEquals("jdk.tls.server.SignatureSchemes", SystemProperties.JDK_TLS_SERVER_SIGNATURE_SCHEMES);
409         assertEquals("jdk.virtualThreadScheduler.maxPoolSize", SystemProperties.JDK_VIRTUAL_THREAD_SCHEDULER_MAXPOOLSIZE);
410         assertEquals("jdk.virtualThreadScheduler.parallelism", SystemProperties.JDK_VIRTUAL_THREAD_SCHEDULER_PARALLELISM);
411         assertEquals("jdk.xml.cdataChunkSize", SystemProperties.JDK_XML_CDATA_CHUNK_SIZE);
412         assertEquals("jdk.xml.dtd.support", SystemProperties.JDK_XML_DTD_SUPPORT);
413         assertEquals("jdk.xml.elementAttributeLimit", SystemProperties.JDK_XML_ELEMENT_ATTRIBUTE_LIMIT);
414         assertEquals("jdk.xml.enableExtensionFunctions", SystemProperties.JDK_XML_ENABLE_EXTENSION_FUNCTIONS);
415         assertEquals("jdk.xml.entityExpansionLimit", SystemProperties.JDK_XML_ENTITY_EXPANSION_LIMIT);
416         assertEquals("jdk.xml.entityReplacementLimit", SystemProperties.JDK_XML_ENTITY_REPLACEMENT_LIMIT);
417         assertEquals("jdk.xml.isStandalone", SystemProperties.JDK_XML_IS_STANDALONE);
418         assertEquals("jdk.xml.jdkcatalog.resolve", SystemProperties.JDK_XML_JDK_CATALOG_RESOLVE);
419         assertEquals("jdk.xml.maxElementDepth", SystemProperties.JDK_XML_MAX_ELEMENT_DEPTH);
420         assertEquals("jdk.xml.maxGeneralEntitySizeLimit", SystemProperties.JDK_XML_MAX_GENERAL_ENTITY_SIZE_LIMIT);
421         assertEquals("jdk.xml.maxOccurLimit", SystemProperties.JDK_XML_MAX_OCCUR_LIMIT);
422         assertEquals("jdk.xml.maxParameterEntitySizeLimit", SystemProperties.JDK_XML_MAX_PARAMETER_ENTITY_SIZE_LIMIT);
423         assertEquals("jdk.xml.maxXMLNameLimit", SystemProperties.JDK_XML_MAX_XML_NAME_LIMIT);
424         assertEquals("jdk.xml.overrideDefaultParser", SystemProperties.JDK_XML_OVERRIDE_DEFAULT_PARSER);
425         assertEquals("jdk.xml.resetSymbolTable", SystemProperties.JDK_XML_RESET_SYMBOL_TABLE);
426         assertEquals("jdk.xml.totalEntitySizeLimit", SystemProperties.JDK_XML_TOTAL_ENTITY_SIZE_LIMIT);
427         assertEquals("jdk.xml.xsltcIsStandalone", SystemProperties.JDK_XML_XSLTC_IS_STANDALONE);
428         assertEquals("line.separator", SystemProperties.LINE_SEPARATOR);
429         assertEquals("native.encoding", SystemProperties.NATIVE_ENCODING);
430         assertEquals("networkaddress.cache.negative.ttl", SystemProperties.NETWORK_ADDRESS_CACHE_NEGATIVE_TTL);
431         assertEquals("networkaddress.cache.stale.ttl", SystemProperties.NETWORK_ADDRESS_CACHE_STALE_TTL);
432         assertEquals("networkaddress.cache.ttl", SystemProperties.NETWORK_ADDRESS_CACHE_TTL);
433         assertEquals("org.jcp.xml.dsig.securevalidation", SystemProperties.ORG_JCP_XML_DSIG_SECURE_VALIDATION);
434         assertEquals("org.openjdk.java.util.stream.tripwire", SystemProperties.ORG_OPENJDK_JAVA_UTIL_STREAM_TRIPWIRE);
435         assertEquals("os.arch", SystemProperties.OS_ARCH);
436         assertEquals("os.name", SystemProperties.OS_NAME);
437         assertEquals("os.version", SystemProperties.OS_VERSION);
438         assertEquals("path.separator", SystemProperties.PATH_SEPARATOR);
439         assertEquals("socksProxyHost", SystemProperties.SOCKS_PROXY_HOST);
440         assertEquals("socksProxyPort", SystemProperties.SOCKS_PROXY_PORT);
441         assertEquals("socksProxyVersion", SystemProperties.SOCKS_PROXY_VERSION);
442         assertEquals("stderr.encoding", SystemProperties.STDERR_ENCODING);
443         assertEquals("stdout.encoding", SystemProperties.STDOUT_ENCODING);
444         assertEquals("sun.net.httpserver.drainAmount", SystemProperties.SUN_NET_HTTP_SERVER_DRAIN_AMOUNT);
445         assertEquals("sun.net.httpserver.idleInterval", SystemProperties.SUN_NET_HTTP_SERVER_IDLE_INTERVAL);
446         assertEquals("sun.net.httpserver.maxIdleConnections", SystemProperties.SUN_NET_HTTP_SERVER_MAX_IDLE_CONNECTIONS);
447         assertEquals("sun.net.httpserver.maxReqHeaders", SystemProperties.SUN_NET_HTTP_SERVER_MAX_REQ_HEADERS);
448         assertEquals("sun.net.httpserver.maxReqTime", SystemProperties.SUN_NET_HTTP_SERVER_MAX_REQ_TIME);
449         assertEquals("sun.net.httpserver.maxRspTime", SystemProperties.SUN_NET_HTTP_SERVER_MAX_RSP_TIME);
450         assertEquals("sun.net.httpserver.nodelay", SystemProperties.SUN_NET_HTTP_SERVER_NO_DELAY);
451         assertEquals("sun.security.krb5.principal", SystemProperties.SUN_SECURITY_KRB5_PRINCIPAL);
452         assertEquals("user.country", SystemProperties.USER_COUNTRY);
453         assertEquals("user.dir", SystemProperties.USER_DIR);
454         assertEquals("user.extensions", SystemProperties.USER_EXTENSIONS);
455         assertEquals("user.home", SystemProperties.USER_HOME);
456         assertEquals("user.language", SystemProperties.USER_LANGUAGE);
457         assertEquals("user.name", SystemProperties.USER_NAME);
458         assertEquals("user.region", SystemProperties.USER_REGION);
459         assertEquals("user.script", SystemProperties.USER_SCRIPT);
460         assertEquals("user.timezone", SystemProperties.USER_TIMEZONE);
461         assertEquals("user.variant", SystemProperties.USER_VARIANT);
462     }
463 
464     /**
465      * Tests that {@link SystemProperties#JDK_XML_ENTITY_REPLACEMENT_LIMIT} is correct since it suffered from a typo when originally coded.
466      */
467     @Test
468     @SetSystemProperty(key = "jdk.xml.entityReplacementLimit", value = "1234")
469     void testEntityReplacementLimitConstantName() {
470         assertEquals("jdk.xml.entityReplacementLimit", SystemProperties.JDK_XML_ENTITY_REPLACEMENT_LIMIT);
471         assertEquals("1234", SystemProperties.getJdkXmlEntityReplacementLimit());
472     }
473 
474     @Test
475     void testGetAwtToolkit() {
476         assertDoesNotThrow(SystemProperties::getAwtToolkit);
477     }
478 
479     @Test
480     void testGetBoolean() {
481         final String key = RandomStringUtils.insecure().next(10);
482         final String absentKey = RandomStringUtils.insecure().next(10);
483         assertNull(System.getProperty(absentKey));
484         try {
485             System.setProperty(key, Boolean.toString(Boolean.TRUE));
486             assertEquals(Boolean.TRUE, SystemProperties.getBoolean(key, () -> false));
487             assertEquals(Boolean.TRUE, SystemProperties.getBoolean(absentKey, () -> Boolean.TRUE));
488             assertFalse(SystemProperties.getBoolean(absentKey, () -> false));
489             assertFalse(SystemProperties.getBoolean(absentKey, null));
490         } finally {
491             System.clearProperty(key);
492         }
493     }
494 
495     @Test
496     void testGetBooleanClass() {
497         final String key = RandomStringUtils.insecure().next(10);
498         final String absentKey = RandomStringUtils.insecure().next(10);
499         final String keyFull = SIMPLE_NAME + "." + key;
500         final String absentKeyFull = SIMPLE_NAME + "." + absentKey;
501         assertNull(System.getProperty(absentKeyFull));
502         try {
503             System.setProperty(keyFull, Boolean.TRUE.toString());
504             assertTrue(SystemProperties.getBoolean(SystemPropertiesTest.class, key, () -> false));
505             assertTrue(SystemProperties.getBoolean(SystemPropertiesTest.class, absentKey, () -> true));
506             assertFalse(SystemProperties.getBoolean(SystemPropertiesTest.class, absentKey, () -> false));
507             assertTrue(SystemProperties.getBoolean(SystemPropertiesTest.class, absentKey, () -> true));
508         } finally {
509             System.clearProperty(keyFull);
510         }
511     }
512 
513     @Test
514     void testGetDoesNotThrow() {
515         assertDoesNotThrow(SystemProperties::getAppleAwtEnableTemplateImages);
516         assertDoesNotThrow(SystemProperties::getAwtToolkit);
517         assertDoesNotThrow(SystemProperties::getComSunJndiLdapObjectTrustSerialData);
518         assertDoesNotThrow(SystemProperties::getComSunNetHttpServerHttpServerProvider);
519         assertDoesNotThrow(SystemProperties::getFileEncoding);
520         assertDoesNotThrow(SystemProperties::getFileSeparator);
521         assertDoesNotThrow(SystemProperties::getFtpNonProxyHost);
522         assertDoesNotThrow(SystemProperties::getFtpProxyHost);
523         assertDoesNotThrow(SystemProperties::getFtpProxyPort);
524         assertDoesNotThrow(SystemProperties::getHttpAgent);
525         assertDoesNotThrow(SystemProperties::getHttpAuthDigestCnonceRepeat);
526         assertDoesNotThrow(SystemProperties::getHttpAuthDigestReenabledAlgorithms);
527         assertDoesNotThrow(SystemProperties::getHttpAuthDigestValidateProxy);
528         assertDoesNotThrow(SystemProperties::getHttpAuthDigestValidateServer);
529         assertDoesNotThrow(SystemProperties::getHttpAuthNtlmDomain);
530         assertDoesNotThrow(SystemProperties::getHttpKeepAlive);
531         assertDoesNotThrow(SystemProperties::getHttpKeepAliveTimeProxy);
532         assertDoesNotThrow(SystemProperties::getHttpKeepAliveTimeServer);
533         assertDoesNotThrow(SystemProperties::getHttpMaxConnections);
534         assertDoesNotThrow(SystemProperties::getHttpMaxRedirects);
535         assertDoesNotThrow(SystemProperties::getHttpNonProxyHosts);
536         assertDoesNotThrow(SystemProperties::getHttpProxyHost);
537         assertDoesNotThrow(SystemProperties::getHttpProxyPort);
538         assertDoesNotThrow(SystemProperties::getHttpsProxyHost);
539         assertDoesNotThrow(SystemProperties::getHttpsProxyPort);
540         assertDoesNotThrow(SystemProperties::getJavaAwtFonts);
541         assertDoesNotThrow(SystemProperties::getJavaAwtGraphicsenv);
542         assertDoesNotThrow(SystemProperties::getJavaAwtHeadless);
543         assertDoesNotThrow(SystemProperties::getJavaAwtPrinterjob);
544         assertDoesNotThrow(SystemProperties::getJavaClassPath);
545         assertDoesNotThrow(SystemProperties::getJavaClassVersion);
546         assertDoesNotThrow(SystemProperties::getJavaCompiler);
547         assertDoesNotThrow(SystemProperties::getJavaContentHandlerPkgs);
548         assertDoesNotThrow(SystemProperties::getJavaEndorsedDirs);
549         assertDoesNotThrow(SystemProperties::getJavaExtDirs);
550         assertDoesNotThrow(SystemProperties::getJavaHome);
551         assertDoesNotThrow(SystemProperties::getJavaIoTmpdir);
552         assertDoesNotThrow(SystemProperties::getJavaLibraryPath);
553         assertDoesNotThrow(SystemProperties::getJavaLocaleProviders);
554         assertDoesNotThrow(SystemProperties::getJavaLocaleUseOldIsoCodes);
555         assertDoesNotThrow(SystemProperties::getJavaNetPreferIpv4Stack);
556         assertDoesNotThrow(SystemProperties::getJavaNetPreferIpv6Addresses);
557         assertDoesNotThrow(SystemProperties::getJavaNetSocksPassword);
558         assertDoesNotThrow(SystemProperties::getJavaNetSocksUserName);
559         assertDoesNotThrow(SystemProperties::getJavaNetUseSystemProxies);
560         assertDoesNotThrow(SystemProperties::getJavaNioChannelsDefaultThreadPoolInitialSize);
561         assertDoesNotThrow(SystemProperties::getJavaNioChannelsDefaultThreadPoolThreadFactory);
562         assertDoesNotThrow(SystemProperties::getJavaNioChannelsSpiAsynchronousChannelProvider);
563         assertDoesNotThrow(SystemProperties::getJavaNioChannelsSpiSelectorProvider);
564         assertDoesNotThrow(SystemProperties::getJavaNioFileSpiDefaultFileSystemProvider);
565         assertDoesNotThrow(SystemProperties::getJavaPropertiesDate);
566         assertDoesNotThrow(SystemProperties::getJavaProtocolHandlerPkgs);
567         assertDoesNotThrow(SystemProperties::getJavaRmiServerCodebase);
568         assertDoesNotThrow(SystemProperties::getJavaRmiServerHostName);
569         assertDoesNotThrow(SystemProperties::getJavaRmiServerRandomIds);
570         assertDoesNotThrow(SystemProperties::getJavaRmiServerRmiClassLoaderSpi);
571         assertDoesNotThrow(SystemProperties::getJavaRuntimeName);
572         assertDoesNotThrow(SystemProperties::getJavaRuntimeVersion);
573         assertDoesNotThrow(SystemProperties::getJavaSecurityAuthLoginConfig);
574         assertDoesNotThrow(SystemProperties::getJavaSecurityManager);
575         assertDoesNotThrow(SystemProperties::getJavaSpecificationMaintenanceVersion);
576         assertDoesNotThrow(SystemProperties::getJavaSpecificationName);
577         assertDoesNotThrow(SystemProperties::getJavaSpecificationVendor);
578         assertDoesNotThrow((ThrowingSupplier<String>) SystemProperties::getJavaSpecificationVersion);
579         assertDoesNotThrow(SystemProperties::getJavaSystemClassLoader);
580         assertDoesNotThrow(SystemProperties::getJavaTimeZoneDefaultZoneRulesProvider);
581         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonExceptionHandler);
582         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonMaximumSpares);
583         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonParallelism);
584         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonThreadFactory);
585         assertDoesNotThrow(SystemProperties::getJavaUtilCurrencyData);
586         assertDoesNotThrow(SystemProperties::getJavaUtilLoggingConfigClass);
587         assertDoesNotThrow(SystemProperties::getJavaUtilLoggingConfigFile);
588         assertDoesNotThrow(SystemProperties::getJavaUtilLoggingSimpleFormatterFormat);
589         assertDoesNotThrow(SystemProperties::getJavaUtilPrefsPreferencesFactory);
590         assertDoesNotThrow(SystemProperties::getJavaUtilPropertyResourceBundleEncoding);
591         assertDoesNotThrow(SystemProperties::getJavaVendor);
592         assertDoesNotThrow(SystemProperties::getJavaVendorUrl);
593         assertDoesNotThrow(SystemProperties::getJavaVendorVersion);
594         assertDoesNotThrow(SystemProperties::getJavaVersion);
595         assertDoesNotThrow(SystemProperties::getJavaVersionDate);
596         assertDoesNotThrow(SystemProperties::getJavaVmInfo);
597         assertDoesNotThrow(SystemProperties::getJavaVmName);
598         assertDoesNotThrow(SystemProperties::getJavaVmSpecificationName);
599         assertDoesNotThrow(SystemProperties::getJavaVmSpecificationVendor);
600         assertDoesNotThrow(SystemProperties::getJavaVmSpecificationVersion);
601         assertDoesNotThrow(SystemProperties::getJavaVmVendor);
602         assertDoesNotThrow(SystemProperties::getJavaVmVersion);
603         assertDoesNotThrow(SystemProperties::getJavaxAccessibilityAssistiveTechnologies);
604         assertDoesNotThrow(SystemProperties::getJavaXmlConfigFile);
605         assertDoesNotThrow(SystemProperties::getJavaxNetSslSessionCacheSize);
606         assertDoesNotThrow(SystemProperties::getJavaxRmiSslClientEnabledCipherSuites);
607         assertDoesNotThrow(SystemProperties::getJavaxRmiSslClientEnabledProtocols);
608         assertDoesNotThrow(SystemProperties::getJavaxSecurityAuthUseSubjectCredsOnly);
609         assertDoesNotThrow(SystemProperties::getJavaxSmartCardIoTerminalFactoryDefaultType);
610         assertDoesNotThrow(SystemProperties::getJdbcDrivers);
611         assertDoesNotThrow(SystemProperties::getJdkHttpAuthProxyingDisabledSchemes);
612         assertDoesNotThrow(SystemProperties::getJdkHttpAuthTunnelingDisabledSchemes);
613         assertDoesNotThrow(SystemProperties::getJdkHttpClientAllowRestrictedHeaders);
614         assertDoesNotThrow(SystemProperties::getJdkHttpClientAuthRetryLimit);
615         assertDoesNotThrow(SystemProperties::getJdkHttpClientBufSize);
616         assertDoesNotThrow(SystemProperties::getJdkHttpClientConnectionPoolSize);
617         assertDoesNotThrow(SystemProperties::getJdkHttpClientConnectionWindowSize);
618         assertDoesNotThrow(SystemProperties::getJdkHttpClientDisableRetryConnect);
619         assertDoesNotThrow(SystemProperties::getJdkHttpClientEnableAllMethodRetry);
620         assertDoesNotThrow(SystemProperties::getJdkHttpClientEnablePush);
621         assertDoesNotThrow(SystemProperties::getJdkHttpClientHpackMaxHeaderTableSize);
622         assertDoesNotThrow(SystemProperties::getJdkHttpClientHttpClientLog);
623         assertDoesNotThrow(SystemProperties::getJdkHttpClientKeepAliveTimeout);
624         assertDoesNotThrow(SystemProperties::getJdkHttpClientKeepAliveTimeoutH2);
625         assertDoesNotThrow(SystemProperties::getJdkHttpClientMaxFrameSize);
626         assertDoesNotThrow(SystemProperties::getJdkHttpClientMaxStreams);
627         assertDoesNotThrow(SystemProperties::getJdkHttpClientReceiveBufferSize);
628         assertDoesNotThrow(SystemProperties::getJdkHttpClientRedirectsRetryLimit);
629         assertDoesNotThrow(SystemProperties::getJdkHttpClientSendBufferSize);
630         assertDoesNotThrow(SystemProperties::getJdkHttpClientWebSocketWriteBufferSize);
631         assertDoesNotThrow(SystemProperties::getJdkHttpClientWindowSize);
632         assertDoesNotThrow(SystemProperties::getJdkHttpServerMaxConnections);
633         assertDoesNotThrow(SystemProperties::getJdkHttpsNegotiateCbt);
634         assertDoesNotThrow(SystemProperties::getJdkIncludeInExceptions);
635         assertDoesNotThrow(SystemProperties::getJdkInternalHttpClientDisableHostNameVerification);
636         assertDoesNotThrow(SystemProperties::getJdkIoPermissionsUseCanonicalPath);
637         assertDoesNotThrow(SystemProperties::getJdkJndiLdapObjectFactoriesFilter);
638         assertDoesNotThrow(SystemProperties::getJdkJndiObjectFactoriesFilter);
639         assertDoesNotThrow(SystemProperties::getJdkJndiRmiObjectFactoriesFilter);
640         assertDoesNotThrow(SystemProperties::getJdkModuleMain);
641         assertDoesNotThrow(SystemProperties::getJdkModuleMainClass);
642         assertDoesNotThrow(SystemProperties::getJdkModulePath);
643         assertDoesNotThrow(SystemProperties::getJdkModuleUpgradePath);
644         assertDoesNotThrow(SystemProperties::getJdkNetUnixDomainTmpDir);
645         assertDoesNotThrow(SystemProperties::getJdkNetUrlClassPathShowIgnoredClassPathEntries);
646         assertDoesNotThrow(SystemProperties::getJdkSerialFilter);
647         assertDoesNotThrow(SystemProperties::getJdkSerialFilterFactory);
648         assertDoesNotThrow(SystemProperties::getJdkTlsClientSignatureSchemes);
649         assertDoesNotThrow(SystemProperties::getJdkTlsNamedGroups);
650         assertDoesNotThrow(SystemProperties::getJdkTlsServerSignatureSchemes);
651         assertDoesNotThrow(SystemProperties::getJdkVirtualThreadSchedulerMaxPoolSize);
652         assertDoesNotThrow(SystemProperties::getJdkVirtualThreadSchedulerParallelism);
653         assertDoesNotThrow(SystemProperties::getJdkXmlCdataChunkSize);
654         assertDoesNotThrow(SystemProperties::getJdkXmlDtdSupport);
655         assertDoesNotThrow(SystemProperties::getJdkXmlElementAttributeLimit);
656         assertDoesNotThrow(SystemProperties::getJdkXmlEnableExtensionFunctions);
657         assertDoesNotThrow(SystemProperties::getJdkXmlEntityExpansionLimit);
658         assertDoesNotThrow(SystemProperties::getJdkXmlEntityReplacementLimit);
659         assertDoesNotThrow(SystemProperties::getJdkXmlIsStandalone);
660         assertDoesNotThrow(SystemProperties::getJdkXmlJdkCatalogResolve);
661         assertDoesNotThrow(SystemProperties::getJdkXmlMaxElementDepth);
662         assertDoesNotThrow(SystemProperties::getJdkXmlMaxGeneralEntitySizeLimit);
663         assertDoesNotThrow(SystemProperties::getJdkXmlMaxOccurLimit);
664         assertDoesNotThrow(SystemProperties::getJdkXmlMaxParameterEntitySizeLimit);
665         assertDoesNotThrow(SystemProperties::getJdkXmlMaxXmlNameLimit);
666         assertDoesNotThrow(SystemProperties::getJdkXmlOverrideDefaultParser);
667         assertDoesNotThrow(SystemProperties::getJdkXmlResetSymbolTable);
668         assertDoesNotThrow(SystemProperties::getJdkXmlTotalEntitySizeLimit);
669         assertDoesNotThrow(SystemProperties::getJdkXmlXsltcIsStandalone);
670         assertDoesNotThrow((ThrowingSupplier<String>) SystemProperties::getLineSeparator);
671         assertDoesNotThrow(SystemProperties::getNativeEncoding);
672         assertDoesNotThrow(SystemProperties::getNetworkAddressCacheNegativeTtl);
673         assertDoesNotThrow(SystemProperties::getNetworkAddressCacheStaleTtl);
674         assertDoesNotThrow(SystemProperties::getNetworkAddressCacheTtl);
675         assertDoesNotThrow(SystemProperties::getOrgJcpXmlDsigSecureValidation);
676         assertDoesNotThrow(SystemProperties::getOrgOpenJdkJavaUtilStreamTripwire);
677         assertDoesNotThrow(SystemProperties::getOsArch);
678         assertDoesNotThrow(SystemProperties::getOsName);
679         assertDoesNotThrow(SystemProperties::getOsVersion);
680         assertDoesNotThrow(SystemProperties::getPathSeparator);
681         assertDoesNotThrow(SystemProperties::getSocksProxyHost);
682         assertDoesNotThrow(SystemProperties::getSocksProxyPort);
683         assertDoesNotThrow(SystemProperties::getSocksProxyVersion);
684         assertDoesNotThrow(SystemProperties::getStdErrEncoding);
685         assertDoesNotThrow(SystemProperties::getStdOutEncoding);
686         assertDoesNotThrow(SystemProperties::getSunNetHttpServerDrainAmount);
687         assertDoesNotThrow(SystemProperties::getSunNetHttpServerIdleInterval);
688         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxIdleConnections);
689         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxReqHeaders);
690         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxReqTime);
691         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxRspTime);
692         assertDoesNotThrow(SystemProperties::getSunNetHttpServerNoDelay);
693         assertDoesNotThrow(SystemProperties::getSunSecurityKrb5Principal);
694         assertDoesNotThrow(SystemProperties::getUserCountry);
695         assertDoesNotThrow(SystemProperties::getUserDir);
696         assertDoesNotThrow(SystemProperties::getUserExtensions);
697         assertDoesNotThrow(SystemProperties::getUserHome);
698         assertDoesNotThrow(SystemProperties::getUserLanguage);
699         assertDoesNotThrow((ThrowingSupplier<String>) SystemProperties::getUserName);
700         assertDoesNotThrow(SystemProperties::getUserRegion);
701         assertDoesNotThrow(SystemProperties::getUserScript);
702         assertDoesNotThrow(SystemProperties::getUserTimezone);
703         assertDoesNotThrow(SystemProperties::getUserVariant);
704     }
705 
706     @Test
707     void testGetFileEncoding() {
708         basicKeyCheck(SystemProperties.getFileEncoding());
709     }
710 
711     @Test
712     void testGetFileSeparator() {
713         assertNotNull(SystemProperties.getFileSeparator());
714     }
715 
716     @Test
717     void testGetInt() {
718         final String key = RandomStringUtils.insecure().next(10);
719         final String absentKey = RandomStringUtils.insecure().next(10);
720         assertNull(System.getProperty(absentKey));
721         try {
722             System.setProperty(key, Integer.toString(Integer.MAX_VALUE));
723             assertEquals(Integer.MAX_VALUE, SystemProperties.getInt(key, () -> 0));
724             assertEquals(Integer.MAX_VALUE, SystemProperties.getInt(absentKey, () -> Integer.MAX_VALUE));
725             assertEquals(0, SystemProperties.getInt(absentKey, () -> 0));
726             assertEquals(0, SystemProperties.getInt(absentKey, null));
727         } finally {
728             System.clearProperty(key);
729         }
730     }
731 
732     @Test
733     void testGetIntClass() {
734         final String key = RandomStringUtils.insecure().next(10);
735         final String absentKey = RandomStringUtils.insecure().next(10);
736         final String keyFull = SIMPLE_NAME + "." + key;
737         final String absentKeyFull = SIMPLE_NAME + "." + absentKey;
738         assertNull(System.getProperty(absentKeyFull));
739         try {
740             System.setProperty(keyFull, Long.toString(Integer.MAX_VALUE));
741             assertEquals(Integer.MAX_VALUE, SystemProperties.getInt(SystemPropertiesTest.class, key, () -> 0));
742             assertEquals(Integer.MAX_VALUE, SystemProperties.getInt(SystemPropertiesTest.class, absentKey, () -> Integer.MAX_VALUE));
743             assertEquals(0, SystemProperties.getInt(SystemPropertiesTest.class, absentKey, () -> 0));
744             assertEquals(1, SystemProperties.getInt(SystemPropertiesTest.class, absentKey, () -> 1));
745         } finally {
746             System.clearProperty(keyFull);
747         }
748     }
749 
750     @Test
751     void testGetJavaAwtFonts() {
752         assertNull(SystemProperties.getJavaAwtFonts());
753     }
754 
755     @Test
756     void testGetJavaAwtGraphicsenv() {
757         assertDoesNotThrow(SystemProperties::getJavaAwtGraphicsenv);
758     }
759 
760     @Test
761     void testGetJavaAwtHeadless() {
762         assertNull(SystemProperties.getJavaAwtHeadless());
763     }
764 
765     @Test
766     void testGetJavaAwtPrinterjob() {
767         assertDoesNotThrow(SystemProperties::getJavaAwtPrinterjob);
768     }
769 
770     @Test
771     void testGetJavaClassPath() {
772         assertNotNull(SystemProperties.getJavaClassPath());
773     }
774 
775     @Test
776     void testGetJavaClassVersion() {
777         assertNotNull(SystemProperties.getJavaClassVersion());
778     }
779 
780     @Test
781     void testGetJavaCompiler() {
782         if (SystemUtils.IS_JAVA_14) {
783             // Not in Java 11
784             assertNotNull(SystemProperties.getJavaCompiler());
785         }
786     }
787 
788     @Test
789     void testGetJavaEndorsedDirs() {
790         if (isJava11OrGreater()) {
791             // Not in Java 11
792             assertNull(SystemProperties.getJavaEndorsedDirs());
793         } else {
794             assertNotNull(SystemProperties.getJavaExtDirs());
795         }
796     }
797 
798     @Test
799     void testGetJavaExtDirs() {
800         if (isJava11OrGreater()) {
801             // Not in Java 11
802             assertNull(SystemProperties.getJavaExtDirs());
803         } else {
804             assertNotNull(SystemProperties.getJavaExtDirs());
805         }
806     }
807 
808     @Test
809     void testGetJavaHome() {
810         assertNotNull(SystemProperties.getJavaHome());
811     }
812 
813     @Test
814     void testGetJavaIoTmpdir() {
815         assertNotNull(SystemProperties.getJavaIoTmpdir());
816     }
817 
818     @Test
819     void testGetJavaLibraryPath() {
820         assertNotNull(SystemProperties.getJavaLibraryPath());
821     }
822 
823     @Test
824     void testGetJavaLocaleProviders() {
825         assumeTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_9));
826         // default is null
827         assertNull(SystemProperties.getJavaLocaleProviders(), SystemProperties.getJavaVersion());
828     }
829 
830     @Test
831     void testGetJavaRuntimeName() {
832         assertNotNull(SystemProperties.getJavaRuntimeName());
833     }
834 
835     @Test
836     void testGetJavaRuntimeVersion() {
837         assertNotNull(SystemProperties.getJavaRuntimeVersion());
838     }
839 
840     @Test
841     void testGetJavaSpecificationName() {
842         assertNotNull(SystemProperties.getJavaSpecificationName());
843     }
844 
845     @Test
846     void testGetJavaSpecificationVendor() {
847         assertNotNull(SystemProperties.getJavaSpecificationVendor());
848     }
849 
850     @Test
851     void testGetJavaSpecificationVersion() {
852         assertNotNull(SystemProperties.getJavaSpecificationVersion());
853     }
854 
855     @Test
856     void testGetJavaSpecificationVersionSupplier() {
857         assertNotNull(SystemProperties.getJavaSpecificationVersion("99.0"));
858     }
859 
860     @Test
861     void testGetJavaUtilPrefsPreferencesFactory() {
862         assertNull(SystemProperties.getJavaUtilPrefsPreferencesFactory());
863     }
864 
865     @Test
866     void testGetJavaVendor() {
867         assertNotNull(SystemProperties.getJavaVendor());
868     }
869 
870     @Test
871     void testGetJavaVendorUrl() {
872         assertNotNull(SystemProperties.getJavaVendorUrl());
873     }
874 
875     @Test
876     void testGetJavaVersion() {
877         assertNotNull(SystemProperties.getJavaVersion());
878     }
879 
880     @Test
881     void testGetJavaVmInfo() {
882         assertNotNull(SystemProperties.getJavaVmInfo());
883     }
884 
885     @Test
886     void testGetJavaVmName() {
887         assertNotNull(SystemProperties.getJavaVmName());
888     }
889 
890     @Test
891     void testGetJavaVmSpecificationName() {
892         assertNotNull(SystemProperties.getJavaVmSpecificationName());
893     }
894 
895     @Test
896     void testGetJavaVmSpecificationVendor() {
897         assertNotNull(SystemProperties.getJavaVmSpecificationVendor());
898     }
899 
900     @Test
901     void testGetJavaVmSpecificationVersion() {
902         assertNotNull(SystemProperties.getJavaVmSpecificationVersion());
903     }
904 
905     @Test
906     void testGetJavaVmVendor() {
907         assertNotNull(SystemProperties.getJavaVmVendor());
908     }
909 
910     @Test
911     void testGetJavaVmVersion() {
912         assertNotNull(SystemProperties.getJavaVmVersion());
913     }
914 
915     @Test
916     void testGetLineSeparator() {
917         assertNotNull(SystemProperties.getLineSeparator());
918         assertNotNull(SystemProperties.getLineSeparator(null));
919         assertNotNull(SystemProperties.getLineSeparator(() -> ""));
920         assertNotNull(SystemProperties.getLineSeparator(() -> "\n"));
921         assertNotNull(SystemProperties.getLineSeparator(() -> null));
922         assertNotNull(SystemProperties.getLineSeparator(null));
923     }
924 
925     @Test
926     void testGetLong() {
927         final String key = RandomStringUtils.insecure().next(10);
928         final String absentKey = RandomStringUtils.insecure().next(10);
929         assertNull(System.getProperty(absentKey));
930         try {
931             System.setProperty(key, Long.toString(Long.MAX_VALUE));
932             assertEquals(Long.MAX_VALUE, SystemProperties.getLong(key, () -> 0));
933             assertEquals(Long.MAX_VALUE, SystemProperties.getLong(absentKey, () -> Long.MAX_VALUE));
934             assertEquals(0, SystemProperties.getLong(absentKey, () -> 0));
935             assertEquals(0, SystemProperties.getLong(absentKey, null));
936         } finally {
937             System.clearProperty(key);
938         }
939     }
940 
941     @Test
942     void testGetLongClass() {
943         final String key = RandomStringUtils.insecure().next(10);
944         final String absentKey = RandomStringUtils.insecure().next(10);
945         final String keyFull = SIMPLE_NAME + "." + key;
946         final String absentKeyFull = SIMPLE_NAME + "." + absentKey;
947         assertNull(System.getProperty(absentKeyFull));
948         try {
949             System.setProperty(keyFull, Long.toString(Long.MAX_VALUE));
950             assertEquals(Long.MAX_VALUE, SystemProperties.getLong(SystemPropertiesTest.class, key, () -> 0));
951             assertEquals(Long.MAX_VALUE, SystemProperties.getLong(SystemPropertiesTest.class, absentKey, () -> Long.MAX_VALUE));
952             assertEquals(0, SystemProperties.getLong(SystemPropertiesTest.class, absentKey, () -> 0));
953             assertEquals(1, SystemProperties.getLong(SystemPropertiesTest.class, absentKey, () -> 1));
954         } finally {
955             System.clearProperty(keyFull);
956         }
957     }
958 
959     @Test
960     void testGetOsArch() {
961         assertNotNull(SystemProperties.getOsArch());
962     }
963 
964     @Test
965     void testGetOsName() {
966         assertNotNull(SystemProperties.getOsName());
967     }
968 
969     @Test
970     void testGetOsVersion() {
971         assertNotNull(SystemProperties.getOsVersion());
972     }
973 
974     @Test
975     void testGetPath() {
976         assertNull(SystemProperties.getPath(null, null));
977         assertNull(SystemProperties.getPath(null, () -> null));
978         assertNull(SystemProperties.getPath(StringUtils.EMPTY, null));
979         assertEquals(Paths.get("value1"), SystemProperties.getPath(KEY_SPACE_1, null));
980         assertEquals(Paths.get("value2"), SystemProperties.getPath(KEY_TAB_1, null));
981         assertEquals(Paths.get("value1"), SystemProperties.getPath(null, () -> Paths.get("value1")));
982     }
983 
984     @Test
985     void testGetPathSeparator() {
986         assertNotNull(SystemProperties.getPathSeparator());
987     }
988 
989     @Test
990     void testGetProperty() {
991         assertNull(SystemProperties.getProperty(null));
992         assertNull(SystemProperties.getProperty(StringUtils.EMPTY));
993         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1));
994         assertEquals("value2", SystemProperties.getProperty(KEY_TAB_1));
995     }
996 
997     @Test
998     void testGetPropertyStringString() {
999         assertNull(SystemProperties.getProperty(null, StringUtils.NULL));
1000         assertNull(SystemProperties.getProperty(StringUtils.EMPTY, StringUtils.NULL));
1001         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1, StringUtils.NULL));
1002         assertEquals("value2", SystemProperties.getProperty("\t", StringUtils.NULL));
1003         assertEquals("x", SystemProperties.getProperty(null, "x"));
1004         assertEquals("x", SystemProperties.getProperty(StringUtils.EMPTY, "x"));
1005         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1, "v"));
1006         assertEquals("value2", SystemProperties.getProperty("\t", "v"));
1007     }
1008 
1009     @Test
1010     void testGetPropertyStringSupplier() {
1011         assertNull(SystemProperties.getProperty(null, (Supplier<String>) null));
1012         assertNull(SystemProperties.getProperty(StringUtils.EMPTY, (Supplier<String>) null));
1013         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1, (Supplier<String>) null));
1014         assertEquals("value2", SystemProperties.getProperty("\t", (Supplier<String>) null));
1015         assertEquals("x", SystemProperties.getProperty(null, () -> "x"));
1016         assertEquals("x", SystemProperties.getProperty(StringUtils.EMPTY, () -> "x"));
1017         assertEquals("value1", SystemProperties.getProperty(KEY_SPACE_1, () -> "v"));
1018         assertEquals("value2", SystemProperties.getProperty("\t", () -> "v"));
1019     }
1020 
1021     @Test
1022     void testGetUserCountry() {
1023         assertDoesNotThrow(SystemProperties::getUserCountry);
1024     }
1025 
1026     @Test
1027     void testGetUserDir() {
1028         assertNotNull(SystemProperties.getUserDir());
1029     }
1030 
1031     @Test
1032     void testGetUserHome() {
1033         assertNotNull(SystemProperties.getUserHome());
1034     }
1035 
1036     @Test
1037     void testGetUserLanguage() {
1038         assertNotNull(SystemProperties.getUserLanguage());
1039     }
1040 
1041     @Test
1042     void testGetUserName() {
1043         assertNotNull(SystemProperties.getUserName());
1044         assertNotNull(SystemProperties.getUserName(""));
1045         assertNotNull(SystemProperties.getUserName("User"));
1046         assertNotNull(SystemProperties.getUserName(null));
1047     }
1048 
1049     @Test
1050     void testGetUserTimezone() {
1051         assertDoesNotThrow(SystemProperties::getUserTimezone);
1052     }
1053 
1054     @ParameterizedTest
1055     @ValueSource(strings = { KEY_SPACE_1, KEY_TAB_1 })
1056     void testIsPropertySet(final String property) {
1057         assertTrue(SystemProperties.isPropertySet(property));
1058     }
1059 
1060     @Test
1061     void testIsPropertySetEdges() {
1062         assertFalse(SystemProperties.isPropertySet(StringUtils.NULL));
1063         assertFalse(SystemProperties.isPropertySet(StringUtils.EMPTY));
1064     }
1065 
1066 }