| 33 | } |
| 34 | |
| 35 | void NormalJsCallback(const CallbackInfo& info) { |
| 36 | Napi::Function fn = info[0].As<Function>(); |
| 37 | uint32_t magic_number = info[1].As<Number>().Uint32Value(); |
| 38 | |
| 39 | Maybe<Value> ret = fn.Call({}); |
| 40 | |
| 41 | assert(ret.IsNothing() == false); |
| 42 | assert(ret.IsJust() == true); |
| 43 | |
| 44 | Napi::Value unwrappedValue = ret.Unwrap(); |
| 45 | assert(unwrappedValue.IsNumber() == true); |
| 46 | |
| 47 | assert(unwrappedValue.As<Number>().Uint32Value() == magic_number); |
| 48 | |
| 49 | unwrappedValue = |
| 50 | ret.UnwrapOr(Napi::Number::New(info.Env(), magic_number - 1)); |
| 51 | assert(unwrappedValue.As<Number>().Uint32Value() == magic_number); |
| 52 | |
| 53 | Napi::Value placeHolder = Napi::Number::New(info.Env(), magic_number - 1); |
| 54 | assert(ret.UnwrapTo(&placeHolder) == true); |
| 55 | assert(placeHolder.As<Number>().Uint32Value() == magic_number); |
| 56 | } |
| 57 | |
| 58 | } // end anonymous namespace |
| 59 | |