Gridarta Editor
PluginParameterCodecTest.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.plugin.parameter;
21 
22 import java.io.ByteArrayOutputStream;
23 import java.io.File;
24 import java.io.IOException;
25 import java.io.StringReader;
26 import java.nio.charset.StandardCharsets;
37 import net.sf.gridarta.utils.Size2D;
38 import nu.xom.Builder;
39 import nu.xom.Document;
40 import nu.xom.Element;
41 import nu.xom.ParsingException;
42 import nu.xom.Serializer;
43 import org.jetbrains.annotations.NotNull;
44 import org.junit.Assert;
45 import org.junit.Ignore;
46 import org.junit.Test;
47 import org.xml.sax.SAXException;
48 import org.xml.sax.XMLReader;
49 import org.xml.sax.helpers.XMLReaderFactory;
50 
56 
61  @Test
62  public void testArchetypeToXml1() throws IOException {
63  final TestMapModelCreator mapModelCreator = new TestMapModelCreator(false);
65  final StringBuilder sb = new StringBuilder();
66  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
67  sb.append("<parameter>\r\n");
68  sb.append(" <name>[name]</name>\r\n");
69  sb.append(" <description>[description]</description>\r\n");
70  sb.append(" <type>net.sf.gridarta.model.archetype.Archetype</type>\r\n");
71  sb.append(" <value/>\r\n");
72  sb.append("</parameter>\r\n");
73  Assert.assertEquals(sb.toString(), toXML(parameter));
74  }
75 
80  @Test
81  public void testArchetypeToXml2() throws IOException {
82  final TestMapModelCreator mapModelCreator = new TestMapModelCreator(false);
84  parameter.setStringValue("undefined_archetype");
85  final StringBuilder sb = new StringBuilder();
86  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
87  sb.append("<parameter>\r\n");
88  sb.append(" <name>[name]</name>\r\n");
89  sb.append(" <description>[description]</description>\r\n");
90  sb.append(" <type>net.sf.gridarta.model.archetype.Archetype</type>\r\n");
91  sb.append(" <value>undefined_archetype</value>\r\n");
92  sb.append("</parameter>\r\n");
93  Assert.assertEquals(sb.toString(), toXML(parameter));
94  }
95 
100  @Test
101  public void testArchetypeToXml3() throws IOException {
102  final TestMapModelCreator mapModelCreator = new TestMapModelCreator(false);
103  final TestArchetype archetype = mapModelCreator.getArchetype("existing_archetype");
105  parameter.setStringValue(archetype.getArchetypeName());
106  final StringBuilder sb = new StringBuilder();
107  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
108  sb.append("<parameter>\r\n");
109  sb.append(" <name>[name]</name>\r\n");
110  sb.append(" <description>[description]</description>\r\n");
111  sb.append(" <type>net.sf.gridarta.model.archetype.Archetype</type>\r\n");
112  sb.append(" <value>existing_archetype</value>\r\n");
113  sb.append("</parameter>\r\n");
114  Assert.assertEquals(sb.toString(), toXML(parameter));
115  }
116 
121  @Test
122  public void testBooleanToXml1() throws IOException {
124  parameter.setName("Name");
125  parameter.setDescription("Description");
126  final StringBuilder sb = new StringBuilder();
127  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
128  sb.append("<parameter>\r\n");
129  sb.append(" <name>Name</name>\r\n");
130  sb.append(" <description>Description</description>\r\n");
131  sb.append(" <type>java.lang.Boolean</type>\r\n");
132  sb.append(" <value>false</value>\r\n");
133  sb.append(" <trueText>Yes</trueText>\r\n");
134  sb.append(" <falseText>No</falseText>\r\n");
135  sb.append("</parameter>\r\n");
136  Assert.assertEquals(sb.toString(), toXML(parameter));
137  }
138 
143  @Test
144  public void testBooleanToXml2() throws IOException {
146  parameter.setStringValue("true");
147  parameter.setTrueText("true-text");
148  parameter.setFalseText("false-text");
149  final StringBuilder sb = new StringBuilder();
150  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
151  sb.append("<parameter>\r\n");
152  sb.append(" <name>[name]</name>\r\n");
153  sb.append(" <description>[description]</description>\r\n");
154  sb.append(" <type>java.lang.Boolean</type>\r\n");
155  sb.append(" <value>true</value>\r\n");
156  sb.append(" <trueText>true-text</trueText>\r\n");
157  sb.append(" <falseText>false-text</falseText>\r\n");
158  sb.append("</parameter>\r\n");
159  Assert.assertEquals(sb.toString(), toXML(parameter));
160  }
161 
166  @Test
167  public void testDoubleToXml1() throws IOException {
169  parameter.setName("Name");
170  parameter.setDescription("Description");
171  final StringBuilder sb = new StringBuilder();
172  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
173  sb.append("<parameter>\r\n");
174  sb.append(" <name>Name</name>\r\n");
175  sb.append(" <description>Description</description>\r\n");
176  sb.append(" <type>java.lang.Double</type>\r\n");
177  sb.append(" <value>0.0</value>\r\n");
178  sb.append(" <minimum>0.0</minimum>\r\n");
179  sb.append(" <maximum>1.0</maximum>\r\n");
180  sb.append("</parameter>\r\n");
181  Assert.assertEquals(sb.toString(), toXML(parameter));
182  }
183 
188  @Test
189  public void testDoubleToXml2() throws IOException {
191  parameter.setMin(-123.456);
192  parameter.setMax(234.0);
193  parameter.setValue(12.34);
194  final StringBuilder sb = new StringBuilder();
195  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
196  sb.append("<parameter>\r\n");
197  sb.append(" <name>[name]</name>\r\n");
198  sb.append(" <description>[description]</description>\r\n");
199  sb.append(" <type>java.lang.Double</type>\r\n");
200  sb.append(" <value>12.34</value>\r\n");
201  sb.append(" <minimum>-123.456</minimum>\r\n");
202  sb.append(" <maximum>234.0</maximum>\r\n");
203  sb.append("</parameter>\r\n");
204  Assert.assertEquals(sb.toString(), toXML(parameter));
205  }
206 
211  @Test
212  public void testIntegerToXml1() throws IOException {
214  parameter.setName("Name");
215  parameter.setDescription("Description");
216  final StringBuilder sb = new StringBuilder();
217  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
218  sb.append("<parameter>\r\n");
219  sb.append(" <name>Name</name>\r\n");
220  sb.append(" <description>Description</description>\r\n");
221  sb.append(" <type>java.lang.Integer</type>\r\n");
222  sb.append(" <value>0</value>\r\n");
223  sb.append(" <minimum>-2147483648</minimum>\r\n");
224  sb.append(" <maximum>2147483647</maximum>\r\n");
225  sb.append("</parameter>\r\n");
226  Assert.assertEquals(sb.toString(), toXML(parameter));
227  }
228 
233  @Test
234  public void testIntegerToXml2() throws IOException {
236  parameter.setMin(-123);
237  parameter.setMax(234);
238  parameter.setValue(2);
239  final StringBuilder sb = new StringBuilder();
240  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
241  sb.append("<parameter>\r\n");
242  sb.append(" <name>[name]</name>\r\n");
243  sb.append(" <description>[description]</description>\r\n");
244  sb.append(" <type>java.lang.Integer</type>\r\n");
245  sb.append(" <value>2</value>\r\n");
246  sb.append(" <minimum>-123</minimum>\r\n");
247  sb.append(" <maximum>234</maximum>\r\n");
248  sb.append("</parameter>\r\n");
249  Assert.assertEquals(sb.toString(), toXML(parameter));
250  }
251 
256  @Test
257  public void testMapToXml1() throws IOException {
258  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
259  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapParameter<>(mapControlCreator.getMapManager(), mapControlCreator.getPathManager());
260  parameter.setName("Name");
261  parameter.setDescription("Description");
262  final StringBuilder sb = new StringBuilder();
263  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
264  sb.append("<parameter>\r\n");
265  sb.append(" <name>Name</name>\r\n");
266  sb.append(" <description>Description</description>\r\n");
267  sb.append(" <type>net.sf.gridarta.model.mapcontrol.MapControl</type>\r\n");
268  sb.append(" <value/>\r\n");
269  sb.append("</parameter>\r\n");
270  Assert.assertEquals(sb.toString(), toXML(parameter));
271  }
272 
277  @Test
278  public void testMapToXml2() throws IOException {
279  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
280  final MapParameter<TestGameObject, TestMapArchObject, TestArchetype> parameter = new MapParameter<>(mapControlCreator.getMapManager(), mapControlCreator.getPathManager());
281  parameter.setValueToCurrent();
282  final StringBuilder sb = new StringBuilder();
283  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
284  sb.append("<parameter>\r\n");
285  sb.append(" <name>[name]</name>\r\n");
286  sb.append(" <description>[description]</description>\r\n");
287  sb.append(" <type>net.sf.gridarta.model.mapcontrol.MapControl</type>\r\n");
288  sb.append(" <value/>\r\n");
289  sb.append("</parameter>\r\n");
290  Assert.assertEquals(sb.toString(), toXML(parameter));
291  }
292 
297  @Test
298  public void testMapToXml3() throws IOException {
299  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
300  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapParameter<>(mapControlCreator.getMapManager(), mapControlCreator.getPathManager());
301  final File mapDir = new File("/tmp");
302  final String mapPath = "path/to/map";
303  mapControlCreator.newMapControl(mapControlCreator.getPathManager().getMapFile(new File(mapDir, mapPath)), "map name", new Size2D(13, 15));
304  parameter.setStringValue("/" + mapPath);
305  final StringBuilder sb = new StringBuilder();
306  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
307  sb.append("<parameter>\r\n");
308  sb.append(" <name>[name]</name>\r\n");
309  sb.append(" <description>[description]</description>\r\n");
310  sb.append(" <type>net.sf.gridarta.model.mapcontrol.MapControl</type>\r\n");
311  sb.append(" <value>/path/to/map</value>\r\n");
312  sb.append("</parameter>\r\n");
313  Assert.assertEquals(sb.toString(), toXML(parameter));
314  }
315 
320  @Test
321  public void testMapPathToXml1() throws IOException {
322  final ProjectSettings projectSettings = new TestProjectSettings();
323  final PathManager pathManager = new PathManager(projectSettings);
324  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapPathParameter<>(pathManager, projectSettings);
325  parameter.setName("Name");
326  parameter.setDescription("Description");
327  final StringBuilder sb = new StringBuilder();
328  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
329  sb.append("<parameter>\r\n");
330  sb.append(" <name>Name</name>\r\n");
331  sb.append(" <description>Description</description>\r\n");
332  sb.append(" <type>MapPathParameter</type>\r\n");
333  sb.append(" <value/>\r\n");
334  sb.append("</parameter>\r\n");
335  Assert.assertEquals(sb.toString(), toXML(parameter));
336  }
337 
342  @Test
343  public void testMapPathToXml2() throws IOException {
344  final ProjectSettings projectSettings = new TestProjectSettings();
345  final PathManager pathManager = new PathManager(projectSettings);
346  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = new MapPathParameter<>(pathManager, projectSettings);
347  parameter.setStringValue("/path");
348  final StringBuilder sb = new StringBuilder();
349  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
350  sb.append("<parameter>\r\n");
351  sb.append(" <name>[name]</name>\r\n");
352  sb.append(" <description>[description]</description>\r\n");
353  sb.append(" <type>MapPathParameter</type>\r\n");
354  sb.append(" <value>/path</value>\r\n");
355  sb.append("</parameter>\r\n");
356  Assert.assertEquals(sb.toString(), toXML(parameter));
357  }
358 
363  @Test
364  public void testStringToXml1() throws IOException {
366  parameter.setName("Name");
367  parameter.setDescription("Description");
368  final StringBuilder sb = new StringBuilder();
369  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
370  sb.append("<parameter>\r\n");
371  sb.append(" <name>Name</name>\r\n");
372  sb.append(" <description>Description</description>\r\n");
373  sb.append(" <type>java.lang.String</type>\r\n");
374  sb.append(" <value/>\r\n");
375  sb.append("</parameter>\r\n");
376  Assert.assertEquals(sb.toString(), toXML(parameter));
377  }
378 
383  @Test
384  public void testStringToXml2() throws IOException {
386  parameter.setStringValue("string value");
387  final StringBuilder sb = new StringBuilder();
388  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
389  sb.append("<parameter>\r\n");
390  sb.append(" <name>[name]</name>\r\n");
391  sb.append(" <description>[description]</description>\r\n");
392  sb.append(" <type>java.lang.String</type>\r\n");
393  sb.append(" <value>string value</value>\r\n");
394  sb.append("</parameter>\r\n");
395  Assert.assertEquals(sb.toString(), toXML(parameter));
396  }
397 
405  @Test
406  public void testArchetypeFromXml1() throws IOException, NoSuchParameterException, ParsingException, SAXException {
407  final StringBuilder sb = new StringBuilder();
408  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
409  sb.append("<parameter>\r\n");
410  sb.append(" <name>Name</name>\r\n");
411  sb.append(" <description>Description</description>\r\n");
412  sb.append(" <type>net.sf.gridarta.model.archetype.Archetype</type>\r\n");
413  sb.append(" <value/>\r\n");
414  sb.append("</parameter>\r\n");
415  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
416  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
417  Assert.assertTrue(parameter instanceof ArchetypeParameter);
418  Assert.assertEquals("Name", parameter.getName());
419  Assert.assertEquals("net.sf.gridarta.model.archetype.Archetype", parameter.getParameterType());
420  Assert.assertEquals("Description", parameter.getDescription());
421  Assert.assertNull(parameter.getValueOrNull());
422  Assert.assertEquals("", parameter.getStringValue());
423  }
424 
432  @Test
433  public void testArchetypeFromXml2() throws IOException, NoSuchParameterException, ParsingException, SAXException {
434  final StringBuilder sb = new StringBuilder();
435  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
436  sb.append("<parameter>\r\n");
437  sb.append(" <name>Name</name>\r\n");
438  sb.append(" <description>Description</description>\r\n");
439  sb.append(" <type>net.sf.gridarta.model.archetype.Archetype</type>\r\n");
440  sb.append(" <value>undefined_archetype</value>\r\n");
441  sb.append("</parameter>\r\n");
442  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
443  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
444  Assert.assertTrue(parameter instanceof ArchetypeParameter);
445  Assert.assertEquals("Name", parameter.getName());
446  Assert.assertEquals("net.sf.gridarta.model.archetype.Archetype", parameter.getParameterType());
447  Assert.assertEquals("Description", parameter.getDescription());
448  Assert.assertNull(parameter.getValueOrNull());
449  Assert.assertEquals("undefined_archetype", parameter.getStringValue());
450  }
451 
459  @Test
460  public void testArchetypeFromXml3() throws IOException, NoSuchParameterException, ParsingException, SAXException {
461  final StringBuilder sb = new StringBuilder();
462  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
463  sb.append("<parameter>\r\n");
464  sb.append(" <name>Name</name>\r\n");
465  sb.append(" <description>Description</description>\r\n");
466  sb.append(" <type>net.sf.gridarta.model.archetype.Archetype</type>\r\n");
467  sb.append(" <value>existing_archetype</value>\r\n");
468  sb.append("</parameter>\r\n");
469  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
470  final TestArchetype archetype = mapControlCreator.getMapModelCreator().getArchetype("existing_archetype");
471  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
472  Assert.assertTrue(parameter instanceof ArchetypeParameter);
473  Assert.assertEquals("Name", parameter.getName());
474  Assert.assertEquals("net.sf.gridarta.model.archetype.Archetype", parameter.getParameterType());
475  Assert.assertEquals("Description", parameter.getDescription());
476  Assert.assertSame(archetype, parameter.getValueOrNull());
477  Assert.assertEquals("existing_archetype", parameter.getStringValue());
478  }
479 
487  @Test
488  public void testBooleanFromXml1() throws IOException, NoSuchParameterException, ParsingException, SAXException {
489  final StringBuilder sb = new StringBuilder();
490  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
491  sb.append("<parameter>\r\n");
492  sb.append(" <name>Name</name>\r\n");
493  sb.append(" <description>Description</description>\r\n");
494  sb.append(" <type>java.lang.Boolean</type>\r\n");
495  sb.append(" <value/>\r\n");
496  sb.append(" <trueText>Yes</trueText>\r\n");
497  sb.append(" <falseText>No</falseText>\r\n");
498  sb.append("</parameter>\r\n");
499  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
500  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
501  Assert.assertTrue(parameter instanceof BooleanParameter);
502  final BooleanParameter<?, ?, ?> booleanParameter = (BooleanParameter<?, ?, ?>) parameter;
503  Assert.assertEquals("Name", parameter.getName());
504  Assert.assertEquals("java.lang.Boolean", parameter.getParameterType());
505  Assert.assertEquals("Description", parameter.getDescription());
506  Assert.assertSame(Boolean.FALSE, parameter.getValueOrNull());
507  Assert.assertEquals("No", booleanParameter.getFalseText());
508  Assert.assertEquals("Yes", booleanParameter.getTrueText());
509  }
510 
518  @Test
519  public void testBooleanFromXml2() throws IOException, NoSuchParameterException, ParsingException, SAXException {
520  final StringBuilder sb = new StringBuilder();
521  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
522  sb.append("<parameter>\r\n");
523  sb.append(" <name>Name</name>\r\n");
524  sb.append(" <description>Description</description>\r\n");
525  sb.append(" <type>java.lang.Boolean</type>\r\n");
526  sb.append(" <value>true</value>\r\n");
527  sb.append(" <trueText>true-text</trueText>\r\n");
528  sb.append(" <falseText>false-text</falseText>\r\n");
529  sb.append("</parameter>\r\n");
530  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
531  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
532  Assert.assertTrue(parameter instanceof BooleanParameter);
533  final BooleanParameter<?, ?, ?> booleanParameter = (BooleanParameter<?, ?, ?>) parameter;
534  Assert.assertEquals("Name", parameter.getName());
535  Assert.assertEquals("java.lang.Boolean", parameter.getParameterType());
536  Assert.assertEquals("Description", parameter.getDescription());
537  Assert.assertSame(Boolean.TRUE, parameter.getValueOrNull());
538  Assert.assertEquals("false-text", booleanParameter.getFalseText());
539  Assert.assertEquals("true-text", booleanParameter.getTrueText());
540  }
541 
549  @Test
550  public void testDoubleFromXml1() throws IOException, NoSuchParameterException, ParsingException, SAXException {
551  final StringBuilder sb = new StringBuilder();
552  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
553  sb.append("<parameter>\r\n");
554  sb.append(" <name>Name</name>\r\n");
555  sb.append(" <description>Description</description>\r\n");
556  sb.append(" <type>java.lang.Double</type>\r\n");
557  sb.append(" <value/>\r\n");
558  sb.append(" <minimum>0.0</minimum>\r\n");
559  sb.append(" <maximum>1.0</maximum>\r\n");
560  sb.append("</parameter>\r\n");
561  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
562  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
563  Assert.assertTrue(parameter instanceof DoubleParameter);
564  final DoubleParameter<?, ?, ?> doubleParameter = (DoubleParameter<?, ?, ?>) parameter;
565  Assert.assertEquals("Name", parameter.getName());
566  Assert.assertEquals("java.lang.Double", parameter.getParameterType());
567  Assert.assertEquals("Description", parameter.getDescription());
568  Assert.assertEquals(0.0, parameter.getValueOrNull());
569  Assert.assertEquals(0.0, doubleParameter.getMin());
570  Assert.assertEquals(1.0, doubleParameter.getMax());
571  }
572 
580  @Test
581  public void testDoubleFromXml2() throws IOException, NoSuchParameterException, ParsingException, SAXException {
582  final StringBuilder sb = new StringBuilder();
583  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
584  sb.append("<parameter>\r\n");
585  sb.append(" <name>Name</name>\r\n");
586  sb.append(" <description>Description</description>\r\n");
587  sb.append(" <type>java.lang.Double</type>\r\n");
588  sb.append(" <value>12.34</value>\r\n");
589  sb.append(" <minimum>-123.456</minimum>\r\n");
590  sb.append(" <maximum>234.0</maximum>\r\n");
591  sb.append("</parameter>\r\n");
592  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
593  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
594  Assert.assertTrue(parameter instanceof DoubleParameter);
595  final DoubleParameter<?, ?, ?> doubleParameter = (DoubleParameter<?, ?, ?>) parameter;
596  Assert.assertEquals("Name", parameter.getName());
597  Assert.assertEquals("java.lang.Double", parameter.getParameterType());
598  Assert.assertEquals("Description", parameter.getDescription());
599  Assert.assertEquals(12.34, parameter.getValueOrNull());
600  Assert.assertEquals(-123.456, doubleParameter.getMin());
601  Assert.assertEquals(234.0, doubleParameter.getMax());
602  }
603 
611  @Test
612  public void testIntegerFromXml1() throws IOException, NoSuchParameterException, ParsingException, SAXException {
613  final StringBuilder sb = new StringBuilder();
614  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
615  sb.append("<parameter>\r\n");
616  sb.append(" <name>Name</name>\r\n");
617  sb.append(" <description>Description</description>\r\n");
618  sb.append(" <type>java.lang.Integer</type>\r\n");
619  sb.append(" <value/>\r\n");
620  sb.append(" <minimum>-2147483648</minimum>\r\n");
621  sb.append(" <maximum>2147483647</maximum>\r\n");
622  sb.append("</parameter>\r\n");
623  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
624  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
625  Assert.assertTrue(parameter instanceof IntegerParameter);
626  final IntegerParameter<?, ?, ?> integerParameter = (IntegerParameter<?, ?, ?>) parameter;
627  Assert.assertEquals("Name", parameter.getName());
628  Assert.assertEquals("java.lang.Integer", parameter.getParameterType());
629  Assert.assertEquals("Description", parameter.getDescription());
630  Assert.assertEquals(0, parameter.getValueOrNull());
631  Assert.assertEquals(-2147483648, integerParameter.getMin());
632  Assert.assertEquals(2147483647, integerParameter.getMax());
633  }
634 
642  @Test
643  public void testIntegerFromXml2() throws IOException, NoSuchParameterException, ParsingException, SAXException {
644  final StringBuilder sb = new StringBuilder();
645  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
646  sb.append("<parameter>\r\n");
647  sb.append(" <name>Name</name>\r\n");
648  sb.append(" <description>Description</description>\r\n");
649  sb.append(" <type>java.lang.Integer</type>\r\n");
650  sb.append(" <value>2</value>\r\n");
651  sb.append(" <minimum>-123</minimum>\r\n");
652  sb.append(" <maximum>234</maximum>\r\n");
653  sb.append("</parameter>\r\n");
654  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
655  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
656  Assert.assertTrue(parameter instanceof IntegerParameter);
657  final IntegerParameter<?, ?, ?> integerParameter = (IntegerParameter<?, ?, ?>) parameter;
658  Assert.assertEquals("Name", parameter.getName());
659  Assert.assertEquals("java.lang.Integer", parameter.getParameterType());
660  Assert.assertEquals("Description", parameter.getDescription());
661  Assert.assertEquals(2, parameter.getValueOrNull());
662  Assert.assertEquals(-123, integerParameter.getMin());
663  Assert.assertEquals(234, integerParameter.getMax());
664  }
665 
673  @Test
674  public void testMapFromXml1() throws IOException, NoSuchParameterException, ParsingException, SAXException {
675  final StringBuilder sb = new StringBuilder();
676  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
677  sb.append("<parameter>\r\n");
678  sb.append(" <name>Name</name>\r\n");
679  sb.append(" <description>Description</description>\r\n");
680  sb.append(" <type>net.sf.gridarta.model.mapcontrol.MapControl</type>\r\n");
681  sb.append(" <value/>\r\n");
682  sb.append("</parameter>\r\n");
683  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
684  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
685  Assert.assertTrue(parameter instanceof MapParameter);
686  //final MapParameter<?, ?, ?> mapParameter = (MapParameter<?, ?, ?>) parameter;
687  Assert.assertEquals("Name", parameter.getName());
688  Assert.assertEquals("net.sf.gridarta.model.mapcontrol.MapControl", parameter.getParameterType());
689  Assert.assertEquals("Description", parameter.getDescription());
690  Assert.assertSame(mapControlCreator.getMapManager().getCurrentMap(), parameter.getValueOrNull());
691  }
692 
700  @Ignore
701  @Test
702  public void testMapFromXml3() throws IOException, NoSuchParameterException, ParsingException, SAXException {
703  final StringBuilder sb = new StringBuilder();
704  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
705  sb.append("<parameter>\r\n");
706  sb.append(" <name>Name</name>\r\n");
707  sb.append(" <description>Description</description>\r\n");
708  sb.append(" <type>net.sf.gridarta.model.mapcontrol.MapControl</type>\r\n");
709  sb.append(" <value>/path/to/map</value>\r\n");
710  sb.append("</parameter>\r\n");
711  final TestMapControlCreator mapControlCreator = new TestMapControlCreator();
712  final File mapDir = new File("/tmp");
713  mapControlCreator.getMapManager().newMap(null, new TestMapArchObject(), mapControlCreator.getPathManager().getMapFile(new File(mapDir, "path/to/map")), false);
714  final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter = fromXML(mapControlCreator, sb.toString());
715  Assert.assertTrue(parameter instanceof MapParameter);
716  //noinspection TypeMayBeWeakened
717  final MapParameter<?, ?, ?> mapParameter = (MapParameter<?, ?, ?>) parameter;
718  Assert.assertEquals("Name", parameter.getName());
719  Assert.assertEquals("net.sf.gridarta.model.mapcontrol.MapControl", parameter.getParameterType());
720  Assert.assertEquals("Description", parameter.getDescription());
721  final MapControl<?, ?, ?> mapControl2 = mapParameter.getValueOrNull();
722  Assert.assertNotNull(mapControl2);
723  final MapFile mapFile = mapControl2.getMapModel().getMapFile();
724  Assert.assertNotNull(mapFile);
725  Assert.assertEquals("/path/to/map", mapFile.getMapPath().toString());
726  }
727 
734  @NotNull
735  private static String toXML(@NotNull final PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> parameter) throws IOException {
737  final Element element = codec.toXML(parameter);
738  final ByteArrayOutputStream stream = new ByteArrayOutputStream();
739  final Serializer serializer = new Serializer(stream, "UTF-8");
740  serializer.setIndent(2);
741  serializer.write(new Document(element));
742  return new String(stream.toByteArray(), StandardCharsets.UTF_8);
743  }
744 
755  @NotNull
756  private static PluginParameter<TestGameObject, TestMapArchObject, TestArchetype, ?> fromXML(@NotNull final TestMapControlCreator mapControlCreator, @NotNull final String string) throws IOException, NoSuchParameterException, ParsingException, SAXException {
757  final XMLReader xmlReader = XMLReaderFactory.createXMLReader();
758  final Builder builder = new Builder(xmlReader, false);
759  final Document document = builder.build(new StringReader(string));
760  final PluginParameterFactory<TestGameObject, TestMapArchObject, TestArchetype> parameterFactory = new PluginParameterFactory<>(mapControlCreator.getArchetypeSet(), mapControlCreator.getMapManager(), mapControlCreator.getProjectSettings(), mapControlCreator.getPathManager());
761  final Element element = document.getRootElement();
762  return parameterFactory.createParameter(element);
763  }
764 
765 }
int getMin()
Returns the minimal allowed value.
void testMapPathToXml2()
Checks that a MapPathParameter instance is correctly encoded.
A PluginParameter that holds a MapControl value.
void setValueToCurrent()
Selects the current map.
This class contains methods for converting relative map paths to absolute map paths and vice versa...
void testIntegerFromXml2()
Checks that an IntegerParameter is correctly decoded.
void testMapToXml2()
Checks that a MapParameter instance is correctly encoded.
void testStringToXml1()
Checks that a StringParameter instance is correctly encoded.
Reading and writing of maps, handling of paths.
void setName(@NotNull String name)
Sets the name of the parameter.
static String toXML(@NotNull final PluginParameter< TestGameObject, TestMapArchObject, TestArchetype, ?> parameter)
Encodes a PluginParameter to its string representation.
ArchetypeSet< TestGameObject, TestMapArchObject, TestArchetype > getArchetypeSet()
Returns the ArchetypeSet.
Helper class for regression tests to create MapModel instances.
Settings that apply to a project.
void testBooleanFromXml1()
Checks that a BooleanParameter is correctly decoded.
String getFalseText()
Returns the string representation of the "false" value.
void testMapPathToXml1()
Checks that a MapPathParameter instance is correctly encoded.
Converts PluginParameters from or to XML encoding.
TestMapModelCreator getMapModelCreator()
Returns the TestMapModelCreator instance.
AbsoluteMapPath getMapPath()
Returns the map path within getMapsDir().
Definition: MapFile.java:93
void testStringToXml2()
Checks that a StringParameter instance is correctly encoded.
Helper class for creating MapControl instances for regression tests.
A PluginParameter that holds an integer value and a range of valid values.
void testMapToXml1()
Checks that a MapParameter instance is correctly encoded.
void setFalseText(@NotNull final String falseText)
Sets the string representation of the "false" value.
void setValue(@NotNull final Double value)
MapFile getMapFile(@NotNull final AbsoluteMapPath mapPath)
Returns a MapFile instance from an AbsoluteMapPath.
void setMin(final double min)
Sets the minimal allowed value.
void testBooleanToXml1()
Checks that a BooleanParameter instance is correctly encoded.
double getMin()
Returns the minimal allowed value.
String getArchetypeName()
Returns the name of this archetype.
void setMin(final int min)
Sets the minimal allowed value.
static PluginParameter< TestGameObject, TestMapArchObject, TestArchetype, ?> fromXML(@NotNull final TestMapControlCreator mapControlCreator, @NotNull final String string)
Decodes a PluginParameter from its string representation.
A MapArchObject implementation for testing purposes.
String getDescription()
The user-provided description of the value for the user interface.
MapModel< G, A, R > getMapModel()
Returns the map model.
boolean setStringValue(@NotNull final String stringValue)
void testArchetypeToXml3()
Checks that an ArchetypeParameter instance is correctly encoded.
Base package of all Gridarta classes.
A PluginParameter that holds a boolean value.
void testMapFromXml3()
Checks that a MapParameter is correctly decoded.
final PluginParameterVisitor< G, A, R, Element > toXML
A PluginParameterVisitor that returns XML representation.
void testMapFromXml1()
Checks that a MapParameter is correctly decoded.
String getStringValue()
Returns the string representation of the current value of the parameter.
void testIntegerFromXml1()
Checks that an IntegerParameter is correctly decoded.
void testArchetypeToXml1()
Checks that an ArchetypeParameter instance is correctly encoded.
GameObjects are the objects based on Archetypes found on maps.
A PluginParameter that holds an Archetype value.
void setMax(final double max)
Sets the maximal allowed value.
void testArchetypeToXml2()
Checks that an ArchetypeParameter instance is correctly encoded.
void testArchetypeFromXml1()
Checks that a ArchetypeParameter is correctly decoded.
String getParameterType()
Returns the parameter type name.
void setTrueText(@NotNull final String trueText)
Sets the string representation of the "true" value.
A PluginParameter that holds a double value.
TestArchetype getArchetype(@NotNull final String archetypeName)
Returns an archetype.
void testBooleanFromXml2()
Checks that a BooleanParameter is correctly decoded.
void testIntegerToXml2()
Checks that an IntegerParameter instance is correctly encoded.
void setMax(final int max)
Sets the maximal allowed value.
String getTrueText()
Returns the string representation of the "true" value.
void setDescription(@NotNull String description)
Sets the user-provided description of the value for the user interface.
void testMapToXml3()
Checks that a MapParameter instance is correctly encoded.
Currently nothing more than a marker interface for unification.
Definition: MapControl.java:35
MapFile getMapFile()
Returns the map file.
void testDoubleToXml2()
Checks that a DoubleParameter instance is correctly encoded.
void testIntegerToXml1()
Checks that an IntegerParameter instance is correctly encoded.
An Archetype implementation for testing purposes.
void testArchetypeFromXml3()
Checks that an ArchetypeParameter is correctly decoded.
String getName()
The name of the parameter.
A GameObject implementation for testing purposes.
void testArchetypeFromXml2()
Checks that an ArchetypeParameter is correctly decoded.
void testDoubleFromXml1()
Checks that a DoubleParameter is correctly decoded.
void testBooleanToXml2()
Checks that a BooleanParameter instance is correctly encoded.
An ProjectSettings implementation for testing purposes.
int getMax()
Returns the maximal allowed value.
double getMax()
Returns the maximal allowed value.
boolean setStringValue(@NotNull String stringValue)
Sets the parameter value from string representation.
void testDoubleFromXml2()
Checks that a DoubleParameter is correctly decoded.
void testDoubleToXml1()
Checks that a DoubleParameter instance is correctly encoded.
A PluginParameter that holds a path with in the maps directory.
void setValue(@NotNull final Integer value)
V getValueOrNull()
Returns the current value of this parameter.
A PluginParameter that holds a string value.
The location of a map file with a map directory.
Definition: MapFile.java:31
MapManager< TestGameObject, TestMapArchObject, TestArchetype > getMapManager()
Returns the MapManager.
The class Size2D represents a 2d rectangular area.
Definition: Size2D.java:30
MapControl< TestGameObject, TestMapArchObject, TestArchetype > newMapControl(@Nullable final MapFile mapFile, @NotNull final String mapName, @NotNull final Size2D mapSize)
Creates a new map control.
PluginParameter< G, A, R, ?> createParameter(@NotNull final Element parameterNode)