package org.getcomposer.core.test;
import java.io.IOException;
import java.net.URISyntaxException;
import org.junit.Test;
import com.dubture.getcomposer.core.ComposerPackage;
import com.dubture.getcomposer.core.collection.Psr;
import com.dubture.getcomposer.core.objects.Autoload;
import com.dubture.getcomposer.core.objects.Namespace;
import com.dubture.getcomposer.json.ParseException;
public class AutoloadTest extends ComposertTestCase {
@Test
public void testNamespace() {
Namespace ns = new Namespace();
ns.setNamespace("bla");
assertEquals("bla", ns.getNamespace());
}
@Test
public void testPsr0() throws IOException, URISyntaxException {
ComposerPackage composerPackage = new ComposerPackage();
composerPackage.getAutoload().getPsr0().clear();
Namespace ns = new Namespace();
ns.setNamespace("foo");
ns.add("bar");
composerPackage.getAutoload().getPsr0().add(ns);
assertEquals(1, composerPackage.getAutoload().getPsr0().size());
Namespace namespace = composerPackage.getAutoload().getPsr0().get("foo");
assertNotNull(namespace);
assertEquals("bar", namespace.getPaths().get(0));
}
@Test
public void testPsr0Escaping() throws ParseException {
Psr psr0 = new Psr();
Namespace ns = new Namespace("Symfony\\Component\\Yaml", "symfony/yaml");
psr0.add(ns);
String json = psr0.toJson();
psr0 = new Psr(json);
assertEquals(1, psr0.getNamespaces().size());
}
@Test
public void testParse() throws IOException, ParseException, URISyntaxException {
ComposerPackage composerPackage = new ComposerPackage(loadFile("autoload.json"));
Autoload autoload = composerPackage.getAutoload();
Psr psr0 = autoload.getPsr0();
assertNotNull(psr0);
assertEquals(4, psr0.size());
assertTrue(psr0.has(""));
assertTrue(psr0.has("gossi"));
assertTrue(psr0.has("Monolog"));
assertTrue(psr0.has("UniqueGlobalClass"));
assertEquals(2, psr0.get("Monolog").size());
assertEquals("etc/", psr0.get("").getFirst());
assertEquals(3, autoload.getClassMap().size());
assertEquals(1, autoload.getFiles().size());
}
@Test
public void testFromString() throws ParseException {
Psr psr0 = new Psr("{ \"Foo\" : \"Bar\", \"What\" : \"Ever\"}");
assertEquals(2, psr0.size());
assertEquals("Foo", psr0.getFirst().getNamespace());
}
@Test
public void testSearch() throws IOException, ParseException, URISyntaxException {
ComposerPackage composerPackage = new ComposerPackage(loadFile("autoload.json"));
Autoload autoload = composerPackage.getAutoload();
Psr psr0 = autoload.getPsr0();
assertTrue(psr0.hasPath("src/gossi"));
Namespace ns = psr0.getNamespaceForPath("src/gossi");
assertNotNull(ns);
assertEquals("gossi", ns.getNamespace());
}
@Test
public void testNamespaceEquals() {
Namespace n1, n2;
// positives
n1 = new Namespace();
n2 = n1;
assertTrue(n1.equals(n2));
n1.setNamespace("test");
n2 = n1.clone();
assertTrue(n1.equals(n2));
n1 = new Namespace();
n1.add("bla");
n2 = n1.clone();
assertTrue(n1.equals(n2));
n1.add("boink");
n2 = n1.clone();
assertTrue(n1.equals(n2));
// negatives
n1 = new Namespace();
n1.setNamespace("test");
n2 = new Namespace();
n2.setNamespace("wurst");
assertFalse(n1.equals(n2));
n1 = new Namespace();
n1.add("bla");
n2 = new Namespace();
n2.add("boink");
assertFalse(n1.equals(n2));
n1 = new Namespace();
n1.setNamespace("test");
n2 = new Namespace();
n2.add("boink");
assertFalse(n1.equals(n2));
n1 = new Namespace();
n1.add("boink");
n2 = new Namespace();
n2.setNamespace("test");
assertFalse(n1.equals(n2));
n1 = new Namespace();
n1.setNamespace("test");
n1.add("bla");
n2 = new Namespace();
n2.setNamespace("test");
n2.add("boink");
assertFalse(n1.equals(n2));
}
}