@@ -36,6 +36,14 @@ Value HasPropertyWithCppStyleString(const CallbackInfo& info);
3636Value AddFinalizer (const CallbackInfo& info);
3737Value AddFinalizerWithHint (const CallbackInfo& info);
3838
39+ // Native wrappers for testing Object::operator []
40+ Value SubscriptGetWithCStyleString (const CallbackInfo& info);
41+ Value SubscriptGetWithCppStyleString (const CallbackInfo& info);
42+ Value SubscriptGetAtIndex (const CallbackInfo& info);
43+ void SubscriptSetWithCStyleString (const CallbackInfo& info);
44+ void SubscriptSetWithCppStyleString (const CallbackInfo& info);
45+ void SubscriptSetAtIndex (const CallbackInfo& info);
46+
3947static bool testValue = true ;
4048// Used to test void* Data() integrity
4149struct UserDataHolder {
@@ -69,6 +77,19 @@ Value TestFunctionWithUserData(const CallbackInfo& info) {
6977 return Number::New (info.Env (), holder->value );
7078}
7179
80+ Value EmptyConstructor (const CallbackInfo& info) {
81+ auto env = info.Env ();
82+ bool isEmpty = info[0 ].As <Boolean>();
83+ Object object = isEmpty ? Object () : Object (env, Object::New (env));
84+ return Boolean::New (env, object.IsEmpty ());
85+ }
86+
87+ Value ConstructorFromObject (const CallbackInfo& info) {
88+ auto env = info.Env ();
89+ Object object = info[0 ].As <Object>();
90+ return Object (env, object);
91+ }
92+
7293Array GetPropertyNames (const CallbackInfo& info) {
7394 Object obj = info[0 ].As <Object>();
7495 Array arr = obj.GetPropertyNames ();
@@ -228,9 +249,18 @@ Value CreateObjectUsingMagic(const CallbackInfo& info) {
228249 return obj;
229250}
230251
252+ Value InstanceOf (const CallbackInfo& info) {
253+ Object obj = info[0 ].As <Object>();
254+ Function constructor = info[1 ].As <Function>();
255+ return Boolean::New (info.Env (), obj.InstanceOf (constructor));
256+ }
257+
231258Object InitObject (Env env) {
232259 Object exports = Object::New (env);
233260
261+ exports[" emptyConstructor" ] = Function::New (env, EmptyConstructor);
262+ exports[" constructorFromObject" ] = Function::New (env, ConstructorFromObject);
263+
234264 exports[" GetPropertyNames" ] = Function::New (env, GetPropertyNames);
235265 exports[" defineProperties" ] = Function::New (env, DefineProperties);
236266 exports[" defineValueProperty" ] = Function::New (env, DefineValueProperty);
@@ -265,5 +295,18 @@ Object InitObject(Env env) {
265295 exports[" addFinalizer" ] = Function::New (env, AddFinalizer);
266296 exports[" addFinalizerWithHint" ] = Function::New (env, AddFinalizerWithHint);
267297
298+ exports[" instanceOf" ] = Function::New (env, InstanceOf);
299+
300+ exports[" subscriptGetWithCStyleString" ] =
301+ Function::New (env, SubscriptGetWithCStyleString);
302+ exports[" subscriptGetWithCppStyleString" ] =
303+ Function::New (env, SubscriptGetWithCppStyleString);
304+ exports[" subscriptGetAtIndex" ] = Function::New (env, SubscriptGetAtIndex);
305+ exports[" subscriptSetWithCStyleString" ] =
306+ Function::New (env, SubscriptSetWithCStyleString);
307+ exports[" subscriptSetWithCppStyleString" ] =
308+ Function::New (env, SubscriptSetWithCppStyleString);
309+ exports[" subscriptSetAtIndex" ] = Function::New (env, SubscriptSetAtIndex);
310+
268311 return exports;
269312}
0 commit comments