def test_set_attr(self): instr = ConcreteInstr("LOAD_CONST", 5, lineno=12) # operator name instr.name = 'LOAD_FAST' self.assertEqual(instr.name, 'LOAD_FAST') self.assertEqual(instr.opcode, 124) self.assertRaises(TypeError, setattr, instr, 'name', 3) self.assertRaises(ValueError, setattr, instr, 'name', 'xxx') # operator code instr.opcode = 100 self.assertEqual(instr.name, 'LOAD_CONST') self.assertEqual(instr.opcode, 100) self.assertRaises(ValueError, setattr, instr, 'opcode', -12) self.assertRaises(TypeError, setattr, instr, 'opcode', 'abc') # extended argument instr.arg = 0x1234abcd self.assertEqual(instr.arg, 0x1234abcd) self.assertEqual(instr.size, 8 if WORDCODE else 6) # small argument instr.arg = 0 self.assertEqual(instr.arg, 0) self.assertEqual(instr.size, 2 if WORDCODE else 3) # invalid argument self.assertRaises(ValueError, setattr, instr, 'arg', -1) self.assertRaises(ValueError, setattr, instr, 'arg', 2147483647 + 1) # size attribute is read-only self.assertRaises(AttributeError, setattr, instr, 'size', 3) # lineno instr.lineno = 33 self.assertEqual(instr.lineno, 33) self.assertRaises(TypeError, setattr, instr, 'lineno', 1.0) self.assertRaises(ValueError, setattr, instr, 'lineno', -1)
def test_set_attr(self): instr = ConcreteInstr("LOAD_CONST", 5, lineno=12) # operator name instr.name = "LOAD_FAST" self.assertEqual(instr.name, "LOAD_FAST") self.assertEqual(instr.opcode, 124) self.assertRaises(TypeError, setattr, instr, "name", 3) self.assertRaises(ValueError, setattr, instr, "name", "xxx") # operator code instr.opcode = 100 self.assertEqual(instr.name, "LOAD_CONST") self.assertEqual(instr.opcode, 100) self.assertRaises(ValueError, setattr, instr, "opcode", -12) self.assertRaises(TypeError, setattr, instr, "opcode", "abc") # extended argument instr.arg = 0x1234ABCD self.assertEqual(instr.arg, 0x1234ABCD) self.assertEqual(instr.size, 8) # small argument instr.arg = 0 self.assertEqual(instr.arg, 0) self.assertEqual(instr.size, 2) # invalid argument self.assertRaises(ValueError, setattr, instr, "arg", -1) self.assertRaises(ValueError, setattr, instr, "arg", 2147483647 + 1) # size attribute is read-only self.assertRaises(AttributeError, setattr, instr, "size", 3) # lineno instr.lineno = 33 self.assertEqual(instr.lineno, 33) self.assertRaises(TypeError, setattr, instr, "lineno", 1.0) self.assertRaises(ValueError, setattr, instr, "lineno", -1)