Parse options from environment
[rhynodge.git] / src / test / java / net / pterodactylus / util / envopt / SystemEnvironmentTest.java
1 package net.pterodactylus.util.envopt;
2
3 import java.util.Map;
4 import java.util.Map.Entry;
5 import java.util.Optional;
6
7 import org.hamcrest.MatcherAssert;
8 import org.hamcrest.Matchers;
9 import org.junit.Test;
10
11 /**
12  * Unit test for {@link SystemEnvironment}.
13  *
14  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
15  */
16 public class SystemEnvironmentTest {
17
18         private final SystemEnvironment environment = new SystemEnvironment();
19
20         @Test
21         public void accessorCanAccessTheSystemEnvironment() {
22                 Map<String, String> systemEnvironment = System.getenv();
23                 MatcherAssert.assertThat(systemEnvironment.entrySet(), Matchers.not(Matchers.empty()));
24                 for (Entry<String, String> environmentEntry : systemEnvironment.entrySet()) {
25                         MatcherAssert.assertThat(environment.getValue(environmentEntry.getKey()), Matchers.is(
26                                         Optional.of(environmentEntry.getValue())));
27                 }
28         }
29
30         @Test
31         public void accessorRecognizesNonExistingVariables() {
32                 String randomName = generateRandomName();
33                 MatcherAssert.assertThat(environment.getValue(randomName), Matchers.is(Optional.empty()));
34         }
35
36         private String generateRandomName() {
37                 StringBuilder stringBuilder = new StringBuilder();
38                 do {
39                         stringBuilder.setLength(0);
40                         for (int i = 0; i < 10; i++) {
41                                 stringBuilder.append((char) ('A' + (Math.random() * 26)));
42                         }
43                 } while (System.getenv(stringBuilder.toString()) != null);
44                 return stringBuilder.toString();
45         }
46
47 }