Пример #1
0
 def test_sign_convert_array_value(self):
     t = ArrayType(BitsType(signed=True, size=8), 3)
     self.assertEqual(
         sample_runner.sign_convert_value(
             t,
             Value.make_array(
                 (Value.make_ubits(8, 0x42), Value.make_ubits(8, 0x43),
                  Value.make_ubits(8, 0x44)))),
         Value.make_array(
             (Value.make_sbits(8, 0x42), Value.make_sbits(8, 0x43),
              Value.make_sbits(8, 0x44))))
Пример #2
0
 def test_interpret_mixed_signedness(self):
     sample_dir = self._make_sample_dir()
     runner = sample_runner.SampleRunner(sample_dir)
     dslx_text = 'fn main(x: u8, y: s8) -> s8 { (x as s8) + y }'
     runner.run(
         sample.Sample(dslx_text, sample.SampleOptions(optimize_ir=False),
                       [[Value.make_ubits(8, 42),
                         Value.make_sbits(8, 100)]]))
     self.assertEqual(
         _read_file(sample_dir, 'sample.x.results').strip(), 'bits[8]:0x8e')
Пример #3
0
    def test_sign_convert_args_batch(self):
        dslx_text = 'fn main(y: s8) -> s8 { y }'
        filename = '/fake/test_module.x'
        with fakefs_test_util.scoped_fakefs(filename, dslx_text):
            m = parser_helpers.parse_text(dslx_text,
                                          'test_module',
                                          print_on_error=True,
                                          filename=filename)

        f = m.get_function('main')
        self.assertEqual(
            sample_runner.sign_convert_args_batch(
                f, m, ((Value.make_ubits(8, 2), ), )),
            ((Value.make_sbits(8, 2), ), ))
        # Converting a value which is already signed is no problem.
        self.assertEqual(
            sample_runner.sign_convert_args_batch(
                f, m, ((Value.make_sbits(8, 2), ), )),
            ((Value.make_sbits(8, 2), ), ))
Пример #4
0
 def test_sign_convert_tuple_value(self):
     # type is (u8, (u16, s8)
     t = TupleType(
         (BitsType(signed=False, size=8),
          TupleType((BitsType(signed=False,
                              size=16), BitsType(signed=True, size=8)))))
     self.assertEqual(
         sample_runner.sign_convert_value(
             t,
             Value.make_tuple((Value.make_ubits(8, 0x42),
                               Value.make_tuple(
                                   (Value.make_ubits(16, 0x33),
                                    Value.make_ubits(8, 0x44)))))),
         Value.make_tuple((Value.make_ubits(8, 0x42),
                           Value.make_tuple((Value.make_ubits(16, 0x33),
                                             Value.make_sbits(8, 0x44))))))