8 (fun ctx input output ->
10 [Printf.sprintf "gcc -c -o%s %s" output input]);
12 (fun ctx input output ->
14 (* this option is not correct *)
15 [Printf.sprintf "gcc -s -o%s %s" output input]);
16 many_to_one ["o"] "exe"
17 (fun ctx inputs output ->
19 [Printf.sprintf "gcc -o%s %s" output @@ String.concat " " inputs]);
21 (fun ctx inputs output ->
23 [Printf.sprintf "gcc -o%s %s" output @@ String.concat " " inputs]);
24 many_to_one ["o"; "c"] "o"
25 (fun ctx inputs output ->
27 [Printf.sprintf "gcc -o%s %s" output @@ String.concat " " inputs])
38 "If nodes is direct connected, return it" >::
40 assert_equal ["gcc -s -ofoo.s foo.c"] @@
41 cmds ["foo.c"] "foo.s");
42 "If two routes exits, choice shorter one." >::
44 assert_equal ["gcc -c -ofoo.o foo.c"] @@
45 cmds ["foo.c"] "foo.o");
46 "If nodes is not direct connected, return the routes" >::
49 ["gcc -c -ofoo.o foo.c";
50 "gcc -ofoo.exe foo.o"] @@
51 cmds ["foo.c"] "foo.exe");
53 "If commands generate tmp files, return it" >::
55 assert_equal [] @@ temp ["foo.c"] "foo.o";
56 assert_equal ["foo.o"] @@ temp ["foo.c"] "foo.exe");
59 assert_equal ~printer:Std.dump ["gcc -ofoo.o foo.o bar.o"] @@ cmds ["foo.o"; "bar.o"] "foo.o";
60 assert_equal ~printer:Std.dump ["gcc -ofoo.o foo.o bar.c"] @@ cmds ["foo.o"; "bar.c"] "foo.o")
61 ]) +> run_test_tt_main