View Javadoc
1   package com.atlassian.plugin.elements;
2   
3   import com.google.common.collect.ImmutableMap;
4   import org.junit.Test;
5   
6   import java.util.Collections;
7   import java.util.HashMap;
8   import java.util.Map;
9   
10  import static org.junit.Assert.assertEquals;
11  import static org.junit.Assert.assertNull;
12  
13  public class ResourceLocationTest {
14      @Test
15      public void paramsAreCopied() {
16          Map<String, String> params = new HashMap<>();
17          params.put("a", "original");
18  
19          ResourceLocation rl = new ResourceLocation("", "", "", "", "", params);
20          params.put("a", "modified");
21  
22          assertEquals("original", rl.getParams().get("a"));
23      }
24  
25      @Test
26      public void paramsAreImmutable() {
27          Map<String, String> params = new HashMap<>();
28          params.put("a", "original");
29  
30          ResourceLocation rl = new ResourceLocation("", "", "", "", "", params);
31  
32          try {
33              rl.getParams().put("a", "modified");
34          } catch (UnsupportedOperationException e) {
35              // Okay
36          }
37  
38          assertEquals("original", rl.getParams().get("a"));
39      }
40  
41      @Test(expected = NullPointerException.class)
42      public void constructionWithNullParamsFails() {
43          new ResourceLocation("", "", "", "", "", null);
44      }
45  
46      @Test
47      public void constructionWithNullValuesSucceeds() {
48          Map<String, String> params = Collections.singletonMap("key", null);
49  
50          ResourceLocation rl = new ResourceLocation("", "", "", "", "", params);
51          assertNull(rl.getParameter("key"));
52      }
53  
54      @Test
55      public void constructionWithNullValuesOmitsParam() {
56          Map<String, String> params = Collections.singletonMap("key", null);
57  
58          ResourceLocation rl = new ResourceLocation("", "", "", "", "", params);
59          assertEquals(Collections.emptyMap(), rl.getParams());
60      }
61  
62      @Test
63      public void constructionWithMixedValuesIncludesNonNullParam() {
64          Map<String, String> params = new HashMap<>();
65          params.put("null", null);
66          params.put("notnull", "value");
67  
68          ResourceLocation rl = new ResourceLocation("", "", "", "", "", params);
69          assertEquals(ImmutableMap.of("notnull", "value"), rl.getParams());
70      }
71  
72      @Test
73      public void constructionWithNullKeyOmitsParam() {
74          Map<String, String> params = Collections.singletonMap(null, "value");
75  
76          ResourceLocation rl = new ResourceLocation("", "", "", "", "", params);
77          assertEquals(Collections.emptyMap(), rl.getParams());
78      }
79  }