Gridarta Editor
ArtifactParserTest.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 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.model.artifact;
21 
22 import java.io.IOException;
30 import org.junit.Assert;
31 import org.junit.Test;
32 
37 public class ArtifactParserTest {
38 
45  @Test
47  final TestErrorView errorView = new TestErrorView();
48  final TestParser parser = new TestParser(errorView);
49  parser.addArchetype("base", "sp 2");
50  final StringBuilder artifacts = new StringBuilder();
51  artifacts.append("artifact art\n");
52  artifacts.append("def_arch base\n");
53  artifacts.append("Object obj\n");
54  artifacts.append("sp 3\n");
55  artifacts.append("end\n");
56  parser.parseArtifacts(artifacts.toString());
57  Assert.assertFalse(errorView.hasWarnings());
58  Assert.assertFalse(errorView.hasErrors());
59  Assert.assertEquals(2, parser.getArchetypeCount());
61  Assert.assertEquals("sp 3\nname base\n", archetype.getObjectText());
62  }
63 
71  @Test
73  final TestParser parser = new TestParser();
74  parser.addArchetype("horn");
75  final StringBuilder artifacts = new StringBuilder();
76  artifacts.append("artifact horn_fools\n");
77  artifacts.append("def_arch horn\n");
78  artifacts.append("Object obj\n");
79  artifacts.append("title of fools\n");
80  artifacts.append("end\n");
81  parser.parseArtifacts(artifacts.toString());
82  Assert.assertEquals("horn of fools", parser.getArchetype("horn_fools").getBestName());
83  }
84 
92  @Test
94  final TestParser parser = new TestParser();
95  parser.addArchetype("horn", "name horn2");
96  final StringBuilder artifacts = new StringBuilder();
97  artifacts.append("artifact horn_fools\n");
98  artifacts.append("def_arch horn\n");
99  artifacts.append("Object obj\n");
100  artifacts.append("title of fools\n");
101  artifacts.append("end\n");
102  parser.parseArtifacts(artifacts.toString());
103  Assert.assertEquals("horn2 of fools", parser.getArchetype("horn_fools").getBestName());
104  }
105 
113  @Test
115  final TestParser parser = new TestParser();
116  parser.addArchetype("horn", "name base_horn");
117  final StringBuilder artifacts = new StringBuilder();
118  artifacts.append("artifact horn_fools\n");
119  artifacts.append("def_arch horn\n");
120  artifacts.append("Object obj\n");
121  artifacts.append("title of fools\n");
122  artifacts.append("end\n");
123  parser.parseArtifacts(artifacts.toString());
124  Assert.assertEquals("base_horn of fools", parser.getArchetype("horn_fools").getBestName());
125  }
126 
134  @Test
136  final TestParser parser = new TestParser();
137  parser.addArchetype("horn", "name base_horn");
138  final StringBuilder artifacts = new StringBuilder();
139  artifacts.append("artifact horn_fools\n");
140  artifacts.append("def_arch horn\n");
141  artifacts.append("Object obj\n");
142  artifacts.append("name special_horn\n");
143  artifacts.append("title of fools\n");
144  artifacts.append("end\n");
145  parser.parseArtifacts(artifacts.toString());
146  Assert.assertEquals("special_horn of fools", parser.getArchetype("horn_fools").getBestName());
147  }
148 
156  @Test
158  final TestParser parser = new TestParser();
159  parser.addArchetype("note", "face note.101", "layer 3", "identified 1", "type 8", "material 1", "value 8", "weight 75", "level 1", "exp 10");
160  final StringBuilder artifacts = new StringBuilder();
161  artifacts.append("Allowed none\n");
162  artifacts.append("chance 1\n");
163  artifacts.append("artifact my_notebook_item\n");
164  artifacts.append("def_arch note\n");
165  artifacts.append("Object\n");
166  artifacts.append("name A notebook\n");
167  artifacts.append("msg\n");
168  artifacts.append("This should be giving a false positive for duplicate attributes.\n");
169  artifacts.append("endmsg\n");
170  artifacts.append("end\n");
171  parser.parseArtifacts(artifacts.toString());
172  Assert.assertEquals("A notebook", parser.getArchetype("my_notebook_item").getBestName());
173  }
174 
182  @Test
184  final TestParser parser = new TestParser();
185  parser.addArchetype("note", "face note.101", "name note", "layer 3", "identified 1", "type 8", "material 1", "value 8", "weight 75", "level 1", "exp 10");
186  final StringBuilder artifacts = new StringBuilder();
187  artifacts.append("Allowed none\n");
188  artifacts.append("chance 1\n");
189  artifacts.append("artifact my_notebook_item\n");
190  artifacts.append("def_arch note\n");
191  artifacts.append("Object\n");
192  artifacts.append("name A notebook\n");
193  artifacts.append("msg\n");
194  artifacts.append("This should be giving a false positive for duplicate attributes.\n");
195  artifacts.append("endmsg\n");
196  artifacts.append("end\n");
197  parser.parseArtifacts(artifacts.toString());
198  Assert.assertEquals("A notebook", parser.getArchetype("my_notebook_item").getBestName());
199  }
200 
201 }
net.sf.gridarta.model.archetype.TestArchetype
An Archetype implementation for testing purposes.
Definition: TestArchetype.java:30
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.model.archetype.UndefinedArchetypeException
Exception thrown if an Archetype does not exist.
Definition: UndefinedArchetypeException.java:28
net.sf.gridarta.model.gameobject.TestGameObject
A GameObject implementation for testing purposes.
Definition: TestGameObject.java:34
net.sf.gridarta.model.baseobject.BaseObject.getObjectText
String getObjectText()
Returns the object text of this GameObject as String.
net.sf
net.sf.gridarta.model.errorview.TestErrorView.hasErrors
boolean hasErrors
Whether errors have been collected.
Definition: TestErrorView.java:41
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.artifact.TestParser.getArchetype
Archetype< TestGameObject, TestMapArchObject, TestArchetype > getArchetype(@NotNull final String archetypeName)
Returns an Archetype by name.
Definition: TestParser.java:148
net.sf.gridarta.model.artifact.ArtifactParserTest.testMissingObject
void testMissingObject()
Checks that a missing "object" line is detected.
Definition: ArtifactParserTest.java:46
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.model.errorview
Definition: ErrorView.java:20
net.sf.gridarta.model.artifact.ArtifactParserTest.testDefaultName5b
void testDefaultName5b()
Checks for spurious error messages when setting an artifact's name when the base archetype doesn't ha...
Definition: ArtifactParserTest.java:183
net.sf.gridarta.model.artifact.TestParser
Parser for artifacts definitions.
Definition: TestParser.java:55
net.sf.gridarta.model.artifact.TestParser.parseArtifacts
void parseArtifacts(@NotNull final String artifacts)
Parses artifacts definitions.
Definition: TestParser.java:134
net.sf.gridarta.model.errorview.TestErrorView
An ErrorView suitable for unit tests.
Definition: TestErrorView.java:30
net.sf.gridarta.model.artifact.ArtifactParserTest
Regression tests for ArtifactParser.
Definition: ArtifactParserTest.java:37
net.sf.gridarta.model.artifact.ArtifactParserTest.testDefaultName5a
void testDefaultName5a()
Checks for spurious error messages when setting an artifact's name when the base archetype doesn't ha...
Definition: ArtifactParserTest.java:157
net.sf.gridarta.model.artifact.ArtifactParserTest.testDefaultName3
void testDefaultName3()
Checks that an artifact definition inherits the def_arch archetype's name by default.
Definition: ArtifactParserTest.java:114
net.sf.gridarta.model.artifact.TestParser.getArchetypeCount
int getArchetypeCount()
Returns the number of defined archetypes.
Definition: TestParser.java:156
net.sf.gridarta.model.artifact.ArtifactParserTest.testDefaultName2
void testDefaultName2()
Checks that an artifact definition inherits the def_arch archetype's name by default.
Definition: ArtifactParserTest.java:93
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Reflects an Archetype.
Definition: Archetype.java:41
net.sf.gridarta.model.archetype.DuplicateArchetypeException
An Exception indicating that an Archetype name is not unique.
Definition: DuplicateArchetypeException.java:29
net.sf.gridarta.model.maparchobject.TestMapArchObject
A MapArchObject implementation for testing purposes.
Definition: TestMapArchObject.java:28
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.model.artifact.TestParser.addArchetype
void addArchetype(@NotNull final String archetypeName, @NotNull final String... attributes)
Adds a new archetype.
Definition: TestParser.java:118
net.sf.gridarta.model.artifact.ArtifactParserTest.testDefaultName1
void testDefaultName1()
Checks that an artifact definition inherits the def_arch archetype's name by default.
Definition: ArtifactParserTest.java:72
net.sf.gridarta.model.errorview.TestErrorView.hasWarnings
boolean hasWarnings
Whether warnings have been collected.
Definition: TestErrorView.java:46
net.sf.gridarta.model.artifact.ArtifactParserTest.testDefaultName4
void testDefaultName4()
Checks that an artifact definition inherits the def_arch archetype's name by default.
Definition: ArtifactParserTest.java:135