// File: /workspace/github_cpp_makefile_star2_O2/chuckwolber[P]Cube/test/test_algorithm.cpp
// Function: test_addTurn()
void test_addTurn() {
    std::cout << "Testing add turn... ";

    Turn init = {Layer::F, true};
    Turn t1 = {Layer::D, true};
    Turn t2 = {Layer::F, true};
    Turn t3 = {Layer::L, true};
    Algorithm alg;

    std::cout << " t0 ";
    verify_turns(alg.getAlgorithm(), {init});

    std::cout << " t1 ";
    alg.addTurn(t1);
    verify_turns(alg.getAlgorithm(), {init, t1});

    std::cout << " t2 ";
    alg.addTurn(t2);
    verify_turns(alg.getAlgorithm(), {init, t1, t2});

    std::cout << " t3 ";
    alg.addTurn(t3);
    verify_turns(alg.getAlgorithm(), {init, t1, t2, t3});

    std::cout << "Passed" << std::endl;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq 0x89ca(%rip), %rbx      # 0xdfd8
leaq 0x3e37(%rip), %rsi      # 0x944c
movq %rbx, %rdi
callq 0x2140
leaq 0x10(%rsp), %rdi
callq 0x231c
leaq 0x3e33(%rip), %rsi      # 0x9461
movq %rbx, %rdi
callq 0x2140
leaq 0xe0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2a0c
movabsq $0x100000005, %rbx      # imm = 0x100000005
leaq 0xf8(%rsp), %rsi
movq %rbx, (%rsi)
leaq 0xc8(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x7e30
leaq 0xe0(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x7afb
leaq 0xc8(%rsp), %rdi
callq 0x358c
leaq 0xe0(%rsp), %rdi
callq 0x358c
movq 0x8930(%rip), %rdi      # 0xdfd8
leaq 0x3d7d(%rip), %rsi      # 0x942c
callq 0x2140
leaq 0x10(%rsp), %rdi
movabsq $0x100000009, %rsi      # imm = 0x100000009
callq 0x235c
leaq 0xb0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2a0c
leaq 0xf8(%rsp), %rsi
movq %rbx, (%rsi)
leaq 0x4(%rbx), %r14
movq %r14, 0x8(%rsi)
leaq 0x98(%rsp), %rdi
pushq $0x2
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x7e30
leaq 0xb0(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x7afb
leaq 0x98(%rsp), %rdi
callq 0x358c
leaq 0xb0(%rsp), %rdi
callq 0x358c
movq 0x88a0(%rip), %rdi      # 0xdfd8
leaq 0x3cf2(%rip), %rsi      # 0x9431
callq 0x2140
leaq 0x10(%rsp), %rdi
movabsq $0x100000005, %rsi      # imm = 0x100000005
callq 0x235c
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2a0c
leaq 0xf8(%rsp), %rsi
movq %rbx, (%rsi)
movq %r14, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x68(%rsp), %rdi
pushq $0x3
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x7e30
leaq 0x80(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x7afb
leaq 0x68(%rsp), %rdi
callq 0x358c
leaq 0x80(%rsp), %rdi
callq 0x358c
movq 0x8819(%rip), %rdi      # 0xdfd8
leaq 0x3c70(%rip), %rsi      # 0x9436
callq 0x2140
leaq 0x10(%rsp), %rdi
movabsq $0x100000004, %rsi      # imm = 0x100000004
callq 0x235c
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2a0c
leaq 0xf8(%rsp), %rsi
movq %rbx, (%rsi)
movq %r14, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
decq %rbx
movq %rbx, 0x18(%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x4
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x7e30
leaq 0x50(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x7afb
leaq 0x38(%rsp), %rdi
callq 0x358c
leaq 0x50(%rsp), %rdi
callq 0x358c
movq 0x8794(%rip), %rdi      # 0xdfd8
leaq 0x3b1f(%rip), %rsi      # 0x936a
callq 0x2140
movq %rax, %rdi
callq 0x20b0
leaq 0x10(%rsp), %rdi
callq 0x3558
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x358c
jmp 0x587f
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
jmp 0x58de
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x358c
jmp 0x5898
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
jmp 0x58de
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x358c
jmp 0x58b7
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
jmp 0x58de
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x358c
jmp 0x58d6
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
callq 0x358c
jmp 0x58e8
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3558
movq %rbx, %rdi
callq 0x21c0