assertThrows

Undocumented in source. Be warned that the author may not have intended to support it.
version(unittest)
void
assertThrows
(
T
)
(
lazy T expr
)

Examples

auto stage = new BasicStage();
auto value = lift(40) + 2;
assert(stage.eval(value) == 42);
auto stage = new BasicStage();
auto slot = stage.slot!string("some.slot");
assert(slot.name == "some.slot");
auto expr = slot ~ ", world!";
assertThrows(stage.eval(expr));

stage["some.slot"] =  lift("Hello");
assert(stage.eval(expr) == "Hello, world!");

auto laterStage = new BasicStage();
laterStage.slot(slot);
assertThrows(laterStage.eval(slot));

laterStage["some.slot"] = lift("Bye");

assert(stage.eval(expr) == "Bye, world!");
auto stage = new BasicStage();
int[] trace; // our primitive trace buffer
auto v1 = stage.slot!double("var1").map(delegate double(double x) {
    trace ~= 1;
    return x;
});
auto v2 = stage.slot!double("var2").map(delegate double(double x) {
    trace ~= 2;
    return x;
});
stage["var1"] = lift(1.5);
auto part = (v1 + v2).partial(stage);
stage["var2"] = lift(-0.5);
// first pass - both map functions called once
assert(part.eval(stage) == 1.0);
assert(trace == [1, 2]);

// second pass - only v2 is evaluated
assert(part.eval(stage) == 1.0);
assert(trace == [1, 2, 2]);

Meta