// File: pranavmodx[P]modlang/test/evaluator_test.cpp
// Function: TestEvalIntegerExpression()
void TestEvalIntegerExpression()
{
	std::vector<std::pair<std::string, int>> tests = {
		{"5", 5},
		{"10", 10},
	};

	for (auto test : tests)
	{
		Object *obj = testEval(test.first);
		testIntegerObject(obj, test.second);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
leaq -0x78(%rbp), %rdi
movq %rdi, -0x80(%rbp)
movl $0x5, -0x84(%rbp)
leaq 0x32fe6(%rip), %rsi     # 0x460ea
leaq -0x84(%rbp), %rdx
callq 0x13780
jmp 0x13112
leaq -0x50(%rbp), %rdi
movq %rdi, -0x80(%rbp)
movl $0xa, -0x98(%rbp)
leaq 0x32fc1(%rip), %rsi     # 0x460ec
leaq -0x98(%rbp), %rdx
callq 0x13800
jmp 0x13139
leaq -0x78(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x2, -0x20(%rbp)
leaq -0x99(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0x138a0
movq -0x110(%rbp), %rcx
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x18(%rbp), %rdi
callq 0x138c0
jmp 0x13176
leaq -0x99(%rbp), %rdi
callq 0x13940
leaq -0x78(%rbp), %rax
movq %rax, -0x120(%rbp)
addq $0x50, %rax
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x128(%rbp)
callq 0x13880
movq -0x120(%rbp), %rcx
movq -0x128(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x118(%rbp)
jne 0x13198
leaq -0x18(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rdi
callq 0x13960
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rdi
callq 0x13990
movq %rax, -0xb8(%rbp)
leaq -0xb0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x139c0
testb $0x1, %al
jne 0x13216
jmp 0x133bc
leaq -0xb0(%rbp), %rdi
callq 0x13a00
movq %rax, %rsi
leaq -0xe0(%rbp), %rdi
callq 0x13a20
jmp 0x13233
leaq -0x108(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x5120
jmp 0x13248
leaq -0x108(%rbp), %rdi
callq 0x133f0
movq %rax, -0x130(%rbp)
jmp 0x1325d
leaq -0x108(%rbp), %rdi
callq 0x5518
movq -0x130(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rdi
movl -0xc0(%rbp), %esi
callq 0x13550
jmp 0x1328b
leaq -0xe0(%rbp), %rdi
callq 0x13880
leaq -0xb0(%rbp), %rdi
callq 0x13a60
jmp 0x131fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
movq -0x80(%rbp), %rax
leaq -0x78(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x138(%rbp)
je 0x132fc
movq -0x138(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x140(%rbp)
callq 0x13880
movq -0x140(%rbp), %rax
leaq -0x78(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x138(%rbp)
jne 0x132ce
jmp 0x133d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x99(%rbp), %rdi
callq 0x13940
leaq -0x78(%rbp), %rax
movq %rax, -0x150(%rbp)
addq $0x50, %rax
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x158(%rbp)
callq 0x13880
movq -0x150(%rbp), %rcx
movq -0x158(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x148(%rbp)
jne 0x13335
jmp 0x133d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x133ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x133ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x5518
leaq -0xe0(%rbp), %rdi
callq 0x13880
jmp 0x133ce
leaq -0x18(%rbp), %rdi
callq 0x13a80
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x13a80
movq -0x90(%rbp), %rdi
callq 0x5490
nopw %cs:(%rax,%rax)