Gridarta Editor
GameObjectFactoryTest.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.gameobject;
21 
22 import java.awt.Point;
23 import javax.swing.ImageIcon;
33 import org.jetbrains.annotations.NotNull;
34 import org.jetbrains.annotations.Nullable;
35 import org.junit.Assert;
36 import org.junit.Test;
37 
42 public class GameObjectFactoryTest {
43 
49  @Test
51  final TestMapModelCreator mapModelCreator = new TestMapModelCreator(false);
52  final TestMapModelHelper mapModelHelper = mapModelCreator.newTestMapModelHelper();
53  final MapModel<TestGameObject, TestMapArchObject, TestArchetype> mapModel = mapModelCreator.newMapModel(1, 1);
54 
55  final Point point = new Point(0, 0);
56  mapModel.beginTransaction("TEST");
57  final TestGameObject ob1 = mapModelHelper.insertFloor(mapModel, point);
58  final TestGameObject ob2 = mapModelHelper.insertExit(ob1);
59 
60  final TestGameObject ob1Clone = mapModelCreator.getGameObjectFactory().cloneGameObject(ob1);
61 
62  Assert.assertNotSame(ob1, ob1Clone);
63  Assert.assertEquals(1, ob1Clone.countInvObjects());
64  final TestGameObject ob2Clone = ob1Clone.getFirst();
65  Assert.assertNotNull(ob2Clone);
66  Assert.assertNotSame(ob2, ob2Clone);
67 
68  Assert.assertSame(ob1, ob2.getContainer());
69  Assert.assertSame(ob1Clone, ob2Clone.getContainer());
70  }
71 
77  @Test
79  final TestMapModelCreator mapModelCreator = new TestMapModelCreator(false);
80  final TestMapModelHelper mapModelHelper = mapModelCreator.newTestMapModelHelper();
81  final MapModel<TestGameObject, TestMapArchObject, TestArchetype> mapModel = mapModelCreator.newMapModel(1, 1);
82 
85 
86  final TestArchetype invArchetype = gameObjectFactory.newArchetype("inv");
87  invArchetype.setAttributeString(BaseObject.FACE, "face");
88  archetypeSet.addArchetype(invArchetype);
89 
90  final TestArchetype envArchetype = gameObjectFactory.newArchetype("env");
91  envArchetype.setAttributeString(BaseObject.FACE, "face");
92  envArchetype.addLast(gameObjectFactory.createGameObject(invArchetype));
93  archetypeSet.addArchetype(envArchetype);
94 
95  final FaceProvider faceProvider = new FaceProvider() {
96 
97  @Nullable
98  @Override
99  public ImageIcon getImageIconForFacename(@NotNull final String faceName, final long stretch) {
100  return faceName.equals("face") ? new ImageIcon() : null;
101  }
102 
103  @Override
104  public void reload() {
105  // do nothing
106  }
107 
108  };
109  mapModelCreator.getFaceObjectProviders().setNormal(faceProvider);
110 
111  final Point point = new Point(0, 0);
112  mapModel.beginTransaction("TEST");
113  final TestGameObject env = mapModelHelper.insertArchetype(mapModel, point, envArchetype, false);
114 
115  Assert.assertNotNull(env);
116  Assert.assertEquals(FaceSource.ARCHETYPE_FACE, env.getFaceObjSource());
117 
118  final TestGameObject inv = env.getFirst();
119  Assert.assertNotNull(inv);
120  Assert.assertEquals(FaceSource.ARCHETYPE_FACE, inv.getFaceObjSource());
121  }
122 
123 }
net.sf.gridarta.model.archetype.TestArchetype
An Archetype implementation for testing purposes.
Definition: TestArchetype.java:30
net.sf.gridarta.model.face.FaceProvider
This interface represents a lazy loader that provides images on demand.
Definition: FaceProvider.java:30
net.sf.gridarta.model.mapmodel.MapModel
A MapModel reflects the data of a map.
Definition: MapModel.java:75
net.sf.gridarta.model.gameobject.GameObjectFactory
Abstract factory for creating GameObject instances.
Definition: GameObjectFactory.java:31
net.sf.gridarta.model.mapmodel.TestMapModelHelper.insertExit
TestGameObject insertExit(@NotNull final MapModel< TestGameObject, TestMapArchObject, TestArchetype > mapModel, @NotNull final Point point)
Inserts an exitArchetype game object into a map model.
Definition: TestMapModelHelper.java:146
net.sf.gridarta.model.mapmodel.TestMapModelCreator.newTestMapModelHelper
TestMapModelHelper newTestMapModelHelper()
Creates a new TestMapModelHelper instance.
Definition: TestMapModelCreator.java:313
net.sf.gridarta.model.gameobject.FaceSource
Enumeration describing the state of the face.
Definition: FaceSource.java:28
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.model.mapmodel.TestMapModelHelper
Helper class for creating MapModel instances for regression tests.
Definition: TestMapModelHelper.java:45
net.sf.gridarta.model.gameobject.TestGameObject
A GameObject implementation for testing purposes.
Definition: TestGameObject.java:34
net.sf.gridarta.model.gameobject.GameObjectFactoryTest.testUpdateFaceInformation
void testUpdateFaceInformation()
Checks that face information is updated for inventory objects cloned from an archetype.
Definition: GameObjectFactoryTest.java:78
net.sf
net.sf.gridarta.model.mapmodel.MapModel.beginTransaction
void beginTransaction(@NotNull String name)
Starts a new transaction.
net.sf.gridarta.model.mapmodel
Definition: AboveFloorInsertionMode.java:20
net.sf.gridarta.model.mapmodel.TestMapModelCreator
Helper class for regression tests to create MapModel instances.
Definition: TestMapModelCreator.java:63
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.face.FaceObjectProviders.setNormal
void setNormal(@NotNull final FaceProvider normalFaceProvider)
Sets the normal FaceProvider.
Definition: FaceObjectProviders.java:231
net
net.sf.gridarta.model.archetypeset.ArchetypeSet.addArchetype
void addArchetype(@NotNull R archetype)
Adds an Archetype to this Set.
net.sf.gridarta.model.mapmodel.TestMapModelCreator.newMapModel
MapModel< TestGameObject, TestMapArchObject, TestArchetype > newMapModel(final int w, final int h)
Creates a new MapModel instance.
Definition: TestMapModelCreator.java:168
net.sf.gridarta.model.mapmodel.TestMapModelCreator.getFaceObjectProviders
FaceObjectProviders getFaceObjectProviders()
Returns the FaceObjectProviders instance.
Definition: TestMapModelCreator.java:366
net.sf.gridarta.model.gameobject.GameObjectFactory.newArchetype
R newArchetype(@NotNull String archetypeName)
Creates a new Archetype instance.
net.sf.gridarta.model.mapmodel.TestMapModelCreator.getGameObjectFactory
GameObjectFactory< TestGameObject, TestMapArchObject, TestArchetype > getGameObjectFactory()
Returns the GameObjectFactory instance.
Definition: TestMapModelCreator.java:294
net.sf.gridarta.model.baseobject.BaseObject.FACE
String FACE
The attribute name of the object's face.
Definition: BaseObject.java:54
net.sf.gridarta.model.mapmodel.TestMapModelCreator.getArchetypeSet
ArchetypeSet< TestGameObject, TestMapArchObject, TestArchetype > getArchetypeSet()
Returns the ArchetypeSet.
Definition: TestMapModelCreator.java:349
net.sf.gridarta.model.gameobject.GameObjectFactoryTest
Regression tests for GameObjectFactory.
Definition: GameObjectFactoryTest.java:42
net.sf.gridarta.model.mapmodel.TestMapModelHelper.insertFloor
TestGameObject insertFloor(@NotNull final MapModel< TestGameObject, TestMapArchObject, TestArchetype > mapModel, @NotNull final Point point)
Inserts a floorArchetype game object into a map model.
Definition: TestMapModelHelper.java:135
net.sf.gridarta.model.gameobject.GameObjectFactory.createGameObject
G createGameObject(@NotNull R archetype)
Creates a new GameObject from an Archetype.
net.sf.gridarta.model.archetypeset.ArchetypeSet
Interface that captures similarities between different ArchetypeSet implementations.
Definition: ArchetypeSet.java:37
net.sf.gridarta.model.baseobject.BaseObject
Definition: BaseObject.java:34
net.sf.gridarta.model.mapmodel.TestMapModelHelper.insertArchetype
TestGameObject insertArchetype(@NotNull final MapModel< TestGameObject, TestMapArchObject, TestArchetype > mapModel, final int x, final int y, @NotNull final BaseObject< TestGameObject, TestMapArchObject, TestArchetype, ?> archetype, final boolean join)
Inserts an archetype game object into a map model.
Definition: TestMapModelHelper.java:171
net.sf.gridarta.model
net.sf.gridarta.model.baseobject
Definition: AbstractBaseObject.java:20
net.sf.gridarta.model.gameobject.GameObjectFactoryTest.testDoMoveSquareTopSingle
void testDoMoveSquareTopSingle()
Checks that GameObjectFactory#cloneGameObject(GameObject) correctly updates the container.
Definition: GameObjectFactoryTest.java:50
net.sf.gridarta.model.face
The face is the appearance of an object.
Definition: AbstractFaceObjects.java:20
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.gameobject.FaceSource.ARCHETYPE_FACE
ARCHETYPE_FACE
This GameObject has no face defined and thus inherited the face from its archetype.
Definition: FaceSource.java:44
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.model.archetype.Archetype.addLast
void addLast(@NotNull G gameObject)
Adds the given GameObject at the end of this Container.
net.sf.gridarta.model.archetypeset
Definition: ArchetypeSet.java:20