Gridarta Editor
ArchetypeParserTest.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.io;
21 
22 import java.io.IOException;
39 import org.jetbrains.annotations.NotNull;
40 import org.jetbrains.annotations.Nullable;
41 import org.junit.Assert;
42 import org.junit.Test;
43 
48 public class ArchetypeParserTest extends AbstractArchetypeParserTest<TestGameObject, TestMapArchObject, TestArchetype> {
49 
53  @Nullable
55 
60  @Test
61  public void testMissingObject() throws IOException {
62  check("end\n", false, true, 0);
63  }
64 
69  @Test
70  public void testEmpty() throws IOException {
71  final StringBuilder input = new StringBuilder();
72  input.append("Object test\n");
73  input.append("end\n");
74  check(input.toString(), false, false, 1);
75  }
76 
81  @Test
82  public void testMissingEnd() throws IOException {
83  check("Object test\n", true, false, 0);
84  }
85 
91  @Test
92  public void testMsgTextEmpty() throws IOException, UndefinedArchetypeException {
93  final StringBuilder input = new StringBuilder();
94  input.append("Object test\n");
95  input.append("msg\n");
96  input.append("endmsg\n");
97  input.append("end\n");
98  check(input.toString(), false, false, 1);
99  Assert.assertNull(getArchetypeSet().getArchetype("test").getMsgText(false));
100  }
101 
107  @Test
108  public void testMsgTextLines() throws IOException, UndefinedArchetypeException {
109  final StringBuilder input = new StringBuilder();
110  input.append("Object test\n");
111  input.append("msg\n");
112  input.append("abc\n");
113  input.append("def\n");
114  input.append("ghi\n");
115  input.append("endmsg\n");
116  input.append("end\n");
117  check(input.toString(), false, false, 1);
118  final StringBuilder msgText = new StringBuilder();
119  msgText.append("abc\n");
120  msgText.append("def\n");
121  msgText.append("ghi\n");
122  Assert.assertEquals(msgText.toString(), getArchetypeSet().getArchetype("test").getMsgText(false));
123  }
124 
130  @Test
131  public void testMsgTextTrailingWhitespace() throws IOException, UndefinedArchetypeException {
132  final StringBuilder input = new StringBuilder();
133  input.append("Object test\n");
134  input.append("msg\n");
135  input.append("abc \n");
136  input.append("def\n");
137  input.append("ghi \n");
138  input.append("\n");
139  input.append("endmsg\n");
140  input.append("end\n");
141  check(input.toString(), false, false, 1);
142  final StringBuilder msgText = new StringBuilder();
143  msgText.append("abc\n");
144  msgText.append("def\n");
145  msgText.append("ghi\n");
146  msgText.append("\n");
147  Assert.assertEquals(msgText.toString(), getArchetypeSet().getArchetype("test").getMsgText(false));
148  }
149 
155  @Test
156  public void testMsgTextLeadingWhitespace() throws IOException, UndefinedArchetypeException {
157  final StringBuilder input = new StringBuilder();
158  input.append("Object test\n");
159  input.append("msg\n");
160  input.append("\n");
161  input.append(" abc\n");
162  input.append("def\n");
163  input.append(" ghi\n");
164  input.append("endmsg\n");
165  input.append("end\n");
166  check(input.toString(), false, false, 1);
167  final StringBuilder msgText = new StringBuilder();
168  msgText.append("\n");
169  msgText.append(" abc\n");
170  msgText.append("def\n");
171  msgText.append(" ghi\n");
172  Assert.assertEquals(msgText.toString(), getArchetypeSet().getArchetype("test").getMsgText(false));
173  }
174 
179  @Test
180  public void testMsgTextTruncated() throws IOException {
181  final StringBuilder input = new StringBuilder();
182  input.append("Object test\n");
183  input.append("msg\n");
184  input.append("abc\n");
185  input.append("def\n");
186  check(input.toString(), true, false, 0);
187  }
188 
189  @NotNull
190  @Override
192  final FaceObjects faceObjects = new TestFaceObjects();
193  final ResourceIcons resourceIcons = new ResourceIcons();
194  final FaceObjectProviders faceObjectProviders = new FaceObjectProviders(0, faceObjects, resourceIcons);
195  final AnimationObjects animationObjects = new TestAnimationObjects();
196  final TestGameObjectFactory gameObjectFactory = new TestGameObjectFactory(faceObjectProviders, animationObjects);
197  final TestArchetypeBuilder archetypeBuilder = new TestArchetypeBuilder(gameObjectFactory);
198  final TestArchetypeFactory archetypeFactory = new TestArchetypeFactory(faceObjectProviders, animationObjects);
199  archetypeSet = new DefaultArchetypeSet<>(archetypeFactory, null);
200  archetypeSet.setLoadedFromArchive(true);
201  assert archetypeSet != null;
202  return new TestArchetypeParser(archetypeBuilder, animationObjects, archetypeSet);
203  }
204 
205  @NotNull
206  @Override
209  if (result == null) {
210  throw new IllegalStateException("archetype set is unset");
211  }
212  return result;
213  }
214 
215 }
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.io.AbstractArchetypeParser
Abstract base implementation of ArchetypeParser.
Definition: AbstractArchetypeParser.java:47
net.sf.gridarta.model.io.ArchetypeParserTest.testMissingEnd
void testMissingEnd()
Checks that a missing "end" line is reported.
Definition: ArchetypeParserTest.java:82
net.sf.gridarta.model.anim.AnimationObjects
AnimationObjects is a container for AnimationObjects.
Definition: AnimationObjects.java:30
net.sf.gridarta.model.gameobject.TestGameObject
A GameObject implementation for testing purposes.
Definition: TestGameObject.java:34
net.sf
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.face.FaceObjectProviders
Provider for faces of GameObjects and Archetypes.
Definition: FaceObjectProviders.java:46
net.sf.gridarta.model.io.ArchetypeParserTest.testMsgTextTrailingWhitespace
void testMsgTextTrailingWhitespace()
Checks that msg...endmsg fields are parsed correctly.
Definition: ArchetypeParserTest.java:131
net.sf.gridarta.model.anim.TestAnimationObjects
An AnimationObjects for regression tests.
Definition: TestAnimationObjects.java:26
net.sf.gridarta.model.io.ArchetypeParserTest.testMsgTextLeadingWhitespace
void testMsgTextLeadingWhitespace()
Checks that msg...endmsg fields are parsed correctly.
Definition: ArchetypeParserTest.java:156
net.sf.gridarta.model.io.ArchetypeParserTest.newArchetypeParser
AbstractArchetypeParser< TestGameObject, TestMapArchObject, TestArchetype, ? extends AbstractArchetypeBuilder< TestGameObject, TestMapArchObject, TestArchetype > > newArchetypeParser()
Definition: ArchetypeParserTest.java:191
net.sf.gridarta.model.io.ArchetypeParserTest.testMsgTextLines
void testMsgTextLines()
Checks that msg...endmsg fields are parsed correctly.
Definition: ArchetypeParserTest.java:108
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.model.io.ArchetypeParserTest
Regression tests for AbstractArchetypeParser.
Definition: ArchetypeParserTest.java:48
net.sf.gridarta.model.gameobject.TestGameObjectFactory
A GameObjectFactory for regression tests.
Definition: TestGameObjectFactory.java:34
net.sf.gridarta.model.io.ArchetypeParserTest.getArchetypeSet
ArchetypeSet< TestGameObject, TestMapArchObject, TestArchetype > getArchetypeSet()
Definition: ArchetypeParserTest.java:207
net.sf.gridarta.model.face.FaceObjects
FaceObjects is a container for FaceObjects.
Definition: FaceObjects.java:31
net.sf.gridarta.model.io.ArchetypeParserTest.testMsgTextTruncated
void testMsgTextTruncated()
Checks that msg...endmsg fields are parsed correctly.
Definition: ArchetypeParserTest.java:180
net.sf.gridarta.model.io.AbstractArchetypeParserTest< TestGameObject, TestMapArchObject, TestArchetype >::check
void check( @NotNull final String input, final boolean hasErrors, final boolean hasWarnings, final int archetypes)
Creates a new archetype parser and parses the given input.
Definition: AbstractArchetypeParserTest.java:52
net.sf.gridarta.model.archetypeset.ArchetypeSet
Interface that captures similarities between different ArchetypeSet implementations.
Definition: ArchetypeSet.java:37
net.sf.gridarta.model.io.ArchetypeParserTest.testEmpty
void testEmpty()
Checks that an empty archetype can be parsed.
Definition: ArchetypeParserTest.java:70
net.sf.gridarta.model.archetype.TestArchetypeBuilder
An AbstractArchetypeBuilder for regression tests.
Definition: TestArchetypeBuilder.java:31
net.sf.gridarta.model.archetype.AbstractArchetypeBuilder
Creates Archetype instances.
Definition: AbstractArchetypeBuilder.java:40
net.sf.gridarta.model.archetype.TestArchetypeFactory
An ArchetypeFactory implementation for testing purposes.
Definition: TestArchetypeFactory.java:32
net.sf.gridarta.model.io.ArchetypeParserTest.archetypeSet
ArchetypeSet< TestGameObject, TestMapArchObject, TestArchetype > archetypeSet
The loaded archetypes.
Definition: ArchetypeParserTest.java:54
net.sf.gridarta.model.io.AbstractArchetypeParserTest
Abstract base class for regression tests for ArchetypeParser.
Definition: AbstractArchetypeParserTest.java:42
net.sf.gridarta.model
net.sf.gridarta.model.io.TestArchetypeParser
An ArchetypeParser for regression tests.
Definition: TestArchetypeParser.java:38
net.sf.gridarta.model.io.ArchetypeParserTest.testMissingObject
void testMissingObject()
Checks that a missing "object" line is detected.
Definition: ArchetypeParserTest.java:61
net.sf.gridarta.model.face
The face is the appearance of an object.
Definition: AbstractFaceObjects.java:20
net.sf.gridarta.model.anim
Gridarta can handle frame information of animations and allow the selection of an animation using a t...
Definition: AbstractAnimationObjects.java:20
net.sf.gridarta.model.io.ArchetypeParserTest.testMsgTextEmpty
void testMsgTextEmpty()
Checks that msg...endmsg fields are parsed correctly.
Definition: ArchetypeParserTest.java:92
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.utils.ResourceIcons
Creates ImageIcon instances from resources.
Definition: ResourceIcons.java:46
net.sf.gridarta.model.archetypeset
Definition: ArchetypeSet.java:20
net.sf.gridarta.model.archetypeset.DefaultArchetypeSet
Base implementation of ArchetypeSet.
Definition: DefaultArchetypeSet.java:44
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.model.face.TestFaceObjects
A FaceObjects for regression tests.
Definition: TestFaceObjects.java:30