Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)