2019-04-09 20:43:42 -05:00
|
|
|
let t = import "std/testing.ucg";
|
2019-02-24 08:33:20 -06:00
|
|
|
let f = import "std/functional.ucg";
|
2019-01-16 18:47:16 -06:00
|
|
|
|
2019-01-24 20:04:40 -06:00
|
|
|
let op = func (arg) => arg{foo="bar"};
|
2019-01-16 18:47:16 -06:00
|
|
|
|
|
|
|
assert t.equal{
|
2019-02-24 08:33:20 -06:00
|
|
|
left = f.maybe{val=NULL}.do(op).unwrap(),
|
2019-01-16 18:47:16 -06:00
|
|
|
right = NULL,
|
|
|
|
};
|
|
|
|
|
2019-02-24 08:33:20 -06:00
|
|
|
assert t.ok{
|
|
|
|
test = f.maybe{val=NULL}.is_null(),
|
|
|
|
desc = "maybe is null",
|
2019-01-16 18:47:16 -06:00
|
|
|
};
|
|
|
|
|
2019-02-24 08:33:20 -06:00
|
|
|
assert t.ok{
|
|
|
|
test = f.maybe{val=NULL}.do(op).is_null(),
|
|
|
|
desc = "maybe is still null after an operation",
|
2019-01-16 18:47:16 -06:00
|
|
|
};
|
|
|
|
|
2019-02-28 20:59:17 -06:00
|
|
|
assert t.equal{
|
|
|
|
left = f.maybe{val=NULL}.or(func() => "foo").unwrap(),
|
|
|
|
right = "foo",
|
|
|
|
};
|
|
|
|
|
|
|
|
assert t.equal{
|
|
|
|
left = f.maybe{val="bar"}.or(func() => "foo").unwrap(),
|
|
|
|
right = "bar",
|
|
|
|
};
|
|
|
|
|
2019-01-16 18:47:16 -06:00
|
|
|
assert t.equal{
|
2019-02-24 08:33:20 -06:00
|
|
|
left = f.maybe{val={}}.do(op).unwrap(),
|
|
|
|
right = {foo="bar"},
|
2019-01-16 18:47:16 -06:00
|
|
|
};
|
|
|
|
|
|
|
|
assert t.equal{
|
2019-01-16 19:07:03 -06:00
|
|
|
left = f.identity("foo"),
|
2019-01-16 18:47:16 -06:00
|
|
|
right = "foo",
|
|
|
|
};
|