diff options
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/embind/embind.test.js | 11 | ||||
-rw-r--r-- | tests/embind/embind_test.cpp | 5 |
2 files changed, 16 insertions, 0 deletions
diff --git a/tests/embind/embind.test.js b/tests/embind/embind.test.js index ff20791d..0763f09a 100755 --- a/tests/embind/embind.test.js +++ b/tests/embind/embind.test.js @@ -147,6 +147,17 @@ module({ a.delete(); }); + test("calling method on unrelated class throws error (2)", function() { + // Base1 and Base2 both have the method 'getField()' exposed - make sure + // that calling the Base2 function with a 'this' instance of Base1 doesn't accidentally work! + var a = new cm.Base1; + var e = assert.throws(cm.BindingError, function() { + cm.Base2.prototype.getField.call(a); + }); + assert.equal('Expected null or instance of Base2 const*, got [object Object]', e.message); + a.delete(); + }); + test("calling method with invalid this throws error", function() { var e = assert.throws(cm.BindingError, function() { cm.Derived.prototype.setMember.call(undefined, "foo"); diff --git a/tests/embind/embind_test.cpp b/tests/embind/embind_test.cpp index 04771dbe..0439c832 100644 --- a/tests/embind/embind_test.cpp +++ b/tests/embind/embind_test.cpp @@ -1814,6 +1814,11 @@ EMSCRIPTEN_BINDINGS(tests) { function("embind_attempt_to_modify_smart_pointer_when_passed_by_value", embind_attempt_to_modify_smart_pointer_when_passed_by_value);
function("embind_save_smart_base_pointer", embind_save_smart_base_pointer);
+ class_<Base1>("Base1")
+ .constructor()
+ .function("getField", &Base1::getField)
+ ;
+
class_<Base2>("Base2")
.function("getField", &Base2::getField)
.property("field", &Base2::field2)
|