source: josm/trunk/test/unit/org/openstreetmap/josm/data/preferences/StrokePropertyTest.java @ 10874

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

fix #13412 - Clean up DrawAction, add StrokeProperty (patch by michael2402) - gsoc-core

  • Property svn:eol-style set to native
File size: 3.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.preferences;
3
4import static org.junit.Assert.assertArrayEquals;
5import static org.junit.Assert.assertEquals;
6
7import java.awt.BasicStroke;
8
9import org.junit.Rule;
10import org.junit.Test;
11import org.openstreetmap.josm.Main;
12import org.openstreetmap.josm.testutils.JOSMTestRules;
13
14import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
15
16/**
17 * Test {@link StrokeProperty}
18 * @author Michael Zangl
19 */
20public class StrokePropertyTest {
21    /**
22     * This is a preference test
23     */
24    @Rule
25    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
26    public JOSMTestRules test = new JOSMTestRules().preferences();
27
28    /**
29     * Test {@link StrokeProperty#get()}
30     */
31    @Test
32    public void testGetValue() {
33        StrokeProperty property = new StrokeProperty("x", "1");
34
35        Main.pref.put("x", "11");
36        BasicStroke bs = property.get();
37        assertWide(bs);
38        assertEquals(11, bs.getLineWidth(), 1e-10);
39        assertEquals(null, bs.getDashArray());
40
41        Main.pref.put("x", ".5");
42        bs = property.get();
43        assertThin(bs);
44        assertEquals(.5, bs.getLineWidth(), 1e-10);
45        assertEquals(null, bs.getDashArray());
46
47        Main.pref.put("x", "2 1");
48        bs = property.get();
49        assertWide(bs);
50        assertEquals(2, bs.getLineWidth(), 1e-10);
51        assertArrayEquals(new float[] {1}, bs.getDashArray(), 1e-10f);
52
53        Main.pref.put("x", "2 0.1 1 10");
54        bs = property.get();
55        assertWide(bs);
56        assertEquals(2, bs.getLineWidth(), 1e-10);
57        assertArrayEquals(new float[] {0.1f, 1, 10}, bs.getDashArray(), 1e-10f);
58
59        Main.pref.put("x", "x");
60        bs = property.get();
61        assertThin(bs);
62        assertEquals(1, bs.getLineWidth(), 1e-10);
63        assertEquals(null, bs.getDashArray());
64
65        // ignore dashes
66        Main.pref.put("x", "11 0 0 0.0001");
67        bs = property.get();
68        assertWide(bs);
69        assertEquals(11, bs.getLineWidth(), 1e-10);
70        assertEquals(null, bs.getDashArray());
71    }
72
73    /**
74     * Test {@link StrokeProperty#put(BasicStroke)}
75     */
76    @Test
77    public void testPutValue() {
78        StrokeProperty property = new StrokeProperty("x", new BasicStroke(12));
79        BasicStroke bs = property.get();
80
81        assertWide(bs);
82        assertEquals(12, bs.getLineWidth(), 1e-10);
83        assertEquals(null, bs.getDashArray());
84
85        property.put(new BasicStroke(2, 0, 0, 1, new float[] {0.1f, 1, 10}, 0));
86        bs = property.get();
87        assertWide(bs);
88        assertEquals(2, bs.getLineWidth(), 1e-10);
89        assertArrayEquals(new float[] {0.1f, 1, 10}, bs.getDashArray(), 1e-10f);
90    }
91
92    private static void assertThin(BasicStroke bs) {
93        assertBase(bs);
94        assertEquals(BasicStroke.CAP_BUTT, bs.getEndCap());
95        assertEquals(BasicStroke.JOIN_MITER, bs.getLineJoin());
96    }
97
98    private static void assertWide(BasicStroke bs) {
99        assertBase(bs);
100        assertEquals(BasicStroke.CAP_ROUND, bs.getEndCap());
101        assertEquals(BasicStroke.JOIN_ROUND, bs.getLineJoin());
102    }
103
104    private static void assertBase(BasicStroke bs) {
105        assertEquals(10, bs.getMiterLimit(), 1e-10);
106        assertEquals(0, bs.getDashPhase(), 1e-10);
107    }
108}
Note: See TracBrowser for help on using the repository browser.