20 package net.sf.gridarta.model.resource;
22 import java.io.BufferedWriter;
24 import java.io.FileOutputStream;
25 import java.io.IOException;
26 import java.io.OutputStream;
27 import java.io.OutputStreamWriter;
28 import java.io.Writer;
29 import java.nio.charset.StandardCharsets;
30 import java.util.ArrayList;
31 import java.util.Collections;
32 import java.util.Enumeration;
33 import java.util.HashMap;
34 import java.util.List;
36 import java.util.ResourceBundle;
37 import java.util.regex.Pattern;
60 import net.
sf.japi.swing.action.ActionBuilder;
61 import net.
sf.japi.swing.action.ActionBuilderFactory;
62 import net.
sf.japi.swing.action.DefaultActionBuilder;
63 import net.
sf.japi.util.IteratorEnumeration;
64 import org.jetbrains.annotations.NotNull;
65 import org.jetbrains.annotations.Nullable;
66 import org.junit.Assert;
67 import org.junit.Test;
87 final File tmpDirectory = File.createTempFile(
"gridarta", null);
89 Assert.assertTrue(tmpDirectory.delete());
90 Assert.assertTrue(tmpDirectory.mkdir());
91 final File archDirectory =
new File(tmpDirectory,
"archetypes");
92 Assert.assertTrue(archDirectory.mkdir());
93 final File collectedDirectory =
new File(tmpDirectory,
"collected");
94 Assert.assertTrue(collectedDirectory.mkdir());
99 final ActionBuilder actionBuilder =
new DefaultActionBuilder(
"net.sf.gridarta");
100 ActionBuilderFactory.getInstance().putActionBuilder(
"net.sf.gridarta", actionBuilder);
101 final ResourceBundle resourceBundle =
new ResourceBundle() {
107 private final Map<String, Object> objects =
new HashMap<>();
111 protected Object handleGetObject(@NotNull
final String key) {
112 final Object existingObject = objects.get(key);
113 if (existingObject != null) {
114 return existingObject;
118 if (PATTERN_DEFAULT_KEY.matcher(key).matches()) {
119 object =
"Description";
123 objects.put(key,
object);
129 public Enumeration<String> getKeys() {
130 return new IteratorEnumeration<>(Collections.unmodifiableSet(objects.keySet()).iterator());
134 actionBuilder.addBundle(resourceBundle);
138 Assert.assertEquals(3, animationObjects.
size());
142 Assert.assertNotNull(anim1);
143 Assert.assertNotNull(anim2);
144 Assert.assertNotNull(anim3);
148 Assert.assertEquals(
"/anim1", anim1.
getPath());
149 Assert.assertEquals(
"/p/anim2", anim2.
getPath());
150 Assert.assertEquals(
"/p/q/r/anim3", anim3.
getPath());
152 delete(tmpDirectory);
175 final List<TestGameObject> invObjects =
new ArrayList<>();
177 filesResourcesReader.
read(errorView, invObjects);
178 return animationObjects;
188 private static void createAnimationFile(@NotNull
final File directory, @NotNull
final String animName)
throws IOException {
189 if (!directory.isDirectory()) {
190 Assert.assertTrue(directory.mkdirs());
193 final File file =
new File(directory, animName +
".anim");
194 Assert.assertFalse(file.exists());
195 try (OutputStream fileOutputStream =
new FileOutputStream(file)) {
196 try (Writer outputStreamWriter =
new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8)) {
197 try (Writer bufferedWriter =
new BufferedWriter(outputStreamWriter)) {
198 bufferedWriter.append(
"anim ").append(animName).append(
"\n");
199 bufferedWriter.append(
"face1\n");
200 bufferedWriter.append(
"face2\n");
201 bufferedWriter.append(
"mina\n");
211 private static void delete(@NotNull
final File file) {
215 if (file.isDirectory()) {
216 final File[] files = file.listFiles();
218 for (
final File subFile : files) {
225 Assert.assertTrue(file.delete());
An AbstractFilesResourcesReader for regression tests.
A FaceObjects for regression tests.
An ArchetypeParser for regression tests.
Reading and writing of maps, handling of paths.
static void createAnimationFile(@NotNull final File directory, @NotNull final String animName)
Creates a new .anim file.
int size()
Get the number of objects.
Gridarta can handle frame information of animations and allow the selection of an animation using a t...
An AnimationObjects for regression tests.
Base implementation of ArchetypeSet.
A MapArchObject implementation for testing purposes.
Interface for classes displaying error messages.
A factory for creating Archetype instances.
Base package of all Gridarta classes.
Regression tests for AbstractFilesResourcesReader.
Abstract factory for creating GameObject instances.
E get(@NotNull String objectName)
Gets a AbstractNamedObject.
AnimationObjects is a container for AnimationObjects.
GameObjects are the objects based on Archetypes found on maps.
A GameObjectFactory for regression tests.
An AnimationObject reflects the animation ("@code anim\n @endcode " ...
FaceObjects is a container for FaceObjects.
String getPath()
Get the path of this AbstractNamedObject.
An ArchetypeFactory implementation for testing purposes.
Provider for faces of GameObjects and Archetypes.
The face is the appearance of an object.
Creates ImageIcon instances from resources.
An Archetype implementation for testing purposes.
A GameObject implementation for testing purposes.
Interface that captures similarities between different ArchetypeSet implementations.
Implementation of FaceProvider which reads images from the arch directory.
void testAnimationPaths()
checks that animations read from .anim files have correct path names.
Abstract base class for archetype set loader classes.
Abstract base implementation of ArchetypeParser.
static AnimationObjects readAnimations(@NotNull final File archDirectory, @NotNull final File collectedDirectory)
Reads resources from individual files.
abstract FaceProvider read(@NotNull ErrorView errorView, @NotNull List< G > invObjects)
Reads the resources.
An ErrorView suitable for unit tests.
static final Pattern PATTERN_DEFAULT_KEY
The Pattern for matching validator keys for default values.
An AbstractArchetypeBuilder for regression tests.
String getAnimName()
Get the animName, which is the name of the animation as usable by the "animations" attribute...