package gov.loc.repository.bagit.domain; import java.util.Arrays; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class MetadataTest extends Assert { private Metadata sut; @Before public void setup(){ sut = new Metadata(); } @Test public void testPayloadOxumUpsert(){ assertNull(sut.get("payload-oxum")); //test inserting String payloadOxum = "6.1"; sut.upsertPayloadOxum(payloadOxum); assertEquals(Arrays.asList(payloadOxum), sut.get("payload-oxum")); payloadOxum = "25.2"; sut.upsertPayloadOxum(payloadOxum); assertEquals(Arrays.asList(payloadOxum), sut.get("payload-oxum")); } @Test public void testCaseInsensitiveAccess(){ sut.add("key", "value"); assertEquals(Arrays.asList("value"), sut.get("KEY")); assertEquals(Arrays.asList("value"), sut.get("key")); assertEquals(Arrays.asList("value"), sut.get("Key")); assertEquals(Arrays.asList("value"), sut.get("kEY")); } @Test public void testCaseIsPreserved(){ String key = "FoOVaLuE"; String value = "BaRVaLuE"; sut.add(key, value); assertEquals(key, sut.getAll().get(0).getKey()); assertEquals(value, sut.getAll().get(0).getValue()); } @Test public void testEquals(){ sut.add("key", "value"); Metadata differentValues = new Metadata(); differentValues.add("foo", "bar"); Metadata repeatedValues = new Metadata(); repeatedValues.add("key", "value"); repeatedValues.add("key", "value"); Metadata same = new Metadata(); same.add("key", "value"); assertTrue("should be same since same memory reference", sut.equals(sut)); assertFalse("should not be null", sut.equals(null)); assertFalse("should not equal each other since they are different types", sut.equals("a string")); assertFalse("should not equal each other since they have different values", sut.equals(differentValues)); assertFalse("should not equal each other since one has duplicate values", sut.equals(repeatedValues)); assertTrue("should be equal since they hold the same values", sut.equals(same)); } @Test public void testRemove(){ sut.add("key", "value"); sut.add("key", "value"); sut.add("key", "value"); assertEquals(3, sut.getList().size()); assertEquals(3, sut.getMap().get("KEY").size()); assertEquals(3, sut.getAll().size()); sut.remove("key"); assertEquals(0, sut.getList().size()); assertNull(sut.getMap().get("KEY")); assertEquals(0, sut.getAll().size()); } @Test public void testAddingMultiplePayloadOxumJustUpsertsInstead(){ sut.add("Payload-Oxum", "16.1"); sut.add("Payload-Oxum", "20.5"); sut.add("Payload-Oxum", "100.7"); assertEquals(Arrays.asList("100.7"), sut.get("payload-oxum")); } }