diff --git a/source/async.tmpl.h b/source/async.tmpl.h index c01bf55..99b1a61 100644 --- a/source/async.tmpl.h +++ b/source/async.tmpl.h @@ -122,7 +122,7 @@ template ErrorOr> Conveyor::take() { if (storage->queued() > 0) { ErrorOr> result; node->getResult(result); - return ErrorOr>{result}; + return result; } else { return ErrorOr>{ recoverableError("Conveyor buffer has no elements")}; diff --git a/source/json.h b/source/json.h index 7548347..0a7df73 100644 --- a/source/json.h +++ b/source/json.h @@ -1017,7 +1017,7 @@ Error JsonCodec::decode(typename T::Builder builder, Buffer &buffer, ErrorOr> error_or_message = decodeDynamic(view, limits); if (error_or_message.isError()) { - return error_or_message.error(); + return std::move(error_or_message.error()); } Own message = std::move(error_or_message.value()); diff --git a/test/async.cpp b/test/async.cpp index 3faf985..c3377ce 100644 --- a/test/async.cpp +++ b/test/async.cpp @@ -19,7 +19,7 @@ GIN_TEST("Async Immediate"){ ErrorOr 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 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 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 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 a = feeder_conveyor.conveyor.take(); ErrorOr 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 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 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 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 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 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()); } diff --git a/test/json.cpp b/test/json.cpp index 45c2503..25796b7 100644 --- a/test/json.cpp +++ b/test/json.cpp @@ -91,7 +91,7 @@ GIN_TEST("JSON Union Encoding"){ Error error = codec.encode(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(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; } -} \ No newline at end of file +} diff --git a/test/proto_kel.cpp b/test/proto_kel.cpp index aac2c34..60f4a0f 100644 --- a/test/proto_kel.cpp +++ b/test/proto_kel.cpp @@ -33,7 +33,7 @@ GIN_TEST("Primitive Encoding"){ Error error = ProtoKelEncodeImpl::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(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(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(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(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(); Error error = codec.decode(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(); auto test_name = reader.get(); - 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(root, buffer); - GIN_EXPECT(!error.failed(), "Error: " + error.message()); + GIN_EXPECT(!error.failed(), error.message()); GIN_EXPECT(reader.holdsAlternative(), "Wrong union value"); auto str_rd = reader.get(); GIN_EXPECT(str_rd.get() == "foo", "Wrong value: " + std::string{str_rd.get()}); diff --git a/test/suite/suite.h b/test/suite/suite.h index db2d846..73412a5 100644 --- a/test/suite/suite.h +++ b/test/suite/suite.h @@ -3,6 +3,7 @@ #include #include #include +#include #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}};\ }