def test_push_this_pointer_symbol(self): code_writer = CodeWriter() i = '0' segment = MemorySegmentType.POINTER cmd = '@THIS\nD=M\n@SP\nA=M\nM=D\n' cmd += '@SP\nM=M+1\n' self.assertEqual(code_writer.get_push(segment, i), cmd)
def test_push_temp(self): code_writer = CodeWriter() i = '2' segment = MemorySegmentType.TEMP start_address = '5' cmd = '@' + start_address + '\nD=A\n@' + i + '\nA=D+A\nD=M\n' cmd += '@SP\nA=M\nM=D\n' cmd += '@SP\nM=M+1\n' self.assertEqual(code_writer.get_push(segment, i), cmd)
def test_push_local(self): code_writer = CodeWriter() i = '5' segment = MemorySegmentType.LOCAL segment_pointer = 'LCL' cmd = '@' + i + '\nD=A\n@' + segment_pointer + '\nA=M+D\nD=M\n' cmd += '@SP\nA=M\nM=D\n' cmd += '@SP\nM=M+1\n' self.assertEqual(code_writer.get_push(segment, i), cmd)
def test_push_static(self): code_writer = CodeWriter() filename = 'filename1' code_writer.set_current_filename(filename) i = '5' segment = MemorySegmentType.STATIC cmd = '@' + filename + '.' + i + '\nD=M\n@SP\nA=M\nM=D\n' cmd += '@SP\nM=M+1\n' self.assertEqual(code_writer.get_push(segment, i), cmd)
def test_push_argument(self): code_writer = CodeWriter() i = '5' segment = MemorySegmentType.ARGUMENT segment_pointer = 'ARG' cmd = '@' + i + '\nD=A\n@' + segment_pointer + '\nA=M+D\nD=M\n' cmd += '@SP\nA=M\nM=D\n' cmd += '@SP\nM=M+1\n' self.assertEqual(code_writer.get_push(segment, i), cmd)
def test_push_const(self): code_writer = CodeWriter() i = '5' segment = MemorySegmentType.CONSTANT cmd = '@' + i + '\n' cmd += 'D=A\n' cmd += '@SP\n' cmd += 'A=M\n' cmd += 'M=D\n' cmd += '@SP\n' cmd += 'M=M+1\n' self.assertEqual(code_writer.get_push(segment, i), cmd)