source: josm/trunk/test/unit/org/openstreetmap/josm/data/imagery/ImageryInfoTest.java@ 10735

Last change on this file since 10735 was 10735, checked in by Don-vip, 8 years ago

fix #13264 - more lenient TMS url regex to allow - zoom separator

File size: 3.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.imagery;
3
4import static org.junit.Assert.assertEquals;
5
6import java.util.Arrays;
7import java.util.Collections;
8import java.util.HashSet;
9import java.util.Map;
10import java.util.Set;
11
12import org.junit.BeforeClass;
13import org.junit.Test;
14import org.openstreetmap.josm.JOSMFixture;
15import org.openstreetmap.josm.data.Preferences;
16import org.openstreetmap.josm.tools.MultiMap;
17
18/**
19 *
20 * Unit tests for class {@link ImageryInfo}.
21 *
22 */
23public class ImageryInfoTest {
24
25 /**
26 * Setup tests
27 */
28 @BeforeClass
29 public static void setUp() {
30 JOSMFixture.createUnitTestFixture().init();
31 }
32
33 /**
34 * Test if extended URL is returned properly
35 */
36 @Test
37 public void testGetExtendedUrl() {
38 ImageryInfo testImageryTMS = new ImageryInfo("test imagery", "http://localhost", "tms", null, null);
39 testImageryTMS.setDefaultMinZoom(16);
40 testImageryTMS.setDefaultMaxZoom(23);
41 assertEquals("tms[16,23]:http://localhost", testImageryTMS.getExtendedUrl());
42 }
43
44 /**
45 * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/13264">Bug #13264</a>.
46 */
47 @Test
48 public void testConstruct13264() {
49 final ImageryInfo info = new ImageryInfo("test imagery", "tms[16-23]:http://localhost");
50 assertEquals(ImageryInfo.ImageryType.TMS, info.getImageryType());
51 assertEquals(16, info.getMinZoom());
52 assertEquals(23, info.getMaxZoom());
53 assertEquals("http://localhost", info.getUrl());
54 }
55
56 /**
57 * Tests the {@linkplain Preferences#serializeStruct(Object, Class) serialization} of {@link ImageryInfo.ImageryPreferenceEntry}
58 */
59 @Test
60 public void testSerializeStruct() {
61 final ImageryInfo.ImageryPreferenceEntry info = new ImageryInfo.ImageryPreferenceEntry();
62 info.noTileHeaders = new MultiMap<>();
63 info.noTileHeaders.put("ETag", "foo");
64 info.noTileHeaders.put("ETag", "bar");
65 final Map<String, String> map = Preferences.serializeStruct(info, ImageryInfo.ImageryPreferenceEntry.class);
66 assertEquals("{noTileHeaders={\"ETag\":[\"foo\",\"bar\"]}}", map.toString());
67 }
68
69 /**
70 * Tests the {@linkplain Preferences#deserializeStruct(Map, Class)} deserialization} of {@link ImageryInfo.ImageryPreferenceEntry}
71 */
72 @Test
73 public void testDeserializeStruct() {
74 final ImageryInfo.ImageryPreferenceEntry info = Preferences.deserializeStruct(
75 Collections.singletonMap("noTileHeaders", "{\"ETag\":[\"foo\",\"bar\"]}"), ImageryInfo.ImageryPreferenceEntry.class);
76 MultiMap<String, String> expect = new MultiMap<>();
77 expect.put("ETag", "foo");
78 expect.put("ETag", "bar");
79 assertEquals(info.noTileHeaders, expect);
80 final Set<String> eTag = info.noTileHeaders.get("ETag");
81 assertEquals(eTag, new HashSet<>(Arrays.asList("foo", "bar")));
82 }
83
84 /**
85 * Tests the {@linkplain Preferences#deserializeStruct(Map, Class)} deserialization} of legacy {@link ImageryInfo.ImageryPreferenceEntry}
86 */
87 @Test
88 public void testDeserializeStructTicket12474() {
89 final ImageryInfo.ImageryPreferenceEntry info = Preferences.deserializeStruct(
90 Collections.singletonMap("noTileHeaders", "{\"ETag\":\"foo-and-bar\"}"), ImageryInfo.ImageryPreferenceEntry.class);
91 final Set<String> eTag = info.noTileHeaders.get("ETag");
92 assertEquals(eTag, Collections.singleton("foo-and-bar"));
93 }
94}
Note: See TracBrowser for help on using the repository browser.