package com.sap.furcas.runtime.textblocks.model;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.sap.furcas.metamodel.FURCAS.textblocks.DocumentNode;
import com.sap.furcas.metamodel.FURCAS.textblocks.LexedToken;
import com.sap.furcas.metamodel.FURCAS.textblocks.Version;
import com.sap.furcas.runtime.textblocks.testbase.FixtureProvidingTextBlockTest;
public class TestVersionedTextblocksNavigator extends FixtureProvidingTextBlockTest{
private final VersionedTextBlockNavigator nav = new VersionedTextBlockNavigator(Version.REFERENCE);
@Test
public void testFloorSearchByOffset() {
LexedToken t1 = modelFactory.createLexedToken();
LexedToken t2 = modelFactory.createLexedToken();
LexedToken t3 = modelFactory.createLexedToken();
LexedToken t4 = modelFactory.createLexedToken();
LexedToken t5 = modelFactory.createLexedToken();
List<DocumentNode> nodes = new ArrayList<DocumentNode>();
nodes.add(t1);
nodes.add(t2);
nodes.add(t3);
nodes.add(t4);
nodes.add(t5);
t1.setOffset(0);
t2.setOffset(5);
t3.setOffset(6);
t4.setOffset(10);
t5.setOffset(20);
assertEquals(t1, nav.floorSearchByOffset(nodes, 0));
assertEquals(t1, nav.floorSearchByOffset(nodes, 1));
assertEquals(t1, nav.floorSearchByOffset(nodes, 4));
assertEquals(t2, nav.floorSearchByOffset(nodes, 5));
assertEquals(t3, nav.floorSearchByOffset(nodes, 6));
assertEquals(t3, nav.floorSearchByOffset(nodes, 9));
assertEquals(t4, nav.floorSearchByOffset(nodes, 10));
assertEquals(t4, nav.floorSearchByOffset(nodes, 19));
assertEquals(t5, nav.floorSearchByOffset(nodes, 20));
assertEquals(t5, nav.floorSearchByOffset(nodes, 21));
t1.setOffset(3);
assertEquals(null, nav.floorSearchByOffset(nodes, 0));
assertEquals(null, nav.floorSearchByOffset(nodes, 1));
assertEquals(null, nav.floorSearchByOffset(nodes, 2));
}
@Test
public void testGetFloorToken() {
assertEquals(lexed1, nav.getFloorToken(main, 0));
assertEquals(lexed1, nav.getFloorToken(main, 1));
assertEquals(lexed1, nav.getFloorToken(main, 4));
assertEquals(lexed2, nav.getFloorToken(main, 5));
assertEquals(lexed3, nav.getFloorToken(main, 6));
assertEquals(lexed3, nav.getFloorToken(main, 8));
assertEquals(lexed3, nav.getFloorToken(main, 13));
assertEquals(subToken, nav.getFloorToken(main, 14));
assertEquals(lexed4, nav.getFloorToken(main, 15));
assertEquals(lexed4, nav.getFloorToken(main, 16));
assertEquals(lexed4, nav.getFloorToken(main, 19));
assertEquals(lexed4, nav.getFloorToken(main, 20));
main.getSubNodes().clear();
main.getSubNodes().add(bos);
main.getSubNodes().add(eos);
assertEquals(null, nav.getFloorToken(main, 0));
}
}