summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2019-12-13 11:22:00 -0500
committerPeter LaFosse <peter@vector35.com>2019-12-13 11:22:00 -0500
commit577e05b7dcce6c19e9145d6c371de3237e903b45 (patch)
tree3d77c5a67eb5f3c9e21d6a20993d4812247e7cd5
parentded6f3551d8c8635fe011e295b73a44263ca91af (diff)
Add unit test for DataRenderer
-rw-r--r--suite/testcommon.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/suite/testcommon.py b/suite/testcommon.py
index ef5f63b3..cb034f30 100644
--- a/suite/testcommon.py
+++ b/suite/testcommon.py
@@ -7,6 +7,9 @@ import inspect
import binaryninja as binja
from binaryninja.binaryview import BinaryViewType, BinaryView
from binaryninja.filemetadata import FileMetadata
+from binaryninja.datarender import DataRenderer
+from binaryninja.function import InstructionTextToken, DisassemblyTextLine
+from binaryninja.enums import InstructionTextTokenType
import subprocess
import re
@@ -624,6 +627,32 @@ class TestBuilder(Builder):
finally:
self.delete_package("helloworld")
+ def test_data_renderer(self):
+ """data renderer produced different result"""
+ file_name = self.unpackage_file("helloworld")
+ class ElfHeaderDataRenderer(DataRenderer):
+ def __init__(self):
+ DataRenderer.__init__(self)
+ def perform_is_valid_for_data(self, ctxt, view, addr, type, context):
+ return DataRenderer.is_type_of_struct_name(type, "Elf64_Header", context)
+ def perform_get_lines_for_data(self, ctxt, view, addr, type, prefix, width, context):
+ prefix.append(InstructionTextToken(InstructionTextTokenType.TextToken, "I'm in ur Elf64_Header"))
+ return [DisassemblyTextLine(prefix, addr)]
+ def __del__(self):
+ pass
+ try:
+ bv = binja.BinaryViewType['ELF'].open(file_name)
+ ElfHeaderDataRenderer().register_type_specific()
+ disass = bv.linear_disassembly
+ retinfo = []
+ for i in disass:
+ i = str(i)
+ i = remove_low_confidence(i)
+ retinfo.append(i)
+ return retinfo
+ finally:
+ self.delete_package("helloworld")
+
# def test_partial_register_dataflow(self):
# """partial_register_dataflow produced different results"""
# file_name = self.unpackage_file("partial_register_dataflow")