/*
* Copyright 2015 MovingBlocks
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.terasology.assets;
import org.junit.Assert;
import org.junit.Test;
import org.terasology.naming.Name;
import org.terasology.assets.exceptions.InvalidUrnException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* @author Immortius
*/
public class ResourceUrnTest {
private static final String TEST_MODULE = "test";
private static final String TEST_RESOURCE = "resource";
private static final String TEST_FRAGMENT = "fragment";
private static final String URN_STRING = TEST_MODULE + ":" + TEST_RESOURCE;
private static final String URN_WITH_FRAGMENT_STRING = URN_STRING + "#" + TEST_FRAGMENT;
private static final String URN_INSTANCE_STRING = TEST_MODULE + ":" + TEST_RESOURCE + "!instance";
private static final String URN_FRAGMENT_INSTANCE_STRING = TEST_MODULE + ":" + TEST_RESOURCE + "#" + TEST_FRAGMENT + "!instance";
@Test
public void moduleAndResourceConstructor() {
ResourceUrn urn = new ResourceUrn(TEST_MODULE, TEST_RESOURCE);
Assert.assertEquals(new Name(TEST_MODULE), urn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), urn.getResourceName());
assertTrue(urn.getFragmentName().isEmpty());
assertEquals(URN_STRING, urn.toString());
}
@Test
public void fragmentConstructor() {
ResourceUrn urn = new ResourceUrn(TEST_MODULE, TEST_RESOURCE, TEST_FRAGMENT);
assertEquals(new Name(TEST_MODULE), urn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), urn.getResourceName());
assertEquals(new Name(TEST_FRAGMENT), urn.getFragmentName());
assertEquals(URN_WITH_FRAGMENT_STRING, urn.toString());
}
@Test
public void instanceConstructor() {
ResourceUrn urn = new ResourceUrn(TEST_MODULE, TEST_RESOURCE, true);
assertEquals(new Name(TEST_MODULE), urn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), urn.getResourceName());
assertEquals(true, urn.isInstance());
assertEquals(URN_INSTANCE_STRING, urn.toString());
}
@Test
public void urnStringConstructor() {
ResourceUrn urn = new ResourceUrn(URN_STRING);
assertEquals(new Name(TEST_MODULE), urn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), urn.getResourceName());
assertFalse(urn.isInstance());
assertTrue(urn.getFragmentName().isEmpty());
assertEquals(URN_STRING, urn.toString());
}
@Test
public void urnWithFragmentStringConstructor() {
ResourceUrn urn = new ResourceUrn(URN_WITH_FRAGMENT_STRING);
assertEquals(new Name(TEST_MODULE), urn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), urn.getResourceName());
assertEquals(new Name(TEST_FRAGMENT), urn.getFragmentName());
assertEquals(URN_WITH_FRAGMENT_STRING, urn.toString());
}
@Test
public void urnStringContructorWithInstance() {
ResourceUrn urn = new ResourceUrn(URN_INSTANCE_STRING);
assertEquals(new Name(TEST_MODULE), urn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), urn.getResourceName());
assertTrue(urn.isInstance());
assertTrue(urn.getFragmentName().isEmpty());
assertEquals(URN_INSTANCE_STRING, urn.toString());
}
@Test
public void fragmentInstanceConstructor() {
ResourceUrn urn = new ResourceUrn(TEST_MODULE, TEST_RESOURCE, TEST_FRAGMENT, true);
assertEquals(new Name(TEST_MODULE), urn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), urn.getResourceName());
assertEquals(new Name(TEST_FRAGMENT), urn.getFragmentName());
assertEquals(true, urn.isInstance());
assertEquals(URN_FRAGMENT_INSTANCE_STRING, urn.toString());
}
@Test(expected = InvalidUrnException.class)
public void invalidUrnStringConstructor() {
new ResourceUrn("blerg");
}
@Test
public void getRootResourceUrn() {
ResourceUrn urn = new ResourceUrn(TEST_MODULE, TEST_RESOURCE, TEST_FRAGMENT);
ResourceUrn rootUrn = urn.getRootUrn();
assertEquals(new Name(TEST_MODULE), rootUrn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), rootUrn.getResourceName());
assertTrue(rootUrn.getFragmentName().isEmpty());
assertFalse(rootUrn.isInstance());
}
@Test
public void getOriginResourceUrn() {
ResourceUrn urn = new ResourceUrn(TEST_MODULE, TEST_RESOURCE, TEST_FRAGMENT, true);
ResourceUrn parentUrn = urn.getParentUrn();
assertEquals(new Name(TEST_MODULE), parentUrn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), parentUrn.getResourceName());
assertEquals(new Name(TEST_FRAGMENT), parentUrn.getFragmentName());
assertFalse(parentUrn.isInstance());
}
@Test
public void getInstanceResourceUrn() {
ResourceUrn urn = new ResourceUrn(TEST_MODULE, TEST_RESOURCE, TEST_FRAGMENT, false);
ResourceUrn instanceUrn = urn.getInstanceUrn();
assertEquals(new Name(TEST_MODULE), instanceUrn.getModuleName());
assertEquals(new Name(TEST_RESOURCE), instanceUrn.getResourceName());
assertEquals(new Name(TEST_FRAGMENT), instanceUrn.getFragmentName());
assertTrue(instanceUrn.isInstance());
}
}