/* * Copyright 2008-2017 the original author or authors. * * 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.codehaus.griffon.compile.core.processor.artifact; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.kordamp.jipsy.processor.testutils.NoOutputTestBase; import org.kordamp.jipsy.processor.testutils.TestInitializer; import org.kordamp.jipsy.processor.testutils.TestLogger; import java.util.Collection; import java.util.HashMap; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class ArtifactCollectorTest extends NoOutputTestBase { private TestInitializer initializer; private TestLogger logger; private ArtifactCollector collector; @Before public void loadFrameWork() { HashMap<String, String> map = new HashMap<String, String>(); map.put("griffon.core.artifact.GriffonModel", "provider1\n"); map.put("griffon.core.artifact.GriffonView", "provider1\nprovider2\n"); map.put("griffon.core.artifact.GriffonController", "provider1\nprovider3\n"); initializer = new TestInitializer(map); logger = new TestLogger(); collector = new ArtifactCollector(initializer, logger); } @Test(expected = NullPointerException.class) public void testGetArtifactNull() { collector.getArtifact(null); } @Test public void testGetArtifactExisting() { assertEquals(0, collector.artifacts().size()); collector.getArtifact("artifact"); assertEquals(1, collector.artifacts().size()); logger.reset(); Artifact artifact = collector.getArtifact("artifact"); assertTrue(logger.records().isEmpty()); assertEquals("artifact", artifact.getName()); assertEquals(1, collector.artifacts().size()); } @Test public void testGetArtifactNew() { assertEquals(0, collector.artifacts().size()); logger.reset(); assertEquals("artifact", collector.getArtifact("artifact").getName()); assertEquals(1, logger.records().size()); assertEquals(1, collector.artifacts().size()); } @Test public void testGetArtifactNewWithInitializer() { assertEquals(0, collector.artifacts().size()); Artifact artifact = collector.getArtifact("griffon.core.artifact.GriffonModel"); assertEquals("griffon.core.artifact.GriffonModel", artifact.getName()); assertTrue(artifact.contains("provider1")); assertEquals(1, collector.artifacts().size()); } @Test public void testGetArtifactNewWithBiggerInitializer() { assertEquals(0, collector.artifacts().size()); Artifact artifact = collector.getArtifact("griffon.core.artifact.GriffonView"); assertEquals("griffon.core.artifact.GriffonView", artifact.getName()); assertTrue(artifact.contains("provider1")); assertTrue(artifact.contains("provider2")); assertEquals(1, collector.artifacts().size()); } @Test public void testGetArtifactNewWithInitializerContainingRemovedElement() { assertEquals(0, collector.artifacts().size()); collector.removeProvider("provider1"); Artifact artifact = collector.getArtifact("griffon.core.artifact.GriffonModel"); Assert.assertFalse(artifact.contains("provider1")); assertEquals(1, collector.artifacts().size()); } @Test public void testArtifactsEmpty() { Collection<Artifact> artifacts = collector.artifacts(); assertEquals(0, artifacts.size()); } @Test public void testArtifactsOne() { Artifact artifact = collector.getArtifact("artifact"); Collection<Artifact> artifacts = collector.artifacts(); assertEquals(1, artifacts.size()); assertTrue(artifacts.contains(artifact)); } @Test public void testArtifactsMore() { Artifact model = collector.getArtifact("griffon.core.artifact.GriffonModel"); Artifact view = collector.getArtifact("griffon.core.artifact.GriffonView"); Collection<Artifact> artifacts = collector.artifacts(); assertEquals(2, artifacts.size()); assertTrue(artifacts.contains(model)); assertTrue(artifacts.contains(view)); } @Test public void testArtifactsDuplicate() { Artifact model = collector.getArtifact("griffon.core.artifact.GriffonModel"); Artifact view = collector.getArtifact("griffon.core.artifact.GriffonModel"); assertTrue(model == view); Collection<Artifact> artifacts = collector.artifacts(); assertEquals(1, artifacts.size()); assertTrue(artifacts.contains(model)); } @Test(expected = NullPointerException.class) public void testRemoveProviderNull() { collector.removeProvider(null); } @Test public void testRemoveProviderWhenEmpty() { collector.removeProvider("provider1"); assertEquals(1, logger.records().size()); assertEquals("Removing provider1\n", logger.getFileContent()); } @Test public void testRemoveProviderWhenInNotOneArtifact() { collector.getArtifact("griffon.core.artifact.GriffonModel"); logger.reset(); collector.removeProvider("provider2"); assertEquals(1, logger.records().size()); } @Test public void testRemoveProviderWhenInOneArtifact() { collector.getArtifact("griffon.core.artifact.GriffonModel"); logger.reset(); collector.removeProvider("provider1"); assertEquals(2, logger.records().size()); } @Test public void testRemoveProviderWhenInTwoArtifacts() { collector.getArtifact("griffon.core.artifact.GriffonModel"); collector.getArtifact("griffon.core.artifact.GriffonView"); logger.reset(); collector.removeProvider("provider1"); assertEquals(3, logger.records().size()); } @Test public void testRemoveProviderWhenInSomeArtifacts() { collector.getArtifact("griffon.core.artifact.GriffonModel"); collector.getArtifact("griffon.core.artifact.GriffonView"); collector.getArtifact("griffon.core.artifact.GriffonController"); logger.reset(); collector.removeProvider("provider2"); assertEquals(2, logger.records().size()); } @Test public void testToStringEmpty() { collector.toString(); } @Test public void testToStringNonExistingArtifact() { collector.getArtifact("nonExistingArtifact"); collector.toString(); } @Test public void testToStringExistingArtifact() { collector.getArtifact("griffon.core.artifact.GriffonModel"); collector.toString(); } @Test public void testToStringMoreExistingArtifacts() { collector.getArtifact("griffon.core.artifact.GriffonModel"); collector.getArtifact("griffon.core.artifact.GriffonView"); collector.toString(); } }