xo-numeric/xo-object/utest/Boolean.test.cpp

46 lines
1.3 KiB
C++

/* @file Boolean.test.cpp
*
* author: Roland Conybeare, Aug 2025
*/
#include "xo/object/Boolean.hpp"
#include "xo/alloc/GC.hpp"
#include <catch2/catch.hpp>
namespace xo {
using xo::obj::Boolean;
using xo::gc::GC;
using xo::gc::generation_result;
namespace ut {
TEST_CASE("Boolean", "[Boolean]")
{
up<GC> gc = GC::make(
{ .initial_nursery_z_ = 1024,
.initial_tenured_z_ = 1024
});
REQUIRE(gc.get());
/* use gc for "all" Object allocs.
* Not using, but want it to be available, verify conscious choice
*/
Object::mm = gc.get();
gp<Boolean> btrue = Boolean::true_obj();
gp<Boolean> bfalse = Boolean::false_obj();
REQUIRE(btrue.ptr());
REQUIRE(btrue->value() == true);
REQUIRE(bfalse.ptr());
REQUIRE(bfalse->value() == false);
REQUIRE(btrue->_shallow_size() == sizeof(Boolean));
// booleans are global constants
REQUIRE(gc->tospace_generation_of(btrue.ptr()) == generation_result::not_found);
REQUIRE(gc->tospace_generation_of(bfalse.ptr()) == generation_result::not_found);
}
} /*namespace ut*/
} /*namespace xo*/