module tests.tup;


import unit_threaded;
import reggae;


void testEmpty() {
    const tup = Tup();
    tup.output.shouldEqual("");
    tup.fileName.shouldEqual("Tupfile");
}


void testSimpleDBuild() {
    const mainObj  = Target(`main.o`,  `dmd -I$project/src -c $in -of$out`, Target(`src/main.d`));
    const mathsObj = Target(`maths.o`, `dmd -c $in -of$out`, Target(`src/maths.d`));
    const app = Target(`myapp`,
                       `dmd -of$out $in`,
                       [mainObj, mathsObj]
        );
    const build = Build(app);
    const tup = Tup(build, "/path/to/project");

    tup.lines.shouldEqual(
        [": /path/to/project/src/main.d |> dmd -I/path/to/project/src -c /path/to/project/src/main.d -ofobjs/myapp.objs/main.o |> objs/myapp.objs/main.o",
         ": /path/to/project/src/maths.d |> dmd -c /path/to/project/src/maths.d -ofobjs/myapp.objs/maths.o |> objs/myapp.objs/maths.o",
         ": objs/myapp.objs/main.o objs/myapp.objs/maths.o |> dmd -ofmyapp objs/myapp.objs/main.o objs/myapp.objs/maths.o |> myapp"
                              ]);
}