manticore/test/test_armv7_bitwise.py
Mark Mossberg 05f5fcf045 Port to real python package structure (#6)
* Initial moving

* Initial package __init__.py

* Use relative imports

* Correct imports for tests

* Rename main.py -> __main__.py

* Use relative imports in main

* Refactor cli to be used with setuptools

* Add basic setup.py

* Fix test_memory import

* Fix test_cpu_manual imports

* Correct iterpickle import

* Use manticore console_script installed by setuptools

* Make travis install our package for integration cli tests

* Refactor model hooks dynamic import for being in pkg

* Correct import

* Rm empty line

* Fix coverage test paths
2017-02-15 12:32:08 -05:00

90 lines
2.4 KiB
Python

import unittest
from manticore.core.cpu import bitwise
class Armv7RF(unittest.TestCase):
def test_mask(self):
masked = bitwise.Mask(8)
self.assertEqual(masked, 0xff)
def test_get_bits(self):
val = 0xAABBCCDD
result = bitwise.GetNBits(val, 8)
self.assertEqual(result, 0xDD)
def test_lsl_nocarry(self):
val = 0xAA00
result, carry = bitwise.LSL_C(val, 4, 32)
self.assertEqual(result, 0x0AA000)
self.assertEqual(carry , 0)
def test_lsl_carry(self):
val = 0x80000000
result, carry = bitwise.LSL_C(val, 1, 32)
print hex(result), "", hex(carry)
self.assertEqual(result, 0)
self.assertEqual(carry , 1)
def test_lsr_nocarry(self):
val = 0xFFF7
result, carry = bitwise.LSR_C(val, 4, 32)
self.assertEqual(result, 0x0FFF)
self.assertEqual(carry , 0)
def test_lsr_carry(self):
val = 0xFFF8
result, carry = bitwise.LSR_C(val, 4, 32)
self.assertEqual(result, 0x0FFF)
self.assertEqual(carry , 1)
def test_asr_nocarry(self):
val = 0x00F0
result, carry = bitwise.ASR_C(val, 4, 32)
self.assertEqual(result, 0xF)
self.assertEqual(carry, 0)
def test_asr_carry(self):
val = 0x0003
result, carry = bitwise.ASR_C(val, 1, 32)
self.assertEqual(result, 1)
self.assertEqual(carry, 1)
def test_ror_nocarry(self):
val = 0x00F0
result, carry = bitwise.ROR_C(val, 4, 32)
print hex(result)
self.assertEqual(result, 0xF)
self.assertEqual(carry, 0)
def test_ror_carry(self):
val = 0x0003
result, carry = bitwise.ROR_C(val, 1, 32)
print hex(result)
self.assertEqual(result, 0x80000001)
self.assertEqual(carry, 1)
def test_rrx_nocarry(self):
val = 0x000F
result, carry = bitwise.RRX_C(val, 0, 32)
self.assertEqual(result, 0x7)
self.assertEqual(carry, 1)
def test_rrx_carry(self):
val = 0x0001
result, carry = bitwise.RRX_C(val, 1, 32)
print hex(result)
self.assertEqual(result, 0x80000000)
self.assertEqual(carry, 1)
def test_sint(self):
val = 0xFFFFFFFF
result = bitwise.SInt(val, 32)
self.assertEqual(result, -1)
def test_sint_2(self):
val = 0xFFFFFFFE
result = bitwise.SInt(val, 32)
self.assertEqual(result, -2)