Skip to content

Commit 1687c4b

Browse files
committed
test: Positive tests, remove old examples
1 parent 74c15be commit 1687c4b

8 files changed

Lines changed: 121 additions & 77 deletions

File tree

examples/basic.fc

Lines changed: 0 additions & 9 deletions
This file was deleted.

examples/cond_test.fc

Lines changed: 0 additions & 31 deletions
This file was deleted.

examples/decl.fc

Lines changed: 0 additions & 19 deletions
This file was deleted.

examples/sort.fc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ void print_arr(string s, int len) {
4646
i = i + 1;
4747
}
4848
write(10);
49-
exit(0);
5049
}
5150

5251
void main() {

examples/test.fc

Lines changed: 0 additions & 17 deletions
This file was deleted.

tests/positive/call_copy_args.fc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// test: call_copy_arguments
2+
// input: "a"
3+
// output: "a"
4+
5+
int write(int _);
6+
void exit(int _);
7+
8+
int foo(int arg){
9+
arg = 0;
10+
return arg;
11+
}
12+
13+
void main(){
14+
int a = 97;
15+
foo(a);
16+
write(a);
17+
exit(0);
18+
}

tests/positive/shadowing.fc

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// test: variable-shadowing
2+
// input: ""
3+
// output: "abcda"
4+
5+
int write(int _);
6+
void exit(int _);
7+
8+
void main(){
9+
int a = 97;
10+
write(a);
11+
int i = 0;
12+
while (i < 3){
13+
int a = 98 + i;
14+
write(a);
15+
i = i + 1;
16+
}
17+
write(a);
18+
exit(0);
19+
}

tests/positive/sort.fc

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
// test: sort-test
2+
// input: "1\n" "153462\n"
3+
// output: "1 \n1 \n1 \n" "1 2 3 4 5 6 \n6 5 4 3 2 1 \n1 3 5 2 4 6 \n"
4+
5+
/* Returns:
6+
string s = "153462798";
7+
1 2 3 4 5 6 7 8 9
8+
9 8 7 6 5 4 3 2 1
9+
1 3 5 7 9 2 4 6 8
10+
*/
11+
12+
int write(int _);
13+
int read();
14+
void exit(int _);
15+
16+
17+
int cstrlen(string s);
18+
void write_str(string s, int len);
19+
int itoascii(int n);
20+
void write_int(int n);
21+
bool is_digit(int n);
22+
int read_int();
23+
void write_int(int n);
24+
25+
int regular_compare(int a, int b) { return a - b; }
26+
27+
int reverse_compare(int a, int b) { return b - a; }
28+
29+
int even_are_bigger_compare(int a, int b) {
30+
if (a % 2 == 0 && b % 2 != 0)
31+
return 1;
32+
if (a % 2 != 0 && b % 2 == 0)
33+
return -1;
34+
return a - b;
35+
}
36+
37+
void insertion_sort(string arr, int n, (int - int - int)compare) {
38+
int i = 1;
39+
while (i < n) {
40+
int cur = arr[i];
41+
int j = i - 1;
42+
43+
while ((j > 0 || j == 0) && (compare(arr[j], cur) > 0)) {
44+
arr[j + 1] = arr[j];
45+
j = j - 1;
46+
}
47+
arr[j + 1] = cur;
48+
i = i + 1;
49+
}
50+
}
51+
52+
void print_arr(string s, int len) {
53+
int i = 0;
54+
while (i < len) {
55+
write(s[i]);
56+
write(32);
57+
i = i + 1;
58+
}
59+
write(10);
60+
}
61+
62+
void main() {
63+
string s = "0123456789";
64+
65+
int num = 0;
66+
int len = 0;
67+
int max_len = cstrlen(s);
68+
while(len < max_len && num != 10){
69+
num = read();
70+
s[len] = num;
71+
len = len + 1;
72+
}
73+
s[len] = 0;
74+
len = len - 1;
75+
76+
insertion_sort(s, len, regular_compare);
77+
print_arr(s, len);
78+
insertion_sort(s, len, reverse_compare);
79+
print_arr(s, len);
80+
insertion_sort(s, len, even_are_bigger_compare);
81+
print_arr(s, len);
82+
exit(0);
83+
84+
}

0 commit comments

Comments
 (0)