def test_pop_that_pointer_symbol(self): code_writer = CodeWriter() i = '1' segment = MemorySegmentType.POINTER cmd = '@SP\nAM=M-1\n' cmd += 'D=M\n@THAT\nM=D\n' self.assertEqual(code_writer.get_pop(segment, i), cmd)
def test_pop_temp(self): code_writer = CodeWriter() i = '2' segment = MemorySegmentType.TEMP start_address = '5' cmd = '@' + start_address + '\nD=A\n@' + i + '\nD=D+A\n@addr\nM=D\n' cmd += '@SP\nAM=M-1\n' cmd += 'D=M\n@addr\nA=M\nM=D\n' self.assertEqual(code_writer.get_pop(segment, i), cmd)
def test_pop_static(self): code_writer = CodeWriter() filename = 'filename1' code_writer.set_current_filename(filename) i = '5' segment = MemorySegmentType.STATIC cmd = '@SP\nAM=M-1\n' cmd += 'D=M\n@' + filename + '.' + i + '\nM=D\n' self.assertEqual(code_writer.get_pop(segment, i), cmd)
def test_pop_argument(self): code_writer = CodeWriter() i = '5' segment = MemorySegmentType.ARGUMENT segment_pointer = 'ARG' cmd = '@' + i + '\nD=A\n@' + segment_pointer + '\nD=D+M\n@addr\nM=D\n' cmd += '@SP\nAM=M-1\n' cmd += 'D=M\n@addr\nA=M\nM=D\n' self.assertEqual(code_writer.get_pop(segment, i), cmd)