finalise interface & documentation
Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
parent
c5157bd849
commit
52580a4382
56 changed files with 2074 additions and 780 deletions
|
|
@ -25,7 +25,7 @@ IKA_API IkarusEntityValue value_create_invalid(IkarusPropertyType type) {
|
|||
IkarusEntityValue ikarus_value_create_toggle(bool value) {
|
||||
return IkarusEntityValue{
|
||||
._type = IkarusPropertyType_Toggle,
|
||||
._data = IkarusEntityValueData{.toggle = IkarusToggleValue{._value = value}},
|
||||
._data = IkarusEntityValueData{._toggle = IkarusToggleValue{._value = value}},
|
||||
._state = IkarusEntityValueState_Normal,
|
||||
};
|
||||
}
|
||||
|
|
@ -37,7 +37,7 @@ IkarusEntityValue ikarus_value_create_number(long double value) {
|
|||
|
||||
return IkarusEntityValue{
|
||||
._type = IkarusPropertyType_Number,
|
||||
._data = IkarusEntityValueData{.number = IkarusNumberValue{._value = value}},
|
||||
._data = IkarusEntityValueData{._number = IkarusNumberValue{._value = value}},
|
||||
._state = IkarusEntityValueState_Normal,
|
||||
};
|
||||
}
|
||||
|
|
@ -49,7 +49,7 @@ IkarusEntityValue ikarus_value_create_text(char const * value) {
|
|||
|
||||
return IkarusEntityValue{
|
||||
._type = IkarusPropertyType_Text,
|
||||
._data = IkarusEntityValueData{.text = IkarusTextValue{._value = value}},
|
||||
._data = IkarusEntityValueData{._text = IkarusTextValue{._value = value}},
|
||||
._state = IkarusEntityValueState_Normal,
|
||||
};
|
||||
}
|
||||
|
|
@ -59,15 +59,15 @@ IkarusEntityValue ikarus_value_create_indeterminate(IkarusPropertyType type) {
|
|||
|
||||
switch (type) {
|
||||
case IkarusPropertyType_Toggle: {
|
||||
data.toggle = IkarusToggleValue{._value = false};
|
||||
data._toggle = IkarusToggleValue{._value = false};
|
||||
break;
|
||||
}
|
||||
case IkarusPropertyType_Number: {
|
||||
data.number = IkarusNumberValue{._value = 0.0};
|
||||
data._number = IkarusNumberValue{._value = 0.0};
|
||||
break;
|
||||
}
|
||||
case IkarusPropertyType_Text: {
|
||||
data.text = IkarusTextValue{._value = ""};
|
||||
data._text = IkarusTextValue{._value = ""};
|
||||
break;
|
||||
}
|
||||
default: return value_create_invalid(type);
|
||||
|
|
@ -133,9 +133,9 @@ bool ikarus_value_is_equal(IkarusEntityValue const * left, IkarusEntityValue con
|
|||
}
|
||||
|
||||
switch (left->_type) {
|
||||
case IkarusPropertyType_Toggle: return left->_data.toggle._value == right->_data.toggle._value;
|
||||
case IkarusPropertyType_Number: return left->_data.number._value == right->_data.number._value;
|
||||
case IkarusPropertyType_Text: return std::strcmp(left->_data.text._value, right->_data.text._value) == 0;
|
||||
case IkarusPropertyType_Toggle: return left->_data._toggle._value == right->_data._toggle._value;
|
||||
case IkarusPropertyType_Number: return left->_data._number._value == right->_data._number._value;
|
||||
case IkarusPropertyType_Text: return std::strcmp(left->_data._text._value, right->_data._text._value) == 0;
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -162,19 +162,19 @@ void ikarus_value_visit(
|
|||
switch (value->_type) {
|
||||
case IkarusPropertyType_Toggle: {
|
||||
if (toggle != nullptr) {
|
||||
toggle(&value->_data.toggle, data);
|
||||
toggle(&value->_data._toggle, data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IkarusPropertyType_Number: {
|
||||
if (number != nullptr) {
|
||||
number(&value->_data.number, data);
|
||||
number(&value->_data._number, data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IkarusPropertyType_Text: {
|
||||
if (text != nullptr) {
|
||||
text(&value->_data.text, data);
|
||||
text(&value->_data._text, data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -186,14 +186,14 @@ TEST_CASE("toggle_value_creation", "[value]") {
|
|||
auto toggle_value = ikarus_value_create_toggle(true);
|
||||
|
||||
REQUIRE(ikarus_value_get_type(&toggle_value) == IkarusPropertyType_Toggle);
|
||||
REQUIRE(ikarus_toggle_value_is_equal(&toggle_value._data.toggle, true));
|
||||
REQUIRE(ikarus_toggle_value_is_equal(&toggle_value._data._toggle, true));
|
||||
}
|
||||
|
||||
TEST_CASE("number_value_creation", "[value]") {
|
||||
auto number_value = ikarus_value_create_number(1.0);
|
||||
|
||||
REQUIRE(ikarus_value_get_type(&number_value) == IkarusPropertyType_Number);
|
||||
REQUIRE(ikarus_number_value_is_equal(&number_value._data.number, 1.0));
|
||||
REQUIRE(ikarus_number_value_is_equal(&number_value._data._number, 1.0));
|
||||
|
||||
auto nan_value = ikarus_value_create_number(std::numeric_limits<long double>::quiet_NaN());
|
||||
REQUIRE(ikarus_value_is_invalid(&nan_value));
|
||||
|
|
@ -209,7 +209,7 @@ TEST_CASE("text_value_creation", "[value]") {
|
|||
auto text_value = ikarus_value_create_text("test");
|
||||
|
||||
REQUIRE(ikarus_value_get_type(&text_value) == IkarusPropertyType_Text);
|
||||
REQUIRE(ikarus_text_value_is_equal(&text_value._data.text, "test"));
|
||||
REQUIRE(ikarus_text_value_is_equal(&text_value._data._text, "test"));
|
||||
|
||||
auto null_value = ikarus_value_create_text(nullptr);
|
||||
REQUIRE(ikarus_value_is_invalid(&null_value));
|
||||
|
|
@ -232,8 +232,8 @@ TEST_CASE("toggle_value_underlying", "[value]") {
|
|||
auto true_toggle_value = ikarus_value_create_toggle(true);
|
||||
auto false_toggle_value = ikarus_value_create_toggle(false);
|
||||
|
||||
REQUIRE(ikarus_toggle_value_get_underlying(&true_toggle_value._data.toggle) == true);
|
||||
REQUIRE(ikarus_toggle_value_get_underlying(&false_toggle_value._data.toggle) == false);
|
||||
REQUIRE(ikarus_toggle_value_get_underlying(&true_toggle_value._data._toggle) == true);
|
||||
REQUIRE(ikarus_toggle_value_get_underlying(&false_toggle_value._data._toggle) == false);
|
||||
}
|
||||
|
||||
TEST_CASE("number_value_underlying", "[value]") {
|
||||
|
|
@ -241,25 +241,25 @@ TEST_CASE("number_value_underlying", "[value]") {
|
|||
auto third_number_value = ikarus_value_create_number(1.0 / 3.0);
|
||||
auto large_number_value = ikarus_value_create_number(1.2345678910e123);
|
||||
|
||||
REQUIRE(ikarus_number_value_get_underlying(&zero_number_value._data.number) == 0.0);
|
||||
REQUIRE(ikarus_number_value_get_underlying(&third_number_value._data.number) == 1.0 / 3.0);
|
||||
REQUIRE(ikarus_number_value_get_underlying(&large_number_value._data.number) == 1.2345678910e123);
|
||||
REQUIRE(ikarus_number_value_get_underlying(&zero_number_value._data._number) == 0.0);
|
||||
REQUIRE(ikarus_number_value_get_underlying(&third_number_value._data._number) == 1.0 / 3.0);
|
||||
REQUIRE(ikarus_number_value_get_underlying(&large_number_value._data._number) == 1.2345678910e123);
|
||||
}
|
||||
|
||||
TEST_CASE("text_value_underlying", "[value]") {
|
||||
auto test_value = ikarus_value_create_text("test");
|
||||
auto empty_value = ikarus_value_create_text("");
|
||||
|
||||
REQUIRE(std::strcmp(ikarus_text_value_get_underlying(&test_value._data.text), "test") == 0);
|
||||
REQUIRE(std::strcmp(ikarus_text_value_get_underlying(&empty_value._data.text), "") == 0);
|
||||
REQUIRE(std::strcmp(ikarus_text_value_get_underlying(&test_value._data._text), "test") == 0);
|
||||
REQUIRE(std::strcmp(ikarus_text_value_get_underlying(&empty_value._data._text), "") == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("toggle_comparison", "[value]") {
|
||||
auto true_toggle_value = ikarus_value_create_toggle(true);
|
||||
auto false_toggle_value = ikarus_value_create_toggle(false);
|
||||
|
||||
REQUIRE(ikarus_toggle_value_is_equal(&true_toggle_value._data.toggle, true));
|
||||
REQUIRE(ikarus_toggle_value_is_equal(&false_toggle_value._data.toggle, false));
|
||||
REQUIRE(ikarus_toggle_value_is_equal(&true_toggle_value._data._toggle, true));
|
||||
REQUIRE(ikarus_toggle_value_is_equal(&false_toggle_value._data._toggle, false));
|
||||
}
|
||||
|
||||
TEST_CASE("number_comparison", "[value]") {
|
||||
|
|
@ -267,17 +267,17 @@ TEST_CASE("number_comparison", "[value]") {
|
|||
auto third_number_value = ikarus_value_create_number(1.0 / 3.0);
|
||||
auto large_number_value = ikarus_value_create_number(1.2345678910e123);
|
||||
|
||||
REQUIRE(ikarus_number_value_is_equal(&zero_number_value._data.number, 0.0));
|
||||
REQUIRE(ikarus_number_value_is_equal(&third_number_value._data.number, 1.0 / 6.0 + 1.0 / 6.0));
|
||||
REQUIRE(ikarus_number_value_is_equal(&large_number_value._data.number, 1.2345678910e123));
|
||||
REQUIRE(ikarus_number_value_is_equal(&zero_number_value._data._number, 0.0));
|
||||
REQUIRE(ikarus_number_value_is_equal(&third_number_value._data._number, 1.0 / 6.0 + 1.0 / 6.0));
|
||||
REQUIRE(ikarus_number_value_is_equal(&large_number_value._data._number, 1.2345678910e123));
|
||||
}
|
||||
|
||||
TEST_CASE("text_comparison", "[value]") {
|
||||
auto test_value = ikarus_value_create_text("test");
|
||||
auto empty_value = ikarus_value_create_text("");
|
||||
|
||||
REQUIRE(ikarus_text_value_is_equal(&test_value._data.text, "test"));
|
||||
REQUIRE(ikarus_text_value_is_equal(&empty_value._data.text, ""));
|
||||
REQUIRE(ikarus_text_value_is_equal(&test_value._data._text, "test"));
|
||||
REQUIRE(ikarus_text_value_is_equal(&empty_value._data._text, ""));
|
||||
}
|
||||
|
||||
TEST_CASE("value_comparison", "[value]") {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue