blob: 466f19ed52edc742eac52736fa5b09d1529e5055 [file] [log] [blame]
module argcargvtest_runme;
import std.exception;
import argcargvtest.argcargvtest;
void main() {
auto largs = ["hi", "hola", "hello"];
enforce(mainc(largs) == 3, "calling mainc failed");
auto targs = ["hi", "hola"];
enforce(mainv(targs, 0) == "hi", "calling mainv failed");
enforce(mainv(targs, 1) == "hola", "calling mainv failed");
enforce(mainv(targs, 2) == "<<NULL>>", "calling mainv failed");
// For dynamically typed languages we test this throws an exception or similar
// at runtime, but for D language this doesn't even compile (but we can't easily
// test for that here).
// mainv("hello", 1);
initializeApp(largs);
// Check that an empty array works.
string[] empty_args;
enforce(mainc(empty_args) == 0, "calling mainc failed");
enforce(mainv(empty_args, 0) == "<<NULL>>", "calling mainv failed");
// In D, an empty array created like empty_args is identical to null.
enforce(mainc(null) == 0, "calling mainc failed");
// However an empty array created like this has a non-null .array so test
// this case is handled too.
string[] empty_args_array_set = targs;
empty_args_array_set.length = 0;
enforce(mainc(empty_args_array_set) == 0, "calling mainc failed");
// Check creating via slicing too.
string[] empty_args_array_set2 = targs[0..0];
enforce(mainc(empty_args_array_set2) == 0, "calling mainc failed");
// Check that empty strings are handled.
auto empty_string = ["hello", "", "world"];
enforce(mainc(empty_string) == 3, "calling mainc failed");
enforce(mainv(empty_string, 0) == "hello", "calling mainv failed");
enforce(mainv(empty_string, 1) == "", "calling mainv failed");
enforce(mainv(empty_string, 2) == "world", "calling mainv failed");
enforce(mainv(empty_string, 3) == "<<NULL>>", "calling mainv failed");
}