Open
Description
import std.typecons : Nullable;
unittest
{
// Nullable equality is defined such that a value
// is equal to said value made nullable:
void assertNullableXIsEqualToX(T)(T x)
{
Nullable!T n = x;
assert(n == x, "n != x");
assert(x == n, "x != n");
}
// We see that this holds for most types:
assertNullableXIsEqualToX(1); // OK
assertNullableXIsEqualToX("foo"); // OK
assertNullableXIsEqualToX(new Object); // OK
// However, if the value itself is a nullable,
// then the equality fails - but, only in the
// value == value.nullable direction:
Nullable!int ni;
assertNullableXIsEqualToX(ni); // Fail: x != n
}
Metadata
Metadata
Assignees
Labels
No labels