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)