GCC Code Coverage Report


Directory: src/
File: script_transcompiler/backend_python.cpp
Date: 2024-12-30 15:39:09
Exec Total Coverage
Lines: 39 43 90.7%
Functions: 3 3 100.0%
Branches: 40 74 54.1%

Line Branch Exec Source
1 #include "data.h"
2
3 32 inline void add_cmd(data& data, const std::string& cmd)
4 {
5
1/2
✓ Branch 2 taken 32 times.
✗ Branch 3 not taken.
32 data.result.push_back(" " + cmd);
6 32 }
7
8 14 inline bool generate_code(data& data, const intermediate& i)
9 {
10
1/2
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
14 add_cmd(data, "# " + i.line);
11
12
8/10
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 4 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
14 switch (i.command)
13 {
14 case (intermediate::cmd::comment):
15 add_cmd(data, "#" + i.operand);
16 break;
17
18 2 case (intermediate::cmd::load_init_memory):
19 [[fallthrough]];
20 case (intermediate::cmd::load_memory):
21
2/4
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 add_cmd(data, "with open(\"" + i.operand + "\", \"r\") as file:");
22
2/4
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 add_cmd(data, " text = file.read()");
23 2 break;
24
25 3 case (intermediate::cmd::print_memory):
26
27
2/4
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
3 add_cmd(data, "print(text)");
28
29 3 break;
30
31 1 case (intermediate::cmd::process_memory):
32
33
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 add_cmd(data, "text = text_conversion.title_case(text)");
34
35 1 break;
36
37 1 case (intermediate::cmd::save_memory):
38
39
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 add_cmd(data, "with open(\"" + i.operand + "\", \"w\") as file:");
40
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 add_cmd(data, " file.write(text)");
41
42 1 break;
43
44 1 case (intermediate::cmd::create_file):
45
46
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 add_cmd(data, "open('" + i.operand + "', 'a')");
47
48 1 break;
49
50 1 case (intermediate::cmd::text_init_memory):
51 [[fallthrough]];
52 case (intermediate::cmd::text_memory):
53
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 add_cmd(data, "text = \"" + i.operand + "\"");
54
55 1 break;
56
57 4 case (intermediate::cmd::print_text):
58
2/4
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
4 add_cmd(data, "print(\"" + i.operand + "\")");
59 4 break;
60
61 1 case (intermediate::cmd::save_text):
62
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 add_cmd(data, "with open(\"" + i.operandB + "\", \"w\") as file:");
63
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 add_cmd(data, " file.write(\"" + i.operand + "\")");
64 1 break;
65 }
66
67 14 return true;
68 }
69
70 1 void generate_py(data& data)
71 {
72
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 data.result.push_back("import text_conversion");
73
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 data.result.push_back("if __name__ == '__main__':");
74
75
2/2
✓ Branch 5 taken 14 times.
✓ Branch 6 taken 1 times.
15 for (const auto& ic : data.c)
76 {
77
2/4
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
14 if (!generate_code(data, ic))
78 return;
79 }
80 }
81