/* Copyright 2008-2010 Gephi Authors : Mathieu Bastian <mathieu.bastian@gephi.org> Website : http://www.gephi.org This file is part of Gephi. Gephi is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Gephi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Gephi. If not, see <http://www.gnu.org/licenses/>. */ package org.gephi.io.importer.plugin.file; import java.io.File; import java.io.FileReader; import java.net.URL; import org.gephi.data.attributes.api.AttributeColumn; import org.gephi.data.attributes.api.AttributeType; import org.gephi.data.attributes.api.AttributeValue; import org.gephi.data.attributes.type.DynamicType; import org.gephi.data.attributes.type.StringList; import org.gephi.dynamic.DynamicUtilities; import org.gephi.io.importer.api.Container; import org.gephi.io.importer.api.ContainerFactory; import org.gephi.io.importer.api.ContainerUnloader; import org.gephi.io.importer.api.NodeDraftGetter; import org.gephi.io.importer.api.Report; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; import org.openide.util.Exceptions; import org.openide.util.Lookup; /** * * @author Mathieu Bastian */ public class ImporterGEXFTest { private ImporterGEXF importer; @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { importer = new ImporterGEXF(); try { URL url = getClass().getResource("/org/gephi/io/importer/plugin/file/testparser.gexf"); File file = new File(url.toURI()); importer.setReader(new FileReader(file)); } catch (Exception ex) { Exceptions.printStackTrace(ex); } } @After public void tearDown() { importer = null; } @Test public void testCalendar() { String date = "2000-01-01"; double d = DynamicUtilities.getDoubleFromXMLDateString(date); String date2 = DynamicUtilities.getXMLDateStringFromDouble(d); assertEquals(date, date2); } @Test public void testAttributeModel() { final Container container = Lookup.getDefault().lookup(ContainerFactory.class).newContainer(); container.setReport(new Report()); importer.execute(container.getLoader()); ContainerUnloader unloader = container.getUnloader(); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("0", AttributeType.DYNAMIC_STRING)); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("1", AttributeType.DYNAMIC_FLOAT)); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("2", AttributeType.LIST_STRING)); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("3", AttributeType.DYNAMIC_FLOAT)); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("4", AttributeType.DYNAMIC_FLOAT)); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("type", AttributeType.DYNAMIC_STRING)); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("Attribute 1", AttributeType.DYNAMIC_FLOAT)); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("Attribute 2", AttributeType.LIST_STRING)); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("Attribute 3", AttributeType.DYNAMIC_FLOAT)); assertNotNull(unloader.getAttributeModel().getNodeTable().getColumn("Attribute 4", AttributeType.DYNAMIC_FLOAT)); assertNotNull(unloader.getAttributeModel().getEdgeTable().getColumn("weight", AttributeType.DYNAMIC_FLOAT)); } @Test public void testNode() { final Container container = Lookup.getDefault().lookup(ContainerFactory.class).newContainer(); container.setReport(new Report()); importer.execute(container.getLoader()); NodeDraftGetter n1 = (NodeDraftGetter) container.getLoader().getNode("4c175b4b2c9016b90d1b4bc2"); NodeDraftGetter n2 = (NodeDraftGetter) container.getLoader().getNode("4c175b542c9016b9ce1b4bc2"); NodeDraftGetter n3 = (NodeDraftGetter) container.getLoader().getNode("4c175b4b2c9016b9071b4bc2"); NodeDraftGetter n4 = (NodeDraftGetter) container.getLoader().getNode("4c175b4b2c9016b9101b4bc2"); NodeDraftGetter n5 = (NodeDraftGetter) container.getLoader().getNode("4c175b4b2c9016b93a1b4bc2"); NodeDraftGetter n6 = (NodeDraftGetter) container.getLoader().getNode("4c175b4a2c9016b9a51a4bc2"); NodeDraftGetter n7 = (NodeDraftGetter) container.getLoader().getNode("4c175b4b2c9016b9ba1a4bc2"); NodeDraftGetter n8 = (NodeDraftGetter) container.getLoader().getNode("4c175b4b2c9016b9ed1a4bc2"); NodeDraftGetter n9 = (NodeDraftGetter) container.getLoader().getNode("4c175b4b2c9016b9f61a4bc2"); assertNotNull(n1); assertNotNull(n2); assertNotNull(n3); assertNotNull(n4); assertNotNull(n5); assertNotNull(n6); assertNotNull(n7); assertNotNull(n8); assertNotNull(n9); ContainerUnloader unloader = container.getUnloader(); AttributeColumn col0 = unloader.getAttributeModel().getNodeTable().getColumn("0"); AttributeColumn col1 = unloader.getAttributeModel().getNodeTable().getColumn("1"); AttributeColumn col2 = unloader.getAttributeModel().getNodeTable().getColumn("2"); AttributeColumn col3 = unloader.getAttributeModel().getNodeTable().getColumn("3"); AttributeColumn col4 = unloader.getAttributeModel().getNodeTable().getColumn("4"); try { assertEquals("Node 1", n1.getLabel()); assertEquals("2000-01-01", DynamicUtilities.getXMLDateStringFromDouble(n1.getTimeInterval().getValues().get(0)[0])); assertEquals("2000-12-31", DynamicUtilities.getXMLDateStringFromDouble(n1.getTimeInterval().getValues().get(0)[1])); AttributeValue[] values1 = n1.getAttributeRow().getValues(); assertEquals("0", values1[col0.getIndex()].getColumn().getId()); assertEquals("3", values1[col3.getIndex()].getColumn().getId()); assertEquals("Author", ((DynamicType) values1[col0.getIndex()].getValue()).getValue()); assertEquals(new Float(1), ((DynamicType) values1[col3.getIndex()].getValue()).getValue()); AttributeValue[] values2 = n2.getAttributeRow().getValues(); assertEquals("0", values2[col0.getIndex()].getColumn().getId()); assertEquals("2", values2[col2.getIndex()].getColumn().getId()); assertEquals("Author", ((DynamicType) values2[col0.getIndex()].getValue()).getValue()); assertEquals(new StringList("String1, String2, String 3"), values2[col2.getIndex()].getValue()); AttributeValue[] values3 = n3.getAttributeRow().getValues(); DynamicType val4 = (DynamicType) values3[col4.getIndex()].getValue(); double low = DynamicUtilities.getDoubleFromXMLDateString("2009-01-01"); double high = DynamicUtilities.getDoubleFromXMLDateString("2009-12-31"); assertEquals(new Float(3f), val4.getValue(low, high)); assertEquals("2000-01-01", DynamicUtilities.getXMLDateStringFromDouble(n3.getTimeInterval().getValues().get(0)[0])); assertEquals("2000-01-15", DynamicUtilities.getXMLDateStringFromDouble(n3.getTimeInterval().getValues().get(0)[1])); assertEquals("2001-01-30", DynamicUtilities.getXMLDateStringFromDouble(n3.getTimeInterval().getValues().get(1)[0])); assertEquals("2001-02-01", DynamicUtilities.getXMLDateStringFromDouble(n3.getTimeInterval().getValues().get(1)[1])); assertEquals(2, n3.getTimeInterval().getValues().size()); container.verify(); assertEquals("2000-01-01", DynamicUtilities.getXMLDateStringFromDouble(n4.getTimeInterval().getValues().get(0)[0])); assertEquals("2010-12-31", DynamicUtilities.getXMLDateStringFromDouble(n4.getTimeInterval().getValues().get(0)[1])); assertEquals("2000-01-01", DynamicUtilities.getXMLDateStringFromDouble(n3.getTimeInterval().getValues().get(0)[0])); assertEquals("2000-01-15", DynamicUtilities.getXMLDateStringFromDouble(n3.getTimeInterval().getValues().get(0)[1])); assertEquals("2001-01-30", DynamicUtilities.getXMLDateStringFromDouble(n3.getTimeInterval().getValues().get(1)[0])); assertEquals("2001-02-01", DynamicUtilities.getXMLDateStringFromDouble(n3.getTimeInterval().getValues().get(1)[1])); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } container.closeLoader(); System.out.println(container.getReport().getText()); } @Test public void testHierarchy() { final Container container = Lookup.getDefault().lookup(ContainerFactory.class).newContainer(); container.setReport(new Report()); importer.execute(container.getLoader()); NodeDraftGetter na = (NodeDraftGetter) container.getLoader().getNode("a"); NodeDraftGetter nb = (NodeDraftGetter) container.getLoader().getNode("b"); NodeDraftGetter nc = (NodeDraftGetter) container.getLoader().getNode("c"); NodeDraftGetter nd = (NodeDraftGetter) container.getLoader().getNode("d"); NodeDraftGetter ne = (NodeDraftGetter) container.getLoader().getNode("e"); NodeDraftGetter nf = (NodeDraftGetter) container.getLoader().getNode("f"); NodeDraftGetter ng = (NodeDraftGetter) container.getLoader().getNode("g"); NodeDraftGetter nh = (NodeDraftGetter) container.getLoader().getNode("h"); NodeDraftGetter ni = (NodeDraftGetter) container.getLoader().getNode("i"); NodeDraftGetter nj = (NodeDraftGetter) container.getLoader().getNode("j"); assertNotNull(na); assertNotNull(nb); assertNotNull(nc); assertNotNull(nd); assertNotNull(ne); assertNotNull(nf); assertNotNull(ng); assertNull(na.getParents()); assertEquals(1, nb.getParents().length); assertEquals(1, nc.getParents().length); assertEquals(1, nd.getParents().length); assertEquals(1, ne.getParents().length); assertEquals(1, nf.getParents().length); assertEquals(1, ng.getParents().length); assertEquals(na, nb.getParents()[0]); assertEquals(nb, nc.getParents()[0]); assertEquals(nb, nd.getParents()[0]); assertEquals(na, ne.getParents()[0]); assertEquals(ne, nf.getParents()[0]); assertEquals(ne, ng.getParents()[0]); assertEquals(nf, nh.getParents()[0]); assertEquals(nj, ni.getParents()[0]); System.out.println(container.getReport().getText()); } }