/* * Copyright 2012 Odysseus Software GmbH * * 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 de.odysseus.ithaka.digraph; import java.util.HashSet; import java.util.Set; import org.junit.Assert; import org.junit.Test; public class TrivialDigraphTest { @Test public void testAdd() { Assert.assertTrue(new TrivialDigraph<Object,Object>().add("foo")); } @Test(expected=UnsupportedOperationException.class) public void testAdd2() { TrivialDigraph<Object,Object> g = new TrivialDigraph<Object,Object>(); g.add("foo"); g.add("bar"); } @Test(expected=IllegalArgumentException.class) public void testAdd3() { new TrivialDigraph<Object,Object>().add(null); } @Test public void testContainsObjectObject() { Assert.assertFalse(new TrivialDigraph<Object,Object>().contains("foo", "bar")); } @Test public void testContainsObject() { TrivialDigraph<Object,Object> g = new TrivialDigraph<Object,Object>(); Assert.assertFalse(g.contains("foo")); g.add("foo"); Assert.assertTrue(g.contains("foo")); } @Test public void testGet() { Assert.assertNull(new TrivialDigraph<Object,Object>().get("foo", "bar")); } @Test public void testGetInDegree() { Assert.assertEquals(0, new TrivialDigraph<Object,Object>().getInDegree("foo")); } @Test public void testGetOutDegree() { Assert.assertEquals(0, new TrivialDigraph<Object,Object>().getOutDegree("foo")); } @Test public void testGetEdgeCount() { Assert.assertEquals(0, new TrivialDigraph<Object,Object>().getEdgeCount()); } @Test public void testgetVertexCount() { TrivialDigraph<Object,Object> g = new TrivialDigraph<Object,Object>(); Assert.assertEquals(0, g.getVertexCount()); g.add("foo"); Assert.assertEquals(1, g.getVertexCount()); } @Test public void testNodes() { TrivialDigraph<Object,Object> g = new TrivialDigraph<Object,Object>(); Assert.assertFalse(g.vertices().iterator().hasNext()); g.add("foo"); Assert.assertTrue(g.vertices().iterator().hasNext()); Assert.assertEquals("foo", g.vertices().iterator().next()); } @Test(expected=UnsupportedOperationException.class) public void testPut() { new TrivialDigraph<Object,Object>().put("foo", "bar", "foobar"); } @Test public void testRemoveVV() { Assert.assertNull(new TrivialDigraph<Object,Object>().remove("foo", "bar")); } @Test public void testRemoveV() { TrivialDigraph<Object,Object> g = new TrivialDigraph<Object,Object>(); Assert.assertFalse(g.remove("foo")); g.add("foo"); Assert.assertTrue(g.remove("foo")); Assert.assertEquals(0, g.getVertexCount()); } @Test public void testRemoveAll() { TrivialDigraph<Object,Object> g = new TrivialDigraph<Object,Object>(); g.add("foo"); HashSet<Object> set = new HashSet<Object>(); set.add("bar"); g.removeAll(set); Assert.assertTrue(g.contains("foo")); set.add("foo"); g.removeAll(set); Assert.assertFalse(g.contains("foo")); Assert.assertEquals(0, g.getVertexCount()); } @Test public void testReverse() { TrivialDigraph<Object,Object> g = new TrivialDigraph<Object,Object>(); Assert.assertSame(g, g.reverse()); } @Test public void testSubgraph() { TrivialDigraph<Object,Object> g = new TrivialDigraph<Object,Object>(); Set<Object> set = new HashSet<Object>(); set.add("foo"); Assert.assertEquals(0, g.subgraph(set).getVertexCount()); g.add("foo"); Assert.assertEquals(1, g.subgraph(set).getVertexCount()); } @Test public void testSources() { Assert.assertFalse(new TrivialDigraph<Object,Object>().sources("foo").iterator().hasNext()); } @Test public void testTargets() { Assert.assertFalse(new TrivialDigraph<Object,Object>().targets("foo").iterator().hasNext()); } @Test public void testIsAcyclic() { TrivialDigraph<Object,Object> g = new TrivialDigraph<Object,Object>(); Assert.assertTrue(g.isAcyclic()); g.add("foo"); Assert.assertTrue(g.isAcyclic()); } }