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
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 }