def testHasMoreCommandsAndAdvance(self): parser = Parser('') self.assertFalse(parser.hasMoreCommands) parser = Parser('hello') self.assertEqual(None, parser.currentCommand) self.assertTrue(parser.hasMoreCommands) parser.advance() self.assertFalse(parser.hasMoreCommands) self.assertRaises(EOFError, parser.advance) parser = Parser('// this is a comment') self.assertFalse(parser.hasMoreCommands) parser = Parser('foobar // this is a command') self.assertTrue(parser.hasMoreCommands)
def testSymbol(self): parser = Parser('@abc') parser.advance() self.assertEqual('abc', parser.symbol) parser = Parser('(abc)') parser.advance() self.assertEqual('abc', parser.symbol) parser = Parser('foobar') parser.advance() self.assertRaises(RuntimeError, lambda: parser.symbol)
def testDestCompJump(self): parser = Parser('dest=comp;JMP') parser.advance() self.assertEqual('dest', parser.dest) self.assertEqual('comp', parser.comp) self.assertEqual('JMP', parser.jump) parser = Parser('dest = comp ; JMP') parser.advance() self.assertEqual('dest', parser.dest) self.assertEqual('comp', parser.comp) self.assertEqual('JMP', parser.jump) parser = Parser('dest=comp') parser.advance() self.assertEqual('dest', parser.dest) self.assertEqual('comp', parser.comp) self.assertEqual('null', parser.jump) parser = Parser('comp;JMP') parser.advance() self.assertEqual('null', parser.dest) self.assertEqual('comp', parser.comp) self.assertEqual('JMP', parser.jump) parser = Parser('comp') parser.advance() self.assertEqual('null', parser.dest) self.assertEqual('comp', parser.comp) self.assertEqual('null', parser.jump) parser = Parser('@abc') parser.advance() self.assertRaises(RuntimeError, lambda: parser.dest) self.assertRaises(RuntimeError, lambda: parser.comp) self.assertRaises(RuntimeError, lambda: parser.jump)