// File: Jacobious52[P]Tanks/Test.cpp
// Function: test_timer()
void test_timer()
{
    printf("\nTesting Timer..\n\n");
    Timer timer(0.1, 20);

    printf("interval 0.1s ticks 20\n\n");
    while (timer.tick())
    {
        ConsoleTools::move_cursor(ConsoleTools::up, 1);
        ConsoleTools::clear_line();
        printf("%d\n", timer.get_tick_count());
    }

    timer.reset();
    printf("\n");

    Timer inf(0.05, true);
    printf("infinite ticks. break at 50. interval 0.05s\n\n");

    while (inf.tick())
    {
        ConsoleTools::move_cursor(ConsoleTools::up, 1);
        ConsoleTools::clear_line();
        printf("%d\n", inf.get_tick_count());
        if (inf.get_tick_count() >= 50)
        {
            break;
        }
    }

    TestTimerDelegate test_timer;
    test_timer.test1();
    test_timer.test2();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
leaq 0x2ecf(%rip), %rdi      # 0x14481
xorl %eax, %eax
movb %al, -0x99(%rbp)
callq 0x3070
leaq -0x20(%rbp), %rdi
movsd 0x2d85(%rip), %xmm0     # 0x14350
movl $0x14, %esi
callq 0xbbc0
movb -0x99(%rbp), %al
leaq 0x2eb2(%rip), %rdi      # 0x14494
callq 0x3070
jmp 0x115e9
jmp 0x115eb
leaq -0x20(%rbp), %rdi
callq 0xd840
movb %al, -0x9a(%rbp)
jmp 0x115fc
movb -0x9a(%rbp), %al
testb $0x1, %al
jne 0x11608
jmp 0x1165a
movl $0x41, %edi
movl $0x1, %esi
callq 0x3b50
jmp 0x11619
callq 0x3b00
jmp 0x11620
leaq -0x20(%rbp), %rdi
callq 0xd8c0
movl %eax, -0xa0(%rbp)
jmp 0x11631
movl -0xa0(%rbp), %esi
leaq 0x2f57(%rip), %rdi      # 0x14595
xorl %eax, %eax
callq 0x3070
jmp 0x11647
jmp 0x115eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x117aa
leaq -0x20(%rbp), %rdi
callq 0xda90
jmp 0x11665
leaq 0x2b6f(%rip), %rdi      # 0x141db
xorl %eax, %eax
callq 0x3070
jmp 0x11675
leaq -0x50(%rbp), %rdi
movsd 0x2b6f(%rip), %xmm0     # 0x141f0
movl $0x1, %esi
callq 0x12c30
jmp 0x1168d
leaq 0x2e19(%rip), %rdi      # 0x144ad
xorl %eax, %eax
callq 0x3070
jmp 0x1169d
jmp 0x1169f
leaq -0x50(%rbp), %rdi
callq 0xd840
movb %al, -0xa1(%rbp)
jmp 0x116b0
movb -0xa1(%rbp), %al
testb $0x1, %al
jne 0x116bc
jmp 0x1172c
movl $0x41, %edi
movl $0x1, %esi
callq 0x3b50
jmp 0x116cd
callq 0x3b00
jmp 0x116d4
leaq -0x50(%rbp), %rdi
callq 0xd8c0
movl %eax, -0xa8(%rbp)
jmp 0x116e5
movl -0xa8(%rbp), %esi
leaq 0x2ea3(%rip), %rdi      # 0x14595
xorl %eax, %eax
callq 0x3070
jmp 0x116fb
leaq -0x50(%rbp), %rdi
callq 0xd8c0
movl %eax, -0xac(%rbp)
jmp 0x1170c
movl -0xac(%rbp), %eax
cmpl $0x32, %eax
jl 0x11727
jmp 0x1172c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1179d
jmp 0x1169f
leaq -0x98(%rbp), %rdi
callq 0x12c70
jmp 0x1173a
leaq -0x98(%rbp), %rdi
callq 0x12db0
jmp 0x11748
leaq -0x98(%rbp), %rdi
callq 0x12dd0
jmp 0x11756
leaq -0x98(%rbp), %rdi
callq 0x12df0
jmp 0x11764
leaq -0x50(%rbp), %rdi
callq 0xbc40
jmp 0x1176f
leaq -0x20(%rbp), %rdi
callq 0xbc40
addq $0xb0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x12df0
jmp 0x1179b
jmp 0x1179d
leaq -0x50(%rbp), %rdi
callq 0xbc40
jmp 0x117a8
jmp 0x117aa
leaq -0x20(%rbp), %rdi
callq 0xbc40
jmp 0x117b5
jmp 0x117b7
movq -0x28(%rbp), %rdi
callq 0x34d0
movq %rax, %rdi
callq 0x3d90
nopl (%rax,%rax)