Skip to content
This repository was archived by the owner on Jan 8, 2023. It is now read-only.

Commit 9a77749

Browse files
committed
Adds static methods for flexibility purposes
1 parent e78817b commit 9a77749

File tree

6 files changed

+84
-7
lines changed

6 files changed

+84
-7
lines changed

src/main/java/io/github/spair/byond/dmi/DmiComparator.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,19 @@
1717
*/
1818
public final class DmiComparator {
1919

20+
/**
21+
* Static method to compare two dmi's. Same as {@link #compare(Dmi, Dmi)},
22+
* with {@link DmiComparator} instantiation under the hood.
23+
*
24+
* @param oldDmi old {@link io.github.spair.byond.dmi.Dmi} object or null
25+
* @param newDmi new {@link io.github.spair.byond.dmi.Dmi} object or null
26+
* @return {@link io.github.spair.byond.dmi.DmiDiff} object
27+
*/
28+
@Nonnull
29+
public static DmiDiff compareDmi(@Nullable final Dmi oldDmi, @Nullable final Dmi newDmi) {
30+
return new DmiComparator().compare(oldDmi, newDmi);
31+
}
32+
2033
/**
2134
* Compares two {@link io.github.spair.byond.dmi.Dmi} objects. One of argument may be null,
2235
* which will be interpreted as if another Dmi created if null is the first parameter or deleted if vice versa.

src/main/java/io/github/spair/byond/dmi/DmiSlurper.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,51 @@
1414
import java.util.Map;
1515

1616
/**
17-
* Class to extract {@link io.github.spair.byond.dmi.Dmi} object from file/base64 string/raw input stream.
17+
* Class to extract {@link io.github.spair.byond.dmi.Dmi} object from file, base64 string or raw input stream.
1818
*/
1919
public final class DmiSlurper {
2020

2121
private final MetaExtractor metaExtractor = new MetaExtractor();
2222
private final StateExtractor stateExtractor = new StateExtractor();
2323

24+
/**
25+
* Static method to process file. Same as {@link #slurpUp(File)},
26+
* with {@link DmiSlurper} instantiation under the hood.
27+
*
28+
* @param dmiFile file to deserialize
29+
* @return {@link io.github.spair.byond.dmi.Dmi} object
30+
*/
31+
@Nonnull
32+
public static Dmi slurpUpFile(final File dmiFile) {
33+
return new DmiSlurper().slurpUp(dmiFile);
34+
}
35+
36+
/**
37+
* Static method to process file. Same as {@link #slurpUp(String, String)},
38+
* with {@link DmiSlurper} instantiation under the hood.
39+
*
40+
* @param dmiName the name of resulted {@link io.github.spair.byond.dmi.Dmi} object
41+
* @param base64content base64 string to deserialize
42+
* @return {@link io.github.spair.byond.dmi.Dmi} object
43+
*/
44+
@Nonnull
45+
public static Dmi slurpUpBase64(final String dmiName, final String base64content) {
46+
return new DmiSlurper().slurpUp(dmiName, base64content);
47+
}
48+
49+
/**
50+
* Static method to process file. Same as {@link #slurpUp(String, InputStream)},
51+
* with {@link DmiSlurper} instantiation under the hood.
52+
*
53+
* @param dmiName the name of resulted {@link io.github.spair.byond.dmi.Dmi} object
54+
* @param input raw input stream to deserialize
55+
* @return {@link io.github.spair.byond.dmi.Dmi} object
56+
*/
57+
@Nonnull
58+
public static Dmi slurpUpStream(final String dmiName, final InputStream input) {
59+
return new DmiSlurper().slurpUp(dmiName, input);
60+
}
61+
2462
/**
2563
* @param dmiFile file to deserialize
2664
* @return {@link io.github.spair.byond.dmi.Dmi} object

src/main/java/io/github/spair/byond/dmi/MetaExtractor.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818

1919
final class MetaExtractor {
2020

21-
MetaExtractor() {
22-
}
23-
2421
private static final String PNG_MIME = "image/png";
2522

2623
private static final String META_ELEMENT_TAG = "TextEntry";

src/main/java/io/github/spair/byond/dmi/StateExtractor.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111

1212
final class StateExtractor {
1313

14-
StateExtractor() {
15-
}
16-
1714
Map<String, DmiState> extractStates(final BufferedImage dmiImage, final DmiMeta dmiMeta) {
1815
final int dmiWidth = dmiImage.getWidth();
1916
final int spriteWidth = dmiMeta.getSpritesWidth();

src/test/java/io/github/spair/byond/dmi/DmiComparatorTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@ public class DmiComparatorTest {
1818
private static final String ROLLERBED_ORIGINAL_PATH = "src/test/resources/rollerbed_original.dmi";
1919
private static final String ROLLERBED_DIFF_PATH = "src/test/resources/rollerbed_original_diff.dmi";
2020

21+
@Test
22+
public void testStaticCompare() {
23+
Dmi original = dmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));
24+
Dmi modified = dmiSlurper.slurpUp(new File(ROLLERBED_DIFF_PATH));
25+
26+
DmiDiff diffSimple = dmiComparator.compare(original, modified);
27+
DmiDiff diffStatic = DmiComparator.compareDmi(original, modified);
28+
29+
assertEquals(diffSimple, diffStatic);
30+
}
31+
2132
@Test
2233
public void testCompareWhenNotSame() {
2334
Dmi original = dmiSlurper.slurpUp(new File(ROLLERBED_ORIGINAL_PATH));

src/test/java/io/github/spair/byond/dmi/DmiSlurperTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,27 @@ public class DmiSlurperTest {
1616

1717
private final DmiSlurper dmiSlurper = new DmiSlurper();
1818

19+
@Test
20+
public void testStaticSlurpUpFromFile() {
21+
File dmiFile = new File("src/test/resources/rollerbed_original.dmi");
22+
Dmi dmi = DmiSlurper.slurpUpFile(dmiFile);
23+
commonDmiAssertion(dmi);
24+
}
25+
26+
@Test
27+
public void testStaticSlurpUpFromBase64Content() throws Exception {
28+
String filePath = "src/test/resources/rollerbed_original_base64.txt";
29+
Dmi dmi = DmiSlurper.slurpUpBase64("rollerbed_original.dmi", new String(Files.readAllBytes(Paths.get(filePath))));
30+
commonDmiAssertion(dmi);
31+
}
32+
33+
@Test
34+
public void testStaticSlurpUpFromInputStream() throws Exception {
35+
File dmiFile = new File("src/test/resources/rollerbed_original.dmi");
36+
Dmi dmi = DmiSlurper.slurpUpStream("rollerbed_original.dmi", new FileInputStream(dmiFile));
37+
commonDmiAssertion(dmi);
38+
}
39+
1940
@Test
2041
public void testSlurpUpFromFile() {
2142
File dmiFile = new File("src/test/resources/rollerbed_original.dmi");

0 commit comments

Comments
 (0)