Skip to content

Commit

Permalink
[PlaybackController] Switch from Properties to Hashmap, add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ScribbleTAS committed Mar 31, 2024
1 parent 2426356 commit 69972bd
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package com.minecrafttas.tasmod.playback.metadata;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Expand All @@ -15,10 +20,10 @@ public class PlaybackMetadata {
* Debug extension name
*/
private String extensionName;
private Properties metadata;
private LinkedHashMap<String, String> metadata;

public PlaybackMetadata() {
this.metadata = new Properties();
this.metadata = new LinkedHashMap<String, String>();
}

public PlaybackMetadata(String extensionName) {
Expand All @@ -30,24 +35,23 @@ public void setValue(String key, String value) {
if (key.contains("=")) {
throw new IllegalArgumentException(String.format("%sKeyname %s can't contain =", extensionName != null ? extensionName + ": " : "", key));
}
metadata.setProperty(key, value);
metadata.put(key, value);
}

public String getValue(String key) {
return metadata.getProperty(key);
return metadata.get(key);
}

@Override
public String toString() {
String out = "";
for (Object keyObj : metadata.keySet()) {
String key = (String) keyObj;
for (String key : metadata.keySet()) {
String value = getValue(key);
out += (String.format("%s=%s\n", key, value));
}
return out;
}

public List<String> toStringList() {
List<String> out = new ArrayList<>();
for (Object keyObj : metadata.keySet()) {
Expand All @@ -62,10 +66,19 @@ public String getExtensionName() {
return extensionName;
}

public Properties getMetadata() {
public HashMap<String, String> getMetadata() {
return metadata;
}

@Override
public boolean equals(Object obj) {
if(obj instanceof PlaybackMetadata) {
PlaybackMetadata other = (PlaybackMetadata) obj;
return other.metadata.equals(metadata) && other.extensionName.equals(extensionName);
}
return super.equals(obj);
}

public static PlaybackMetadata fromStringList(String extensionName, List<String> list) {
return fromStringList(list);
}
Expand Down
105 changes: 104 additions & 1 deletion src/test/java/tasmod/playback/metadata/PlaybackMetadataTest.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package tasmod.playback.metadata;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertIterableEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;

import java.util.Properties;
import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -36,5 +39,105 @@ void testSettingAndReading() {
assertEquals("Test", actual);
}

@Test
void testToString() {
PlaybackMetadata metadata = new PlaybackMetadata("Test");
metadata.setValue("1", "One");
metadata.setValue("2", "Two");
metadata.setValue("3", "Three");
metadata.setValue("4", "Four");

String actual = metadata.toString();

String expected = "1=One\n"
+ "2=Two\n"
+ "3=Three\n"
+ "4=Four\n";

assertEquals(expected, actual);
}

@Test
void testToStringList() {
PlaybackMetadata metadata = new PlaybackMetadata("Test");
metadata.setValue("1", "One");
metadata.setValue("2", "Two");
metadata.setValue("3", "Three");
metadata.setValue("4", "Four");

List<String> actual = metadata.toStringList();

List<String> expected = new ArrayList<>();
expected.add("1=One\n");
expected.add("2=Two\n");
expected.add("3=Three\n");
expected.add("4=Four\n");

assertIterableEquals(expected, actual);
}

@Test
void testEquals() {
PlaybackMetadata metadata = new PlaybackMetadata("Test");
metadata.setValue("1", "One");
metadata.setValue("2", "Two");
metadata.setValue("3", "Three");
metadata.setValue("4", "Four");

PlaybackMetadata metadata2 = new PlaybackMetadata("Test");
metadata2.setValue("1", "One");
metadata2.setValue("2", "Two");
metadata2.setValue("3", "Three");
metadata2.setValue("4", "Four");

assertEquals(metadata, metadata2);
}

@Test
void testFailedEquals() {
//Key difference
PlaybackMetadata metadata = new PlaybackMetadata("Test");
metadata.setValue("2", "One");
metadata.setValue("2", "Two");
metadata.setValue("3", "Three");
metadata.setValue("4", "Four");

PlaybackMetadata metadata2 = new PlaybackMetadata("Test");
metadata2.setValue("1", "One");
metadata2.setValue("2", "Two");
metadata2.setValue("3", "Three");
metadata2.setValue("4", "Four");

assertNotEquals(metadata, metadata2);

// Value difference
metadata = new PlaybackMetadata("Test");
metadata.setValue("1", "On");
metadata.setValue("2", "Two");
metadata.setValue("3", "Three");
metadata.setValue("4", "Four");

metadata2 = new PlaybackMetadata("Test");
metadata2.setValue("1", "One");
metadata2.setValue("2", "Two");
metadata2.setValue("3", "Three");
metadata2.setValue("4", "Four");

assertNotEquals(metadata, metadata2);

// Name difference
metadata = new PlaybackMetadata("Tes");
metadata.setValue("1", "One");
metadata.setValue("2", "Two");
metadata.setValue("3", "Three");
metadata.setValue("4", "Four");

metadata2 = new PlaybackMetadata("Test");
metadata2.setValue("1", "One");
metadata2.setValue("2", "Two");
metadata2.setValue("3", "Three");
metadata2.setValue("4", "Four");

assertNotEquals(metadata, metadata2);
}
}

0 comments on commit 69972bd

Please sign in to comment.