34 lines
986 B
C++
34 lines
986 B
C++
#include "../expected.hpp"
|
|
|
|
#include "../tap.hpp"
|
|
|
|
|
|
|
|
int main ()
|
|
{
|
|
cruft::TAP::logger tap;
|
|
|
|
tap.expect_nothrow ([] () { cruft::expected<std::string,int> { "foo" }; }, "value construction succeeds");
|
|
tap.expect_nothrow ([] () { cruft::expected<std::string,int> { EPERM }; }, "error construction succeeds");
|
|
|
|
tap.expect_eq (cruft::expected<std::string,int> { "foo" }.value (), "foo", "value matches");
|
|
tap.expect_eq (cruft::expected<std::string,int> { EPERM }.error (), EPERM, "error matches");
|
|
|
|
tap.expect_throw<cruft::bad_expected_access> (
|
|
[] () {
|
|
cruft::expected<std::string,int> val { EPERM };
|
|
val.value ();
|
|
},
|
|
"value access fails when holding an error"
|
|
);
|
|
|
|
tap.expect_throw<cruft::bad_expected_access> (
|
|
[] () {
|
|
cruft::expected<std::string,int> val { "foo" };
|
|
val.error ();
|
|
},
|
|
"error access fails when holding a value"
|
|
);
|
|
|
|
return tap.status ();
|
|
} |