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))))
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')
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), ), ))
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))))))