package io.urmia.md.model; import com.google.common.base.Optional; import io.urmia.md.model.storage.ObjectName; import org.junit.Assert; import org.junit.Test; public class ObjectNameTest { @Test public void testParseObjectName_01() { final String uri = "/abbaspour/stor/somefile"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName objectName = objectNameOptional.get(); Assert.assertEquals("abbaspour", objectName.owner); Assert.assertEquals(ObjectName.Namespace.STOR, objectName.ns); Assert.assertEquals("/", objectName.parent); Assert.assertEquals("somefile", objectName.name); Assert.assertEquals("/somefile", objectName.path); } @Test public void testParseObjectName_root_01() { final String uri = "/abbaspour/stor/"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName objectName = objectNameOptional.get(); Assert.assertEquals("abbaspour", objectName.owner); Assert.assertEquals(ObjectName.Namespace.STOR, objectName.ns); Assert.assertEquals("/", objectName.parent); Assert.assertEquals("", objectName.name); Assert.assertEquals("/", objectName.path); } @Test public void testParseObjectName_subdir_01() { final String uri = "/abbaspour/stor/a/b/c"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName objectName = objectNameOptional.get(); Assert.assertEquals("abbaspour", objectName.owner); Assert.assertEquals(ObjectName.Namespace.STOR, objectName.ns); Assert.assertEquals("/a/b", objectName.parent); Assert.assertEquals("c", objectName.name); Assert.assertEquals("/a/b/c", objectName.path); } @Test public void testParseObjectName_subdir_02() { final String uri = "/abbaspour/stor/a/b"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName objectName = objectNameOptional.get(); Assert.assertEquals("abbaspour", objectName.owner); Assert.assertEquals(ObjectName.Namespace.STOR, objectName.ns); Assert.assertEquals("/a", objectName.parent); Assert.assertEquals("b", objectName.name); Assert.assertEquals("/a/b", objectName.path); } @Test public void testParseObjectName_subdir_03() { final String uri = "/abbaspour/stor/a/b/"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName objectName = objectNameOptional.get(); Assert.assertEquals("abbaspour", objectName.owner); Assert.assertEquals(ObjectName.Namespace.STOR, objectName.ns); Assert.assertEquals("/a", objectName.parent); Assert.assertEquals("b", objectName.name); Assert.assertEquals("/a/b", objectName.path); } @Test public void testParseObjectName_wBookmark() { final String uri = "/abbaspour/stor/somefile#bookmark"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName objectName = objectNameOptional.get(); Assert.assertEquals("abbaspour", objectName.owner); Assert.assertEquals(ObjectName.Namespace.STOR, objectName.ns); Assert.assertEquals("/", objectName.parent); Assert.assertEquals("somefile", objectName.name); Assert.assertEquals("/somefile", objectName.path); } @Test public void testParseObjectName_wQuery() { final String uri = "/abbaspour/stor/somefile?query"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName objectName = objectNameOptional.get(); Assert.assertEquals("abbaspour", objectName.owner); Assert.assertEquals(ObjectName.Namespace.STOR, objectName.ns); Assert.assertEquals("/", objectName.parent); Assert.assertEquals("somefile", objectName.name); Assert.assertEquals("/somefile", objectName.path); } @Test public void testParseObjectName_woOwner() { final String uri = "/stor/somefile?query"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertFalse(objectNameOptional.isPresent()); } @Test public void testParseObjectName_woNS() { final String uri = "/abbaspour//somefile?query"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertFalse(objectNameOptional.isPresent()); } @Test public void testParseObjectName_malformed_01() { final String uri = "/abbaspour/somefile?query"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertFalse(objectNameOptional.isPresent()); } @Test public void testObjectName_toString_01() { final String uri = "/owner/stor/a/b/c?query"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName on = objectNameOptional.get(); Assert.assertEquals("/owner/stor/a/b/c", on.toString()); } @Test public void testObjectName_toString_02() { final String uri = "/owner/jobs/a/b/c/?query"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName on = objectNameOptional.get(); Assert.assertEquals("/owner/jobs/a/b/c", on.toString()); } @Test public void testObjectName_rootNS() { final String uri = "/owner"; Optional<ObjectName> objectNameOptional = ObjectName.of(uri); Assert.assertTrue(objectNameOptional.isPresent()); ObjectName on = objectNameOptional.get(); Assert.assertEquals(ObjectName.Namespace.ROOT, on.ns); Assert.assertEquals("/", on.path); Assert.assertEquals("", on.name); } }