// File: /workspace/github_cpp_makefile_star2_O2/WShabti-Team[P]WShabtiPict/wshabtilib/junit-test-case-generator/junit-test-case-generator.cpp
// Function: method_test_case_generate(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
string method_test_case_generate(string input_file_path, string method_prototype , string class_name)
{
    vector<string> method_and_values = get_method_and_values_name(method_prototype);
    string prototype_arguments = get_prototype_arguments(method_prototype);
    string method_name = method_and_values[0];

    bool interval_found = delta_check(input_file_path+"/" + method_name + "_test.csv", method_and_values.size()-1); //WARNING : DELTA CHECK PATH ISN'T THE SAME AS INPUT_FILE_PATH BECAUSE IT SEARCHES FOR THE SPECIFIC FILE [method_name]_test.csv REFERRED TO THE METHOD

    string init_of_method_test = "\n\n\t@ParameterizedTest"
                                 "\n\t@CsvFileSource(resources = \"./" + method_name + "_test.csv\")"
                                 "\n\tpublic void test_" + method_name + add_oracle_to_arguments(prototype_arguments, interval_found) + "{";
    string body_of_method_test = "\n\t\t" + class_name + " " + class_name + "Test = new " + class_name + "(/*constructor arguments*/);";
    
    string assert_of_method_test = "";

    if(interval_found)
    {
        assert_of_method_test = "\n\t\tassertEquals(oracle," + class_name + "Test."+ method_name + "(";
    }
    else
    {
        assert_of_method_test = "\n\t\tassertEquals(String.valueOf(oracle), String.valueOf(" + class_name + "Test."+ method_name + "(";
    }
    
    //ADD ARGUMENTS
    for(int i = 1; i < method_and_values.size() ; i++ )
    {
        assert_of_method_test = assert_of_method_test + method_and_values[i];
        if(i != method_and_values.size()-1)
        {
            assert_of_method_test = assert_of_method_test + ", ";
        }
    }

    if(interval_found)
    {
        assert_of_method_test = assert_of_method_test + "),delta, \""+ method_name + " FAILED\");" + "\n\t}";
    }
    else
    {
        assert_of_method_test = assert_of_method_test + ")),\""+ method_name + " FAILED\");" + "\n\t}";
    }
  
    return (init_of_method_test + body_of_method_test + assert_of_method_test);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
movq %rcx, %r14
movq %rdx, %r12
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x1a8(%rsp), %r13
movq %r13, %rdi
movq %rdx, %rsi
callq 0x65b0
leaq 0xa8(%rsp), %rdi
movq %r13, %rsi
callq 0x126f4
leaq 0x1a8(%rsp), %rdi
callq 0x61e0
leaq 0x168(%rsp), %rdi
movq %r12, %rsi
callq 0x65b0
leaq 0x188(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x1283a
leaq 0x168(%rsp), %rdi
callq 0x61e0
movq 0xa8(%rsp), %rsi
leaq 0xe8(%rsp), %rdi
callq 0x65b0
leaq 0x5a4b(%rip), %rdx      # 0x23b76
leaq 0xc8(%rsp), %rdi
movq %r15, %rsi
callq 0x1ecac
leaq 0x108(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x1ec8d
leaq 0x59d9(%rip), %rdx      # 0x23b38
leaq 0x148(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x1ec6e
movq 0xb0(%rsp), %rsi
subq 0xa8(%rsp), %rsi
shrq $0x5, %rsi
decl %esi
leaq 0x148(%rsp), %rdi
callq 0x1df9d
movl %eax, %ebp
leaq 0x148(%rsp), %rdi
callq 0x61e0
leaq 0x108(%rsp), %rdi
callq 0x61e0
leaq 0xc8(%rsp), %rdi
callq 0x61e0
leaq 0x597b(%rip), %rsi      # 0x23b42
leaq 0x28(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x1ed4b
leaq 0x5998(%rip), %rdx      # 0x23b78
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1ec6e
leaq 0x88(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x1ec8d
leaq 0x128(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x65b0
movzbl %bpl, %edx
leaq 0x8(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x1df04
leaq 0xc8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0x1ece4
leaq 0x5a9d(%rip), %rdx      # 0x23cf2
leaq 0x108(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1ec6e
leaq 0xc8(%rsp), %rdi
callq 0x61e0
leaq 0x8(%rsp), %rdi
callq 0x61e0
leaq 0x128(%rsp), %rdi
callq 0x61e0
leaq 0x88(%rsp), %rdi
callq 0x61e0
leaq 0x48(%rsp), %rdi
callq 0x61e0
leaq 0x28(%rsp), %rdi
callq 0x61e0
leaq 0x58e1(%rip), %rsi      # 0x23b97
leaq 0x68(%rsp), %rdi
movq %r14, %rdx
callq 0x1ed4b
leaq 0x5951(%rip), %rdx      # 0x23c1b
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1ec6e
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r14, %rdx
callq 0x1ec8d
leaq 0x58a9(%rip), %rdx      # 0x23b9b
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1ec6e
leaq 0x88(%rsp), %rdi
leaq 0x48(%rsp), %rsi
movq %r14, %rdx
callq 0x1ec8d
leaq 0x588a(%rip), %rdx      # 0x23ba7
leaq 0xc8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x1ec6e
leaq 0x88(%rsp), %rdi
callq 0x61e0
leaq 0x48(%rsp), %rdi
callq 0x61e0
leaq 0x28(%rsp), %rdi
callq 0x61e0
leaq 0x8(%rsp), %rdi
callq 0x61e0
leaq 0x68(%rsp), %rdi
callq 0x61e0
leaq 0x582c(%rip), %rsi      # 0x23b9a
leaq 0x88(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x7f56
testb %bpl, %bpl
movq %rbx, 0xc0(%rsp)
je 0x1e3e6
leaq 0x5830(%rip), %rsi      # 0x23bc4
leaq 0x68(%rsp), %rdi
movq %r14, %rdx
callq 0x1ed4b
leaq 0x5834(%rip), %rdx      # 0x23bdc
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1ec6e
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x1ec8d
leaq 0x5843(%rip), %rdx      # 0x23c18
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1ec6e
jmp 0x1e43d
leaq 0x57f5(%rip), %rsi      # 0x23be2
leaq 0x68(%rsp), %rdi
movq %r14, %rdx
callq 0x1ed4b
leaq 0x57db(%rip), %rdx      # 0x23bdc
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1ec6e
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x1ec8d
leaq 0x57ea(%rip), %rdx      # 0x23c18
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1ec6e
leaq 0x88(%rsp), %rdi
leaq 0x48(%rsp), %r14
movq %r14, %rsi
callq 0x6530
movq %r14, %rdi
callq 0x61e0
leaq 0x28(%rsp), %rdi
callq 0x61e0
leaq 0x8(%rsp), %rdi
callq 0x61e0
leaq 0x68(%rsp), %rdi
callq 0x61e0
pushq $0x1
popq %r13
pushq $0x20
popq %rbx
leaq 0x48(%rsp), %r14
leaq 0x88(%rsp), %r15
leaq 0x5787(%rip), %r12      # 0x23c1a
movq 0xa8(%rsp), %rdx
movq 0xb0(%rsp), %rax
subq %rdx, %rax
sarq $0x5, %rax
cmpq %r13, %rax
jbe 0x1e519
addq %rbx, %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x1edc1
movq %r15, %rdi
movq %r14, %rsi
callq 0x6530
movq %r14, %rdi
callq 0x61e0
movq 0xb0(%rsp), %rax
subq 0xa8(%rsp), %rax
sarq $0x5, %rax
decq %rax
cmpq %rax, %r13
je 0x1e50d
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x1ecac
movq %r15, %rdi
movq %r14, %rsi
callq 0x6530
movq %r14, %rdi
callq 0x61e0
incq %r13
addq $0x20, %rbx
jmp 0x1e493
testb %bpl, %bpl
je 0x1e584
leaq 0x56f8(%rip), %rdx      # 0x23c1d
leaq 0x68(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x1ecac
movq 0xc0(%rsp), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x1ec8d
leaq 0x56cb(%rip), %rdx      # 0x23c28
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1ec6e
leaq 0x56c0(%rip), %rdx      # 0x23c33
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1ec6e
jmp 0x1e5e8
leaq 0x56ac(%rip), %rdx      # 0x23c37
leaq 0x68(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x1ecac
movq 0xc0(%rsp), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x1ec8d
leaq 0x5665(%rip), %rdx      # 0x23c28
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1ec6e
leaq 0x565a(%rip), %rdx      # 0x23c33
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1ec6e
leaq 0x88(%rsp), %rdi
leaq 0x48(%rsp), %r14
movq %r14, %rsi
callq 0x6530
movq %r14, %rdi
callq 0x61e0
leaq 0x28(%rsp), %rdi
callq 0x61e0
leaq 0x8(%rsp), %rdi
callq 0x61e0
leaq 0x68(%rsp), %rdi
callq 0x61e0
leaq 0x48(%rsp), %rdi
leaq 0x108(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
callq 0x1edc1
leaq 0x48(%rsp), %rsi
leaq 0x88(%rsp), %rdx
movq %rbx, %rdi
callq 0x1ec8d
leaq 0x48(%rsp), %rdi
callq 0x61e0
leaq 0x88(%rsp), %rdi
callq 0x61e0
leaq 0xc8(%rsp), %rdi
callq 0x61e0
leaq 0x108(%rsp), %rdi
callq 0x61e0
leaq 0xe8(%rsp), %rdi
callq 0x61e0
leaq 0x188(%rsp), %rdi
callq 0x61e0
leaq 0xa8(%rsp), %rdi
callq 0x11254
movq %rbx, %rax
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1e6d7
jmp 0x1e6d7
jmp 0x1e6e8
jmp 0x1e6e8
jmp 0x1e6f9
jmp 0x1e6f9
jmp 0x1e844
jmp 0x1e844
jmp 0x1e6d7
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x61e0
jmp 0x1e6eb
jmp 0x1e6e8
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x61e0
jmp 0x1e6fc
jmp 0x1e6f9
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x61e0
jmp 0x1e847
jmp 0x1e844
jmp 0x1e844
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
jmp 0x1e701
jmp 0x1e844
movq %rax, %rbx
jmp 0x1e854
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x61e0
jmp 0x1e741
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x61e0
jmp 0x1e750
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x61e0
jmp 0x1e75f
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x61e0
jmp 0x1e76e
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
jmp 0x1e85c
movq %rax, %rbx
jmp 0x1e861
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x61e0
jmp 0x1e795
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x61e0
jmp 0x1e7a4
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x61e0
jmp 0x1e7b6
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x61e0
jmp 0x1e7c8
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x61e0
leaq 0x28(%rsp), %rdi
jmp 0x1e869
movq %rax, %rbx
jmp 0x1e7d2
jmp 0x1e814
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
callq 0x61e0
jmp 0x1e7f8
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x61e0
jmp 0x1e80a
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
jmp 0x1e869
movq %rax, %rbx
jmp 0x1e86e
movq %rax, %rbx
jmp 0x1e87b
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
jmp 0x1e883
movq %rax, %rbx
jmp 0x1e888
movq %rax, %rbx
leaq 0x1a8(%rsp), %rdi
callq 0x61e0
jmp 0x1e895
jmp 0x1e844
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x61e0
leaq 0xc8(%rsp), %rdi
callq 0x61e0
leaq 0x108(%rsp), %rdi
callq 0x61e0
leaq 0xe8(%rsp), %rdi
callq 0x61e0
leaq 0x188(%rsp), %rdi
callq 0x61e0
leaq 0xa8(%rsp), %rdi
callq 0x11254
movq %rbx, %rdi
callq 0x66e0