示例#1
0
 def test_identity(self):
     function = BoolFunction.from_truth_table("10")
     assert function.num_inputs() == 1
     assert function.num_outputs() == 1
     assert function.num_input_bits() == 1
     assert function.num_output_bits() == 1
     result = function.simulate(BitVec(1, "0"))
     assert result == BitVec(1, "0")
     result = function.simulate(BitVec(1, "1"))
     assert result == BitVec(1, "1")
示例#2
0
 def test_identity_2bit(self):
     function = BoolFunction.from_truth_table(["1010", "1100"])
     assert function.num_inputs() == 2
     assert function.num_outputs() == 2
     assert function.num_input_bits() == 2
     assert function.num_output_bits() == 2
     for a in range(4):
         tmp = BitVec(2, a)
         result = function.simulate(tmp[0], tmp[1])
         assert result == (tmp[0], tmp[1])
示例#3
0
 def test_not_2bit(self):
     function = BoolFunction.from_truth_table(['0101', '0011'])
     self.assertEqual(function.num_inputs(), 2)
     self.assertEqual(function.num_outputs(), 2)
     self.assertEqual(function.num_input_bits(), 2)
     self.assertEqual(function.num_output_bits(), 2)
     for a in range(4):
         tmp = BitVec(2, a)
         result = function.simulate(tmp[0], tmp[1])
         self.assertEqual(result, (~tmp[0], ~tmp[1]))
示例#4
0
 def test_not(self):
     function = BoolFunction.from_truth_table('01')
     self.assertEqual(function.num_inputs(), 1)
     self.assertEqual(function.num_outputs(), 1)
     self.assertEqual(function.num_input_bits(), 1)
     self.assertEqual(function.num_output_bits(), 1)
     for a in range(2):
         tmp = BitVec(1, a)
         result = function.simulate(tmp)
         self.assertEqual(result, ~tmp)
示例#5
0
 def test_identity_2bit(self):
     function = BoolFunction.from_truth_table(['1010', '1100'])
     self.assertEqual(function.num_inputs(), 2)
     self.assertEqual(function.num_outputs(), 2)
     self.assertEqual(function.num_input_bits(), 2)
     self.assertEqual(function.num_output_bits(), 2)
     for a in range(4):
         tmp = BitVec(2, a)
         result = function.simulate(tmp[0], tmp[1])
         self.assertEqual(result, (tmp[0], tmp[1]))
示例#6
0
 def test_identity(self):
     function = BoolFunction.from_truth_table('10')
     self.assertEqual(function.num_inputs(), 1)
     self.assertEqual(function.num_outputs(), 1)
     self.assertEqual(function.num_input_bits(), 1)
     self.assertEqual(function.num_output_bits(), 1)
     result = function.simulate(BitVec(1, '0'))
     self.assertEqual(result, BitVec(1, '0'))
     result = function.simulate(BitVec(1, '1'))
     self.assertEqual(result, BitVec(1, '1'))
示例#7
0
 def test_and(self):
     function = BoolFunction.from_truth_table("1000")
     assert function.num_inputs() == 2
     assert function.num_outputs() == 1
     assert function.num_input_bits() == 2
     assert function.num_output_bits() == 1
     for a in range(2):
         for b in range(2):
             result = function.simulate(BitVec(1, a), BitVec(1, b))
             tmp = BitVec(1, a) and BitVec(1, b)
             assert result == tmp
示例#8
0
 def test_and(self):
     function = BoolFunction.from_truth_table('1000')
     self.assertEqual(function.num_inputs(), 2)
     self.assertEqual(function.num_outputs(), 1)
     self.assertEqual(function.num_input_bits(), 2)
     self.assertEqual(function.num_output_bits(), 1)
     for a in range(2):
         for b in range(2):
             result = function.simulate(BitVec(1, a), BitVec(1, b))
             tmp = BitVec(1, a) and BitVec(1, b)
             self.assertEqual(result, tmp)
示例#9
0
 def test_xor(self):
     function = BoolFunction(examples.bool_and)
     function = BoolFunction.from_truth_table('0110')
     self.assertEqual(function.num_inputs(), 2)
     self.assertEqual(function.num_outputs(), 1)
     self.assertEqual(function.num_input_bits(), 2)
     self.assertEqual(function.num_output_bits(), 1)
     for a in range(2):
         for b in range(2):
             result = function.simulate(BitVec(1, a), BitVec(1, b))
             tmp = BitVec(1, a) ^ BitVec(1, b)
             self.assertEqual(result, tmp)
示例#10
0
 def test_xor_2bit(self):
     function = BoolFunction.from_truth_table(
         ["0101101001011010", "0011001111001100"])
     assert function.num_inputs() == 4
     assert function.num_outputs() == 2
     assert function.num_input_bits() == 4
     assert function.num_output_bits() == 2
     for a in range(4):
         for b in range(4):
             a_bv = BitVec(2, a)
             b_bv = BitVec(2, b)
             result = function.simulate(a_bv[0], a_bv[1], b_bv[0], b_bv[1])
             tmp = a_bv ^ b_bv
             assert result == (tmp[0], tmp[1])
示例#11
0
 def test_xor_2bit(self):
     function = BoolFunction.from_truth_table(['0101101001011010', 
                                               '0011001111001100'])
     self.assertEqual(function.num_inputs(), 4)
     self.assertEqual(function.num_outputs(), 2)
     self.assertEqual(function.num_input_bits(), 4)
     self.assertEqual(function.num_output_bits(), 2)
     for a in range(4):
         for b in range(4):
             a_bv = BitVec(2, a)
             b_bv = BitVec(2, b)
             result = function.simulate(a_bv[0], a_bv[1], b_bv[0], b_bv[1])
             tmp = a_bv ^ b_bv
             self.assertEqual(result, (tmp[0], tmp[1]))