|
| 1 | +#include <string.h> |
1 | 2 | #include <future>
|
| 3 | +#include "assert.h" |
2 | 4 | #include "napi.h"
|
3 | 5 |
|
4 | 6 | using namespace Napi;
|
@@ -69,6 +71,34 @@ void LastExceptionErrorCode(const CallbackInfo& info) {
|
69 | 71 | NAPI_THROW_VOID(Error::New(env));
|
70 | 72 | }
|
71 | 73 |
|
| 74 | +void TestErrorCopySemantics(const Napi::CallbackInfo& info) { |
| 75 | + Napi::Error newError = Napi::Error::New(info.Env(), "errorCopyCtor"); |
| 76 | + Napi::Error existingErr; |
| 77 | + |
| 78 | +#ifdef NAPI_CPP_EXCEPTIONS |
| 79 | + std::string msg = "errorCopyCtor"; |
| 80 | + assert(strcmp(newError.what(), msg.c_str()) == 0); |
| 81 | +#endif |
| 82 | + |
| 83 | + Napi::Error errCopyCtor = newError; |
| 84 | + assert(errCopyCtor.Message() == "errorCopyCtor"); |
| 85 | + |
| 86 | + existingErr = newError; |
| 87 | + assert(existingErr.Message() == "errorCopyCtor"); |
| 88 | +} |
| 89 | + |
| 90 | +void TestErrorMoveSemantics(const Napi::CallbackInfo& info) { |
| 91 | + std::string errorMsg = "errorMoveCtor"; |
| 92 | + Napi::Error newError = Napi::Error::New(info.Env(), errorMsg.c_str()); |
| 93 | + Napi::Error errFromMove = std::move(newError); |
| 94 | + assert(errFromMove.Message() == "errorMoveCtor"); |
| 95 | + |
| 96 | + newError = Napi::Error::New(info.Env(), "errorMoveAssign"); |
| 97 | + Napi::Error existingErr = std::move(newError); |
| 98 | + |
| 99 | + assert(existingErr.Message() == "errorMoveAssign"); |
| 100 | +} |
| 101 | + |
72 | 102 | #ifdef NAPI_CPP_EXCEPTIONS
|
73 | 103 |
|
74 | 104 | void ThrowJSError(const CallbackInfo& info) {
|
@@ -328,6 +358,10 @@ void ThrowDefaultError(const CallbackInfo& info) {
|
328 | 358 | Object InitError(Env env) {
|
329 | 359 | Object exports = Object::New(env);
|
330 | 360 | exports["throwApiError"] = Function::New(env, ThrowApiError);
|
| 361 | + exports["testErrorCopySemantics"] = |
| 362 | + Function::New(env, TestErrorCopySemantics); |
| 363 | + exports["testErrorMoveSemantics"] = |
| 364 | + Function::New(env, TestErrorMoveSemantics); |
331 | 365 | exports["lastExceptionErrorCode"] =
|
332 | 366 | Function::New(env, LastExceptionErrorCode);
|
333 | 367 | exports["throwJSError"] = Function::New(env, ThrowJSError);
|
|
0 commit comments