blob: 63afa71e04f81a856481680c2f8dbe1b184f05cc [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 University of Illinois at Urbana-Champaign and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* UIUC - Initial API and implementation
*******************************************************************************/
package org.eclipse.rephraserengine.internal.core.tests.vpg;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import org.eclipse.rephraserengine.core.vpg.TokenRef;
import org.eclipse.rephraserengine.core.vpg.VPG;
import org.eclipse.rephraserengine.core.vpg.VPGDB;
import org.eclipse.rephraserengine.core.vpg.VPGEdge;
import org.eclipse.rephraserengine.core.vpg.VPGLog;
import org.eclipse.rephraserengine.core.vpg.db.cdt.CDTDB;
import junit.framework.TestCase;
public class VPGTests extends TestCase
{
private static class MyVPGDB extends CDTDB<Boolean, Integer, TokenRef<Integer>, VPGLog<Integer, TokenRef<Integer>>>
{
public MyVPGDB(File file)
{
super(file);
}
@Override
protected Serializable deserialize(InputStream binaryStream) throws IOException, ClassNotFoundException
{
return null;
}
@Override
protected long getModificationStamp(String filename)
{
return 0;
}
@Override
protected byte[] serialize(Serializable annotation) throws IOException
{
return new byte[] {};
}
}
private static class MyVPG extends VPG<Boolean, Integer, TokenRef<Integer>, MyVPGDB, VPGLog<Integer, TokenRef<Integer>>>
{
public MyVPG(File file)
{
super(new VPGLog<Integer, TokenRef<Integer>>(), new MyVPGDB(file));
}
@Override
public boolean isVirtualFile(String filename)
{
return false;
}
@Override
protected void calculateDependencies(String filename)
{
}
@Override
protected boolean shouldProcessFile(String filename)
{
return true;
}
@Override
public TokenRef<Integer> createTokenRef(String filename, int offset, int length)
{
return new TokenRef<Integer>(filename, offset, length);
}
@Override
public Integer findToken(TokenRef<Integer> tokenRef)
{
return tokenRef.getOffset();
}
@Override
protected TokenRef<Integer> getTokenRef(Integer forToken)
{
return new TokenRef<Integer>("Hello", forToken, 0);
}
@Override
protected Boolean parse(String filename)
{
return Boolean.TRUE;
}
@Override
protected void populateVPG(String filename, Boolean ast)
{
db.ensure(new VPGEdge<Boolean, Integer, TokenRef<Integer>>(this, getTokenRef(1), getTokenRef(2), 3));
db.ensure(new VPGEdge<Boolean, Integer, TokenRef<Integer>>(this, getTokenRef(1), getTokenRef(2), 3));
db.ensure(new VPGEdge<Boolean, Integer, TokenRef<Integer>>(this, getTokenRef(1), getTokenRef(2), 4));
db.ensure(new VPGEdge<Boolean, Integer, TokenRef<Integer>>(this, getTokenRef(5), getTokenRef(6), 7));
}
}
private MyVPG vpg = null;
@Override
protected void setUp() throws Exception
{
File dbFile = File.createTempFile("vpg", null);
dbFile.deleteOnExit();
vpg = new MyVPG(dbFile);
}
@SuppressWarnings("unused")
public void testEdges()
{
vpg.acquireTransientAST("Hello");
int count = 0;
for (TokenRef<Integer> t : vpg.db.getIncomingEdgeSources(vpg.getTokenRef(2), VPGDB.ALL_EDGES))
count++;
assertEquals(2, count);
count = 0;
for (TokenRef<Integer> t : vpg.db.getOutgoingEdgeTargets(vpg.getTokenRef(1), VPGDB.ALL_EDGES))
count++;
assertEquals(2, count);
count = 0;
for (TokenRef<Integer> t : vpg.db.getIncomingEdgeSources(vpg.getTokenRef(2), 3))
count++;
assertEquals(1, count);
count = 0;
for (TokenRef<Integer> t : vpg.db.getOutgoingEdgeTargets(vpg.getTokenRef(1), 3))
count++;
assertEquals(1, count);
}
}