aboutsummaryrefslogtreecommitdiffstats
path: root/nihil.ucl/tests/object.cc
blob: 3ad180e40d1d24e069d8f9375136f37f3cf60e25 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
 * This source code is released into the public domain.
 */

#include <catch2/catch_test_macros.hpp>

#include <ucl.h>

import nihil.ucl;

TEST_CASE("ucl object: get_ucl_object", "[ucl]")
{
	auto obj = nihil::ucl::integer(42);

	REQUIRE(obj.get_ucl_object() != nullptr);
	static_assert(std::same_as<::ucl_object_t *,
		      		   decltype(obj.get_ucl_object())>);

	auto const cobj = obj;
	static_assert(std::same_as<::ucl_object_t const *,
		      		   decltype(cobj.get_ucl_object())>);
}

TEST_CASE("ucl object: compare", "[ucl]")
{
	using namespace std::literals;

	auto obj_41 = nihil::ucl::parse("int = 41;"sv);
	REQUIRE(obj_41);

	auto obj_42 = nihil::ucl::parse("int = 42;"sv);
	REQUIRE(obj_42);

	auto obj_42_2 = nihil::ucl::parse("int = 42;"sv);
	REQUIRE(obj_42_2);

	auto obj_43 = nihil::ucl::parse("int = 43;"sv);
	REQUIRE(obj_43);

	REQUIRE(*obj_42 == *obj_42_2);
	REQUIRE(*obj_42 != *obj_43);
	REQUIRE(*obj_42 < *obj_43);
	REQUIRE(*obj_42 > *obj_41);
}