Search in sources :

Example 11 with MockView

use of com.google.security.zynamics.binnavi.disassembly.MockView in project binnavi by google.

the class FunctionBlockTest method testConstructor.

@Test
public void testConstructor() {
    final MockSqlProvider provider = new MockSqlProvider();
    final CModule internalModule = new CModule(1, "", "", new Date(), new Date(), "00000000000000000000000000000000", "0000000000000000000000000000000000000000", 0, 0, new CAddress(0), new CAddress(0), null, null, Integer.MAX_VALUE, false, provider);
    final CFunction parentFunction = new CFunction(internalModule, new MockView(), new CAddress(0x123), "Mock Function", "Mock Function", "Mock Description", 0, 0, 0, 0, FunctionType.NORMAL, "", 0, null, null, null, provider);
    final Function function = new Function(ModuleFactory.get(), parentFunction);
    final FunctionBlock block = new FunctionBlock(function);
    assertEquals(function, block.getFunction());
    assertEquals("Function Block ['123 Mock Function']", block.toString());
}
Also used : CFunction(com.google.security.zynamics.binnavi.disassembly.CFunction) MockView(com.google.security.zynamics.binnavi.disassembly.MockView) MockSqlProvider(com.google.security.zynamics.binnavi.Database.MockClasses.MockSqlProvider) CFunction(com.google.security.zynamics.binnavi.disassembly.CFunction) CModule(com.google.security.zynamics.binnavi.disassembly.Modules.CModule) Date(java.util.Date) CAddress(com.google.security.zynamics.zylib.disassembly.CAddress) Test(org.junit.Test)

Example 12 with MockView

use of com.google.security.zynamics.binnavi.disassembly.MockView in project binnavi by google.

the class FunctionEdgeTest method testConstructor.

@Test
public void testConstructor() {
    final MockSqlProvider provider = new MockSqlProvider();
    final CModule internalModule = new CModule(1, "", "", new Date(), new Date(), "00000000000000000000000000000000", "0000000000000000000000000000000000000000", 0, 0, new CAddress(0), new CAddress(0), null, null, Integer.MAX_VALUE, false, provider);
    final CFunction parentFunction = new CFunction(internalModule, new MockView(), new CAddress(0x123), "Mock Function", "Mock Function", "Mock Description", 0, 0, 0, 0, FunctionType.NORMAL, "", 0, null, null, null, provider);
    final Function function = new Function(ModuleFactory.get(), parentFunction);
    final FunctionBlock block = new FunctionBlock(function);
    final FunctionBlock childBlock = new FunctionBlock(function);
    final FunctionEdge edge = new FunctionEdge(block, childBlock);
    assertEquals("Function Edge [Mock Function -> Mock Function]", edge.toString());
    assertEquals(block, edge.getSource());
    assertEquals(childBlock, edge.getTarget());
    assertEquals(0, block.getParents().size());
    assertEquals(1, block.getChildren().size());
    assertEquals(childBlock, block.getChildren().get(0));
    assertEquals(0, childBlock.getChildren().size());
    assertEquals(1, childBlock.getParents().size());
    assertEquals(block, childBlock.getParents().get(0));
}
Also used : CFunction(com.google.security.zynamics.binnavi.disassembly.CFunction) MockView(com.google.security.zynamics.binnavi.disassembly.MockView) MockSqlProvider(com.google.security.zynamics.binnavi.Database.MockClasses.MockSqlProvider) CFunction(com.google.security.zynamics.binnavi.disassembly.CFunction) CModule(com.google.security.zynamics.binnavi.disassembly.Modules.CModule) Date(java.util.Date) CAddress(com.google.security.zynamics.zylib.disassembly.CAddress) Test(org.junit.Test)

Example 13 with MockView

use of com.google.security.zynamics.binnavi.disassembly.MockView in project binnavi by google.

the class CUnInlinerTest method testUninlineSingleBlock.

@Test
public void testUninlineSingleBlock() {
    final List<INaviViewNode> nodes = new FilledList<INaviViewNode>();
    final List<INaviEdge> edges = new FilledList<INaviEdge>();
    final INaviFunction mockFunction = new MockFunction(m_provider);
    final INaviFunction mockFunction2 = new MockFunction(m_provider);
    final MockInstruction mi1 = new MockInstruction(0x123);
    final MockInstruction mi2 = new MockInstruction(0x124);
    final MockInstruction mi3 = new MockInstruction(0x125);
    final CCodeNode upperNode = new CCodeNode(0, 0, 0, 0, 0, Color.RED, Color.RED, false, true, null, mockFunction, new HashSet<CTag>(), m_provider);
    final CCodeNode inlinedNode = new CCodeNode(0, 0, 0, 0, 0, Color.RED, Color.RED, false, true, null, mockFunction2, new HashSet<CTag>(), m_provider);
    final CCodeNode lowerNode = new CCodeNode(0, 0, 0, 0, 0, Color.RED, Color.RED, false, true, null, mockFunction, new HashSet<CTag>(), m_provider);
    final CTextNode textNode = new CTextNode(0, 0, 0, 0, 0, Color.RED, false, true, new HashSet<CTag>(), null, m_provider);
    upperNode.addInstruction(mi1, null);
    inlinedNode.addInstruction(mi2, null);
    lowerNode.addInstruction(mi3, null);
    nodes.add(upperNode);
    nodes.add(inlinedNode);
    nodes.add(textNode);
    nodes.add(lowerNode);
    final CNaviViewEdge enteringEdge = new CNaviViewEdge(0, upperNode, inlinedNode, EdgeType.ENTER_INLINED_FUNCTION, 0, 0, 0, 0, Color.BLACK, false, true, null, new FilledList<CBend>(), m_provider);
    final CNaviViewEdge leavingEdge = new CNaviViewEdge(0, inlinedNode, lowerNode, EdgeType.LEAVE_INLINED_FUNCTION, 0, 0, 0, 0, Color.BLACK, false, true, null, new FilledList<CBend>(), m_provider);
    final CNaviViewEdge textEdge = new CNaviViewEdge(0, textNode, inlinedNode, EdgeType.TEXTNODE_EDGE, 0, 0, 0, 0, Color.BLACK, false, true, null, new FilledList<CBend>(), m_provider);
    edges.add(enteringEdge);
    edges.add(leavingEdge);
    edges.add(textEdge);
    connect(upperNode, inlinedNode, enteringEdge);
    connect(inlinedNode, lowerNode, leavingEdge);
    connect(textNode, inlinedNode, textEdge);
    final MockView view = new MockView(nodes, edges, m_provider);
    CUnInliner.unInline(view, inlinedNode);
    assertEquals(1, view.getNodeCount());
    assertEquals(0, view.getEdgeCount());
    final INaviCodeNode cnode = (INaviCodeNode) view.getGraph().getNodes().get(0);
    assertEquals(2, Iterables.size(cnode.getInstructions()));
    assertEquals(mi1.toString(), Iterables.get(cnode.getInstructions(), 0).toString());
    assertEquals(mi3.toString(), Iterables.get(cnode.getInstructions(), 1).toString());
}
Also used : MockFunction(com.google.security.zynamics.binnavi.disassembly.MockFunction) FilledList(com.google.security.zynamics.zylib.types.lists.FilledList) MockView(com.google.security.zynamics.binnavi.disassembly.MockView) CTag(com.google.security.zynamics.binnavi.Tagging.CTag) INaviEdge(com.google.security.zynamics.binnavi.disassembly.INaviEdge) CNaviViewEdge(com.google.security.zynamics.binnavi.disassembly.CNaviViewEdge) INaviCodeNode(com.google.security.zynamics.binnavi.disassembly.INaviCodeNode) MockInstruction(com.google.security.zynamics.binnavi.disassembly.MockInstruction) CBend(com.google.security.zynamics.zylib.gui.zygraph.edges.CBend) CCodeNode(com.google.security.zynamics.binnavi.disassembly.CCodeNode) INaviViewNode(com.google.security.zynamics.binnavi.disassembly.INaviViewNode) CTextNode(com.google.security.zynamics.binnavi.disassembly.CTextNode) INaviFunction(com.google.security.zynamics.binnavi.disassembly.INaviFunction) Test(org.junit.Test)

Example 14 with MockView

use of com.google.security.zynamics.binnavi.disassembly.MockView in project binnavi by google.

the class CUnInlinerTest method testUninlineSingleBlockConnectNeighbors.

@Test
public void testUninlineSingleBlockConnectNeighbors() {
    final List<INaviViewNode> nodes = new FilledList<INaviViewNode>();
    final List<INaviEdge> edges = new FilledList<INaviEdge>();
    final INaviFunction mockFunction = new MockFunction(m_provider);
    final INaviFunction mockFunction2 = new MockFunction(m_provider);
    final MockInstruction mi1 = new MockInstruction(0x123);
    final MockInstruction mi2 = new MockInstruction(0x124);
    final MockInstruction mi3 = new MockInstruction(0x125);
    final CCodeNode parentNode = new CCodeNode(1, 0, 0, 0, 0, Color.RED, Color.RED, false, true, null, mockFunction, new HashSet<CTag>(), m_provider);
    final CCodeNode upperNode = new CCodeNode(2, 0, 0, 0, 0, Color.RED, Color.RED, false, true, null, mockFunction, new HashSet<CTag>(), m_provider);
    final CCodeNode inlinedNode = new CCodeNode(3, 0, 0, 0, 0, Color.RED, Color.RED, false, true, null, mockFunction2, new HashSet<CTag>(), m_provider);
    final CCodeNode lowerNode = new CCodeNode(4, 0, 0, 0, 0, Color.RED, Color.RED, false, true, null, mockFunction, new HashSet<CTag>(), m_provider);
    final CCodeNode childNode1 = new CCodeNode(5, 0, 0, 0, 0, Color.RED, Color.RED, false, true, null, mockFunction, new HashSet<CTag>(), m_provider);
    final CCodeNode childNode2 = new CCodeNode(6, 0, 0, 0, 0, Color.RED, Color.RED, false, true, null, mockFunction, new HashSet<CTag>(), m_provider);
    upperNode.addInstruction(mi1, null);
    inlinedNode.addInstruction(mi2, null);
    lowerNode.addInstruction(mi3, null);
    nodes.add(parentNode);
    nodes.add(upperNode);
    nodes.add(inlinedNode);
    nodes.add(lowerNode);
    nodes.add(childNode1);
    nodes.add(childNode2);
    final CNaviViewEdge parentEdge = new CNaviViewEdge(0, parentNode, upperNode, EdgeType.JUMP_UNCONDITIONAL, 0, 0, 0, 0, Color.BLACK, false, true, null, new FilledList<CBend>(), m_provider);
    final CNaviViewEdge enteringEdge = new CNaviViewEdge(1, upperNode, inlinedNode, EdgeType.ENTER_INLINED_FUNCTION, 0, 0, 0, 0, Color.BLACK, false, true, null, new FilledList<CBend>(), m_provider);
    final CNaviViewEdge leavingEdge = new CNaviViewEdge(2, inlinedNode, lowerNode, EdgeType.LEAVE_INLINED_FUNCTION, 0, 0, 0, 0, Color.BLACK, false, true, null, new FilledList<CBend>(), m_provider);
    final CNaviViewEdge childEdge1 = new CNaviViewEdge(3, lowerNode, childNode1, EdgeType.JUMP_CONDITIONAL_FALSE, 0, 0, 0, 0, Color.BLACK, false, true, null, new FilledList<CBend>(), m_provider);
    final CNaviViewEdge childEdge2 = new CNaviViewEdge(4, lowerNode, childNode2, EdgeType.JUMP_CONDITIONAL_TRUE, 0, 0, 0, 0, Color.BLACK, false, true, null, new FilledList<CBend>(), m_provider);
    edges.add(parentEdge);
    edges.add(enteringEdge);
    edges.add(leavingEdge);
    edges.add(childEdge1);
    edges.add(childEdge2);
    connect(parentNode, upperNode, parentEdge);
    connect(upperNode, inlinedNode, enteringEdge);
    connect(inlinedNode, lowerNode, leavingEdge);
    connect(lowerNode, childNode1, childEdge1);
    connect(lowerNode, childNode2, childEdge2);
    final MockView view = new MockView(nodes, edges, m_provider);
    CUnInliner.unInline(view, inlinedNode);
    assertEquals(4, view.getNodeCount());
    assertEquals(3, view.getEdgeCount());
    assertEquals(EdgeType.JUMP_UNCONDITIONAL, view.getGraph().getEdges().get(0).getType());
    assertEquals(EdgeType.JUMP_CONDITIONAL_FALSE, view.getGraph().getEdges().get(1).getType());
    assertEquals(EdgeType.JUMP_CONDITIONAL_TRUE, view.getGraph().getEdges().get(2).getType());
    final INaviCodeNode cnode = (INaviCodeNode) view.getGraph().getNodes().get(3);
    assertEquals(2, Iterables.size(cnode.getInstructions()));
    assertEquals(mi1.toString(), Iterables.get(cnode.getInstructions(), 0).toString());
    assertEquals(mi3.toString(), Iterables.get(cnode.getInstructions(), 1).toString());
}
Also used : MockFunction(com.google.security.zynamics.binnavi.disassembly.MockFunction) FilledList(com.google.security.zynamics.zylib.types.lists.FilledList) MockView(com.google.security.zynamics.binnavi.disassembly.MockView) CTag(com.google.security.zynamics.binnavi.Tagging.CTag) INaviEdge(com.google.security.zynamics.binnavi.disassembly.INaviEdge) CNaviViewEdge(com.google.security.zynamics.binnavi.disassembly.CNaviViewEdge) INaviCodeNode(com.google.security.zynamics.binnavi.disassembly.INaviCodeNode) MockInstruction(com.google.security.zynamics.binnavi.disassembly.MockInstruction) CBend(com.google.security.zynamics.zylib.gui.zygraph.edges.CBend) CCodeNode(com.google.security.zynamics.binnavi.disassembly.CCodeNode) INaviViewNode(com.google.security.zynamics.binnavi.disassembly.INaviViewNode) INaviFunction(com.google.security.zynamics.binnavi.disassembly.INaviFunction) Test(org.junit.Test)

Example 15 with MockView

use of com.google.security.zynamics.binnavi.disassembly.MockView in project binnavi by google.

the class CSelectionHistoryTest method testUndo.

@Test
public void testUndo() throws FileReadException, LoadCancelledException {
    ConfigManager.instance().read();
    final ZyGraph graph = CGraphBuilder.buildGraph(new MockView());
    final CSelectionHistory history = new CSelectionHistory(graph, 4);
    final CSelectionSnapshot snapshot1 = new CSelectionSnapshot(new ArrayList<NaviNode>());
    final CSelectionSnapshot snapshot2 = new CSelectionSnapshot(new ArrayList<NaviNode>());
    final CSelectionSnapshot snapshot3 = new CSelectionSnapshot(new ArrayList<NaviNode>());
    final CSelectionSnapshot snapshot4 = new CSelectionSnapshot(new ArrayList<NaviNode>());
    history.addSnapshot(snapshot1);
    history.addSnapshot(snapshot2);
    history.addSnapshot(snapshot3);
    history.addSnapshot(snapshot4);
    // First Undo
    assertTrue(history.canUndo());
    assertTrue(history.canRedo());
    assertEquals(snapshot3, history.getUndoSnapshot(true));
    // Second Undo
    assertTrue(history.canUndo());
    assertTrue(history.canRedo());
    assertEquals(snapshot2, history.getUndoSnapshot(true));
    // Third Undo
    assertTrue(history.canUndo());
    assertTrue(history.canRedo());
    assertEquals(snapshot1, history.getUndoSnapshot(true));
    // Fourth Undo (Fail) + First Redo
    assertTrue(history.canUndo());
    assertTrue(history.canRedo());
    assertEquals(snapshot1, history.getUndoSnapshot(true));
    assertEquals(snapshot2, history.getUndoSnapshot(false));
    assertTrue(history.canUndo());
    assertTrue(history.canRedo());
    // Second Redo
    assertTrue(history.canUndo());
    assertTrue(history.canRedo());
    assertEquals(snapshot3, history.getUndoSnapshot(false));
    // Third Redo
    assertTrue(history.canUndo());
    assertTrue(history.canRedo());
    assertEquals(snapshot4, history.getUndoSnapshot(false));
    // Fourth Redo (Fail) + Last Undo
    assertTrue(history.canUndo());
    assertTrue(history.canRedo());
    assertEquals(snapshot4, history.getUndoSnapshot(false));
    assertEquals(snapshot3, history.getUndoSnapshot(true));
    assertTrue(history.canUndo());
    assertTrue(history.canRedo());
}
Also used : MockView(com.google.security.zynamics.binnavi.disassembly.MockView) ZyGraph(com.google.security.zynamics.binnavi.yfileswrap.zygraph.ZyGraph) NaviNode(com.google.security.zynamics.binnavi.yfileswrap.zygraph.NaviNode) Test(org.junit.Test)

Aggregations

MockView (com.google.security.zynamics.binnavi.disassembly.MockView)38 Test (org.junit.Test)32 CAddress (com.google.security.zynamics.zylib.disassembly.CAddress)27 MockSqlProvider (com.google.security.zynamics.binnavi.Database.MockClasses.MockSqlProvider)25 CFunction (com.google.security.zynamics.binnavi.disassembly.CFunction)25 CModule (com.google.security.zynamics.binnavi.disassembly.Modules.CModule)24 Date (java.util.Date)21 CTag (com.google.security.zynamics.binnavi.Tagging.CTag)19 MockModule (com.google.security.zynamics.binnavi.disassembly.Modules.MockModule)14 MockDatabase (com.google.security.zynamics.binnavi.Database.MockClasses.MockDatabase)13 MockTagManager (com.google.security.zynamics.binnavi.Tagging.MockTagManager)13 INaviFunction (com.google.security.zynamics.binnavi.disassembly.INaviFunction)11 MockInstruction (com.google.security.zynamics.binnavi.disassembly.MockInstruction)10 CCodeNode (com.google.security.zynamics.binnavi.disassembly.CCodeNode)9 ArrayList (java.util.ArrayList)9 INaviCodeNode (com.google.security.zynamics.binnavi.disassembly.INaviCodeNode)8 INaviView (com.google.security.zynamics.binnavi.disassembly.views.INaviView)7 IComment (com.google.security.zynamics.binnavi.Gui.GraphWindows.CommentDialogs.Interfaces.IComment)6 CFunctionNode (com.google.security.zynamics.binnavi.disassembly.CFunctionNode)6 INaviEdge (com.google.security.zynamics.binnavi.disassembly.INaviEdge)6