test build again after making error exception safe

This commit is contained in:
keldu.magnus 2021-03-19 19:59:31 +01:00
parent dd3ff31aa0
commit 5b6d34b3e3
6 changed files with 28 additions and 26 deletions

View File

@ -122,7 +122,7 @@ template <typename T> ErrorOr<FixVoid<T>> Conveyor<T>::take() {
if (storage->queued() > 0) {
ErrorOr<FixVoid<T>> result;
node->getResult(result);
return ErrorOr<FixVoid<T>>{result};
return result;
} else {
return ErrorOr<FixVoid<T>>{
recoverableError("Conveyor buffer has no elements")};

View File

@ -1017,7 +1017,7 @@ Error JsonCodec::decode(typename T::Builder builder, Buffer &buffer,
ErrorOr<Own<DynamicMessage>> error_or_message = decodeDynamic(view, limits);
if (error_or_message.isError()) {
return error_or_message.error();
return std::move(error_or_message.error());
}
Own<DynamicMessage> message = std::move(error_or_message.value());

View File

@ -19,7 +19,7 @@ GIN_TEST("Async Immediate"){
ErrorOr<bool> error_or_number = is_number.take();
GIN_EXPECT(!error_or_number.isError(), "Return is an error: " + error_or_number.error().message());
GIN_EXPECT(!error_or_number.isError(), error_or_number.error().message());
GIN_EXPECT(error_or_number.isValue(), "Return is not a value");
GIN_EXPECT(error_or_number.value(), "Value is not 5");
}
@ -36,7 +36,7 @@ GIN_TEST("Async Adapt"){
ErrorOr<size_t> foo = feeder_conveyor.conveyor.take();
GIN_EXPECT(!foo.isError(), "Return is an error: " + foo.error().message());
GIN_EXPECT(!foo.isError(), foo.error().message());
GIN_EXPECT(foo.isValue(), "Return is not a value");
GIN_EXPECT(foo.value() == 5, "Values not 5, but " + std::to_string(foo.value()));
}
@ -54,7 +54,7 @@ GIN_TEST("Async Adapt Multiple"){
ErrorOr<size_t> foo = feeder_conveyor.conveyor.take();
GIN_EXPECT(!foo.isError(), "Return is an error: " + foo.error().message());
GIN_EXPECT(!foo.isError(), foo.error().message());
GIN_EXPECT(foo.isValue(), "Return is not a value");
GIN_EXPECT(foo.value() == 5, "Values not 5, but " + std::to_string(foo.value()));
@ -62,7 +62,7 @@ GIN_TEST("Async Adapt Multiple"){
ErrorOr<size_t> bar = feeder_conveyor.conveyor.take();
GIN_EXPECT(!bar.isError(), "Return is an error: " + bar.error().message());
GIN_EXPECT(!foo.isError(), bar.error().message());
GIN_EXPECT(bar.isValue(), "Return is not a value");
GIN_EXPECT(bar.value() == 10, "Values not 10, but " + std::to_string(bar.value()));
@ -72,11 +72,11 @@ GIN_TEST("Async Adapt Multiple"){
ErrorOr<size_t> a = feeder_conveyor.conveyor.take();
ErrorOr<size_t> b = feeder_conveyor.conveyor.take();
GIN_EXPECT(!a.isError(), "Return is an error: " + a.error().message());
GIN_EXPECT(!foo.isError(), a.error().message());
GIN_EXPECT(a.isValue(), "Return is not a value");
GIN_EXPECT(a.value() == 2, "Values not 2, but " + std::to_string(a.value()));
GIN_EXPECT(!b.isError(), "Return is an error: " + b.error().message());
GIN_EXPECT(!foo.isError(), b.error().message());
GIN_EXPECT(b.isValue(), "Return is not a value");
GIN_EXPECT(b.value() == 4234, "Values not 4234, but " + std::to_string(b.value()));
}
@ -97,7 +97,7 @@ GIN_TEST("Async Conversion"){
ErrorOr<std::string> foo = string_conveyor.take();
GIN_EXPECT(!foo.isError(), "Return is an error: " + foo.error().message());
GIN_EXPECT(!foo.isError(), foo.error().message());
GIN_EXPECT(foo.isValue(), "Return is not a value");
GIN_EXPECT(foo.value() == std::to_string(10), "Values is not 10, but " + foo.value());
}
@ -122,7 +122,7 @@ GIN_TEST("Async Conversion Multistep"){
ErrorOr<bool> foo = conveyor.take();
GIN_EXPECT(!foo.isError(), "Return is an error: " + foo.error().message());
GIN_EXPECT(!foo.isError(), foo.error().message());
GIN_EXPECT(foo.isValue(), "Return is not a value");
GIN_EXPECT(foo.value(), "Values is not true");
}
@ -165,19 +165,19 @@ GIN_TEST("Async Scheduling"){
ErrorOr<std::string> foo_10 = string_conveyor.take();
GIN_EXPECT(!foo_10.isError(), "Return is an error: " + foo_10.error().message());
GIN_EXPECT(!foo_10.isError(), foo_10.error().message());
GIN_EXPECT(foo_10.isValue(), "Return is not a value");
GIN_EXPECT(foo_10.value() == (std::string{"pre"} + std::to_string(11) + std::string{"post"}), "Values is not pre11post, but " + foo_10.value());
ErrorOr<std::string> foo_20 = string_conveyor.take();
GIN_EXPECT(!foo_20.isError(), "Return is an error: " + foo_20.error().message());
GIN_EXPECT(!foo_20.isError(), foo_20.error().message());
GIN_EXPECT(foo_20.isValue(), "Return is not a value");
GIN_EXPECT(foo_20.value() == (std::string{"pre"} + std::to_string(22) + std::string{"post"}), "Values is not pre22post, but " + foo_20.value());
ErrorOr<std::string> foo_30 = string_conveyor.take();
GIN_EXPECT(!foo_30.isError(), "Return is an error: " + foo_30.error().message());
GIN_EXPECT(!foo_30.isError(), foo_30.error().message());
GIN_EXPECT(foo_30.isValue(), "Return is not a value");
GIN_EXPECT(foo_30.value() == (std::string{"pre"} + std::to_string(33) + std::string{"post"}), "Values is not pre33post, but " + foo_30.value());
}

View File

@ -91,7 +91,7 @@ GIN_TEST("JSON Union Encoding"){
Error error = codec.encode<TestUnion>(root.asReader(), buffer);
GIN_EXPECT(!error.failed(), "Error: " + error.message());
GIN_EXPECT(!error.failed(), error.message());
std::string expected_result{"{\"test_uint\":23}"};
@ -110,7 +110,7 @@ GIN_TEST("JSON Union Encoding"){
Error error = codec.encode<TestUnion>(root.asReader(), buffer);
GIN_EXPECT(!error.failed(), "Error: " + error.message());
GIN_EXPECT(!error.failed(), error.message());
std::string expected_result{"{\"test_string\":\"foo\"}"};
@ -286,4 +286,4 @@ GIN_TEST ("JSON.org Decoding Example"){
// (void) gloss_div_reader;
}
}
}

View File

@ -33,7 +33,7 @@ GIN_TEST("Primitive Encoding"){
Error error = ProtoKelEncodeImpl<TestSize>::encode(root.asReader(), temp_buffer);
GIN_EXPECT(!error.failed(), "Error: " + error.message());
GIN_EXPECT(!error.failed(), error.message());
GIN_EXPECT(temp_buffer.readCompositeLength() == sizeof(value), "Bad Size: " + std::to_string(temp_buffer.readCompositeLength()));
GIN_EXPECT(temp_buffer[0] == 5 && temp_buffer[1] == 0 && temp_buffer[2] == 0 && temp_buffer[3] == 0, "Wrong encoded values");
}
@ -54,7 +54,7 @@ GIN_TEST("List Encoding"){
Error error = codec.encode<TestList>(root.asReader(), buffer);
GIN_EXPECT(!error.failed(), "Error: " + error.message());
GIN_EXPECT(!error.failed(), error.message());
GIN_EXPECT(buffer.readCompositeLength() == 14, "Bad Size: " + std::to_string(buffer.readCompositeLength()));
GIN_EXPECT("06 00 00 00\n00 00 00 00\nbf 94 20 00\n5f ab" == buffer.toHex(), "Not equal encoding\n"+buffer.toHex());
}
@ -80,7 +80,7 @@ GIN_TEST("Struct Encoding"){
Error error = codec.encode<TestStruct>(root.asReader(), buffer);
GIN_EXPECT(!error.failed(), "Error: " + error.message());
GIN_EXPECT(!error.failed(), error.message());
GIN_EXPECT(buffer.readCompositeLength() == 40, "Bad Size: " + std::to_string(buffer.readCompositeLength()));
GIN_EXPECT("20 00 00 00\n00 00 00 00\n17 00 00 00\n03 00 00 00\n00 00 00 00\n66 6f 6f 09\n00 00 00 00\n00 00 00 74\n65 73 74 5f\n6e 61 6d 65"
== buffer.toHex(), "Not equal encoding:\n"+buffer.toHex());
@ -100,7 +100,7 @@ GIN_TEST("Union Encoding"){
Error error = codec.encode<TestUnion>(root.asReader(), buffer);
GIN_EXPECT(!error.failed(), "Error: " + error.message());
GIN_EXPECT(!error.failed(), error.message());
GIN_EXPECT(buffer.readCompositeLength() == 16, "Bad Size: " + std::to_string(buffer.readCompositeLength()));
GIN_EXPECT("08 00 00 00\n00 00 00 00\n00 00 00 00\n17 00 00 00"
== buffer.toHex(), "Not equal encoding:\n"+buffer.toHex());
@ -117,7 +117,7 @@ GIN_TEST("Union Encoding"){
Error error = codec.encode<TestUnion>(root.asReader(), buffer);
GIN_EXPECT(!error.failed(), "Error: " + error.message());
GIN_EXPECT(!error.failed(), error.message());
GIN_EXPECT(buffer.readCompositeLength() == 23, "Bad Size: " + std::to_string(buffer.readCompositeLength()));
GIN_EXPECT("0f 00 00 00\n00 00 00 00\n01 00 00 00\n03 00 00 00\n00 00 00 00\n66 6f 6f"
== buffer.toHex(), "Not equal encoding:\n"+buffer.toHex());
@ -137,7 +137,7 @@ GIN_TEST("List Decoding"){
auto root = builder.initRoot<TestList>();
Error error = codec.decode<TestList>(root, buffer);
GIN_EXPECT(!error.failed(), std::string{"Error: "} + error.message());
GIN_EXPECT(!error.failed(), error.message());
auto reader = root.asReader();
@ -166,7 +166,7 @@ GIN_TEST("Struct Decoding"){
auto test_uint = reader.get<decltype("test_uint"_t)>();
auto test_name = reader.get<decltype("test_name"_t)>();
GIN_EXPECT(!error.failed(), std::string{"Error: "} + error.message());
GIN_EXPECT(!error.failed(), error.message());
GIN_EXPECT(foo_string.get() == "foo" && test_uint.get() == 23 && test_name.get() == "test_name", "Values not correctly decoded");
}
@ -185,7 +185,7 @@ GIN_TEST("Union Decoding"){
Error error = codec.decode<TestUnion>(root, buffer);
GIN_EXPECT(!error.failed(), "Error: " + error.message());
GIN_EXPECT(!error.failed(), error.message());
GIN_EXPECT(reader.holdsAlternative<decltype("test_string"_t)>(), "Wrong union value");
auto str_rd = reader.get<decltype("test_string"_t)>();
GIN_EXPECT(str_rd.get() == "foo", "Wrong value: " + std::string{str_rd.get()});

View File

@ -3,6 +3,7 @@
#include <string>
#include <memory>
#include <stdexcept>
#include <type_traits>
#include "common.h"
@ -35,7 +36,8 @@ public:
}GIN_UNIQUE_NAME(testCase); \
void GIN_UNIQUE_NAME(TestCase)::run()
#define GIN_EXPECT(expr, msg) \
#define GIN_EXPECT(expr, msg_split) \
if( ! (expr) ){ \
throw std::runtime_error{msg}; \
auto msg = msg_split; \
throw std::runtime_error{std::string{msg}};\
}