Home | History | Annotate | Download | only in arm_emulation
      1 """
      2 Test some ARM instruction emulation.
      3 """
      4 
      5 import os, time
      6 import unittest2
      7 import lldb
      8 from lldbtest import *
      9 
     10 class ARMEmulationTestCase(TestBase):
     11     
     12     mydir = "arm_emulation"
     13 
     14     def test_thumb_emulations (self):
     15         current_dir = os.getcwd();
     16         test_dir = os.path.join (current_dir, "new-test-files")
     17         files = os.listdir (test_dir)
     18         thumb_files = list()
     19         for f in files:
     20             if '-thumb.dat' in f:
     21                 thumb_files.append (f)
     22                 
     23         for f in thumb_files:
     24             test_file = os.path.join (test_dir, f)
     25             self.run_a_single_test (test_file)
     26 
     27 
     28     def test_arm_emulations (self):
     29         current_dir = os.getcwd();
     30         test_dir = os.path.join (current_dir, "new-test-files")
     31         files = os.listdir (test_dir)
     32         arm_files = list()
     33         for f in files:
     34             if '-arm.dat' in f:
     35                 arm_files.append (f)
     36                 
     37         for f in arm_files:
     38             test_file = os.path.join (test_dir, f)
     39             self.run_a_single_test (test_file)
     40 
     41     def run_a_single_test (self, filename):
     42         insn = lldb.SBInstruction ();
     43         stream = lldb.SBStream ();
     44         success = insn.TestEmulation (stream, filename);
     45         output = stream.GetData();
     46         if self.TraceOn():
     47             print '\nRunning test ' + os.path.basename(filename)
     48             print output
     49 
     50         self.assertTrue (success, 'Emulation test succeeded.')
     51 
     52 if __name__ == '__main__':
     53     import atexit
     54     lldb.SBDebugger.Initialize()
     55     atexit.register(lambda: lldb.SBDebugger.Terminate())
     56     unittest2.main()
     57 
     58