xo-object2: + string comparison operators
This commit is contained in:
parent
05693bd55e
commit
fac95836fc
2 changed files with 67 additions and 0 deletions
|
|
@ -250,6 +250,26 @@ namespace xo {
|
||||||
return DString::compare(lhs, rhs) == 0;
|
return DString::compare(lhs, rhs) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool operator!=(const DString & lhs, const DString & rhs) {
|
||||||
|
return DString::compare(lhs, rhs) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool operator<(const DString & lhs, const DString & rhs) {
|
||||||
|
return DString::compare(lhs, rhs) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool operator<=(const DString & lhs, const DString & rhs) {
|
||||||
|
return DString::compare(lhs, rhs) <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool operator>(const DString & lhs, const DString & rhs) {
|
||||||
|
return DString::compare(lhs, rhs) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool operator>=(const DString & lhs, const DString & rhs) {
|
||||||
|
return DString::compare(lhs, rhs) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -311,6 +311,53 @@ namespace xo {
|
||||||
REQUIRE(DString::compare(*s1, *s4) > 0);
|
REQUIRE(DString::compare(*s1, *s4) > 0);
|
||||||
REQUIRE(DString::compare(*s4, *s1) < 0);
|
REQUIRE(DString::compare(*s4, *s1) < 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("DString-comparison-operators", "[object2][DString]")
|
||||||
|
{
|
||||||
|
ArenaConfig cfg { .name_ = "testarena",
|
||||||
|
.size_ = 4*1024 };
|
||||||
|
DArena arena = DArena::map(cfg);
|
||||||
|
auto alloc = with_facet<AAllocator>::mkobj(&arena);
|
||||||
|
|
||||||
|
DString * apple1 = DString::from_cstr(alloc, "apple");
|
||||||
|
DString * apple2 = DString::from_cstr(alloc, "apple");
|
||||||
|
DString * banana = DString::from_cstr(alloc, "banana");
|
||||||
|
|
||||||
|
// operator==
|
||||||
|
REQUIRE(*apple1 == *apple1);
|
||||||
|
REQUIRE(*apple2 == *apple2);
|
||||||
|
REQUIRE(*banana == *banana);
|
||||||
|
REQUIRE(*apple1 == *apple2);
|
||||||
|
|
||||||
|
REQUIRE_FALSE(*apple1 == *banana);
|
||||||
|
|
||||||
|
// operator!=
|
||||||
|
REQUIRE(*apple1 != *banana);
|
||||||
|
REQUIRE_FALSE(*apple1 != *apple1);
|
||||||
|
REQUIRE_FALSE(*apple2 != *apple2);
|
||||||
|
REQUIRE_FALSE(*apple1 != *apple2);
|
||||||
|
REQUIRE_FALSE(*banana != *banana);
|
||||||
|
|
||||||
|
// operator<
|
||||||
|
REQUIRE(*apple1 < *banana);
|
||||||
|
REQUIRE_FALSE(*banana < *apple1);
|
||||||
|
REQUIRE_FALSE(*apple1 < *apple2);
|
||||||
|
|
||||||
|
// operator<=
|
||||||
|
REQUIRE(*apple1 <= *banana);
|
||||||
|
REQUIRE(*apple1 <= *apple2);
|
||||||
|
REQUIRE_FALSE(*banana <= *apple1);
|
||||||
|
|
||||||
|
// operator>
|
||||||
|
REQUIRE(*banana > *apple1);
|
||||||
|
REQUIRE_FALSE(*apple1 > *banana);
|
||||||
|
REQUIRE_FALSE(*apple1 > *apple2);
|
||||||
|
|
||||||
|
// operator>=
|
||||||
|
REQUIRE(*banana >= *apple1);
|
||||||
|
REQUIRE(*apple1 >= *apple2);
|
||||||
|
REQUIRE_FALSE(*apple1 >= *banana);
|
||||||
|
}
|
||||||
} /*namespace ut*/
|
} /*namespace ut*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue