/* -*- tab-width: 4 -*-
*
* Electric(tm) VLSI Design System
*
* File: IdManagerTest.java
* Written by: Dmitry Nadezhin, Sun Microsystems.
*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
*
* Electric(tm) is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* Electric(tm) 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Electric(tm); see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, Mass 02111-1307, USA.
*/
package com.sun.electric.database.id;
import com.sun.electric.database.hierarchy.EDatabase;
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.*;
/**
* Unit tests of TechId
*/
public class TechIdTest {
IdManager idManager;
String techName = "tech";
TechId techId0;
TechId techId2;
ArcProtoId aId0_a;
ArcProtoId aId2_a;
ArcProtoId aId0_A;
PrimitiveNodeId nId2_a;
PrimitiveNodeId nId0_A;
PrimitivePortId p0_A_p;
public TechIdTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
idManager = new IdManager();
techId0 = idManager.newTechId(techName);
techId2 = idManager.newTechId("2");
aId0_a = techId0.newArcProtoId("a");
aId2_a = techId2.newArcProtoId("a");
aId0_A = techId0.newArcProtoId("A");
nId2_a = techId2.newPrimitiveNodeId("a");
nId0_A = techId0.newPrimitiveNodeId("A");
p0_A_p = nId0_A.newPortId("p");
}
@After
public void tearDown() {
}
/**
* Test of numArcProtoIds method, of class TechId.
*/
@Test
public void basic() {
System.out.println("hasic");
assertSame(idManager, techId0.idManager);
assertSame(0, techId0.techIndex);
assertSame(techName, techId0.techName);
assertEquals(4, techId0.modCount);
assertEquals(2, techId0.numArcProtoIds());
assertSame(aId0_a, techId0.getArcProtoId(0));
assertEquals("a", aId0_a.name);
assertEquals("tech:a", aId0_a.fullName);
assertSame(aId0_A, techId0.getArcProtoId(1));
assertEquals("A", aId0_A.name);
assertEquals("tech:A", aId0_A.fullName);
assertEquals(1, techId0.numPrimitiveNodeIds());
assertSame(nId0_A, techId0.getPrimitiveNodeId(0));
assertEquals("A", nId0_A.name);
assertEquals("tech:A", nId0_A.fullName);
assertEquals(1, nId0_A.numPrimitivePortIds());
assertSame(p0_A_p, nId0_A.getPortId(0));
assertEquals("p", p0_A_p.externalId);
assertEquals("tech:A:p", p0_A_p.toString());
assertSame(idManager, techId2.idManager);
assertSame(1, techId2.techIndex);
assertSame("2", techId2.techName);
assertEquals(2, techId2.modCount);
assertEquals(1, techId2.numArcProtoIds());
assertSame(aId2_a, techId2.getArcProtoId(0));
assertEquals("a", aId2_a.name);
assertEquals("2:a", aId2_a.fullName);
assertEquals(1, techId2.numPrimitiveNodeIds());
assertSame(nId2_a, techId2.getPrimitiveNodeId(0));
assertEquals("a", nId2_a.name);
assertEquals("2:a", nId2_a.fullName);
assertEquals(0, nId2_a.numPrimitivePortIds());
ArcProtoId aId = techId0.newArcProtoId("A");
assertSame(aId0_A, aId);
assertSame(2, techId0.numArcProtoIds());
assertSame(1, techId0.numPrimitiveNodeIds());
assertSame(4, techId0.modCount);
aId = techId0.newArcProtoId("B");
assertEquals("B", aId.name);
assertEquals("tech:B", aId.fullName);
assertSame(3, techId0.numArcProtoIds());
assertSame(aId, techId0.getArcProtoId(2));
assertSame(2, aId.chronIndex);
assertSame(techId0, aId.techId);
assertSame(1, techId0.numPrimitiveNodeIds());
assertSame(5, techId0.modCount);
assertSame(2, techId2.modCount);
PrimitiveNodeId nId = techId0.newPrimitiveNodeId("a");
assertSame(2, techId0.numPrimitiveNodeIds());
assertSame(nId, techId0.getPrimitiveNodeId(1));
assertSame(1, nId.chronIndex);
assertSame(techId0, nId.techId);
assertEquals("a", nId.name);
assertEquals("tech:a", nId.fullName);
assertSame(6, techId0.modCount);
assertSame(2, techId2.modCount);
nId = techId0.newPrimitiveNodeId("A");
assertSame(nId0_A, nId);
assertSame(6, techId0.modCount);
PrimitivePortId pId = nId0_A.newPortId("q");
assertSame(7, techId0.modCount);
assertSame(2, techId0.numPrimitiveNodeIds());
assertSame(2, nId0_A.numPrimitivePortIds());
assertSame(pId, nId0_A.getPortId(1));
assertSame(1, pId.chronIndex);
assertSame(nId0_A, pId.parentId);
assertEquals("q", pId.externalId);
assertEquals("tech:A:q", pId.toString());
pId = nId0_A.newPortId("p");
assertSame(7, techId0.modCount);
assertSame(p0_A_p, pId);
}
/**
* Test of getArcProtoId method, of class TechId.
*/
@Test(expected = IndexOutOfBoundsException.class)
public void getArcProtoIdBad() {
System.out.println("getArcProtoId bad");
techId0.getArcProtoId(2);
}
/**
* Test of newArcProtoId method, of class TechId.
*/
@Test(expected = NullPointerException.class)
public void newArcProtoIdNull() {
System.out.println("newArcProtoIdNull");
techId0.newArcProtoId(null);
}
/**
* Test of newArcProtoId method, of class TechId.
*/
@Test(expected = IllegalArgumentException.class)
public void newArcProtoIdBad() {
System.out.println("newArcProtoIdBad");
techId0.newArcProtoId("a^b");
}
/**
* Test of getPrimitiveNodeId method, of class TechId.
*/
@Test(expected = IndexOutOfBoundsException.class)
public void getPrimitiveNodeIdBad() {
System.out.println("getPrimitiveNodeId bad");
techId0.getPrimitiveNodeId(1);
}
/**
* Test of newPrimitiveNodeId method, of class TechId.
*/
@Test(expected = NullPointerException.class)
public void newPrimitiveNodeIdNull() {
System.out.println("newPrimitiveNodeIdNull");
techId0.newPrimitiveNodeId(null);
}
/**
* Test of newPrimitiveNodeId method, of class TechId.
*/
@Test(expected = IllegalArgumentException.class)
public void newPrimitiveNodeIdBad() {
System.out.println("newPrimitiveNodeIdBad");
techId0.newPrimitiveNodeId("a:b");
}
/**
* Test of getPrimitivePortId method, of class TechId.
*/
@Test(expected = IndexOutOfBoundsException.class)
public void getPrimitivePortIdBad() {
System.out.println("getPrimitivePortId bad");
nId0_A.getPortId(1);
}
/**
* Test of newPrimtivePortId method, of class TechId.
*/
@Test(expected = NullPointerException.class)
public void newPrimitivePortIdNull() {
System.out.println("newPrimitivePortIdNull");
nId0_A.newPortId(null);
}
/**
* Test of newPrimitivePortId method, of class TechId.
*/
@Test(expected = IllegalArgumentException.class)
public void newPrimitivePortIdBad() {
System.out.println("newPrimitivePortIdBad");
nId0_A.newPortId("a|b");
}
/**
* Test of inDatabase method, of class TechId.
*/
@Test
public void inDatabase() {
System.out.println("inDatabase");
EDatabase database = new EDatabase(idManager.getInitialSnapshot());
assertNull(techId2.inDatabase(database));
TechId genericId = idManager.newTechId("generic");
assertNull(genericId.inDatabase(database));
// Generic generic = new Generic(idManager);
// database.addTech(generic);
// assertSame(generic, genericId.inDatabase(database));
}
/**
* Test of inDatabase method, of class TechId.
*/
@Test(expected = NullPointerException.class)
public void inDatabaseNull() {
System.out.println("inDatabaseNull");
techId2.inDatabase(null);
}
/**
* Test of toString method, of class TechId.
*/
@Test
public void testToString() {
System.out.println("toString");
assertSame(techName, techId0.toString());
assertSame(techId2.techName, techId2.toString());
}
/**
* Test of check method, of class TechId.
*/
@Test
public void check() {
System.out.println("check");
techId0.check();
techId2.check();
}
/**
* Test of jelibSafeName method, of class TechId.
*/
@Test
public void jelibSafeName() {
System.out.println("jelibSafeName");
assertTrue(TechId.jelibSafeName(""));
assertTrue(TechId.jelibSafeName("?"));
assertTrue(TechId.jelibSafeName("/"));
assertTrue(TechId.jelibSafeName("'"));
assertFalse(TechId.jelibSafeName(" "));
assertFalse(TechId.jelibSafeName("\n"));
assertFalse(TechId.jelibSafeName("\\"));
assertFalse(TechId.jelibSafeName("\""));
assertFalse(TechId.jelibSafeName(":"));
assertFalse(TechId.jelibSafeName("|"));
assertFalse(TechId.jelibSafeName("^"));
}
/**
* Test of jelibSafeName method, of class com.sun.electric.database.id.TechId.
*/
@Test(expected = NullPointerException.class)
public void testJelibSafeNameNull() {
System.out.println("jelibSafeNameNull");
TechId.jelibSafeName(null);
}
}