diff --git a/reflections/get-set/get-set-test.js b/reflections/get-set/get-set-test.js index 529ba30..2fc0f58 100644 --- a/reflections/get-set/get-set-test.js +++ b/reflections/get-set/get-set-test.js @@ -90,3 +90,18 @@ QUnit.test("setValue", function(){ QUnit.deepEqual(obj, {value: 2}, "can.setValue"); }); + +QUnit.test("splice", function(){ + var arr = ["a","b"]; + + getSetReflections.splice(arr, 0, 1); + + QUnit.deepEqual(arr, ["b"], "removes item with no additions"); + + arr = ["a","b"]; + + getSetReflections.splice(arr, 0, 1, ["c", "d"]); + + QUnit.deepEqual(arr, ["c","d","b"], "removes item with no additions"); + +}); diff --git a/reflections/get-set/get-set.js b/reflections/get-set/get-set.js index 604087d..e9fc7a6 100644 --- a/reflections/get-set/get-set.js +++ b/reflections/get-set/get-set.js @@ -191,6 +191,10 @@ var reflections = { howMany = removing; } + if(arguments.length <= 3){ + adding = []; + } + var splice = obj[canSymbol.for("can.splice")]; if(splice) { return splice.call(obj, index, howMany, adding); diff --git a/reflections/type/type-test.js b/reflections/type/type-test.js index 5f2b080..468dd3f 100644 --- a/reflections/type/type-test.js +++ b/reflections/type/type-test.js @@ -82,6 +82,8 @@ QUnit.test("isMapLike", function(){ QUnit.test("isMoreListLikeThanMapLike", function(){ QUnit.equal(typeReflections.isMoreListLikeThanMapLike({}), false, "Object"); QUnit.equal(typeReflections.isMoreListLikeThanMapLike([]), true, "Array"); + QUnit.equal(typeReflections.isMoreListLikeThanMapLike(undefined), "undefined", "undefined"); + QUnit.equal(typeReflections.isMoreListLikeThanMapLike(null), "undefined", "null"); }); QUnit.test("isObservableLike", function(){ diff --git a/reflections/type/type.js b/reflections/type/type.js index bdeb326..4de0017 100644 --- a/reflections/type/type.js +++ b/reflections/type/type.js @@ -453,6 +453,9 @@ module.exports = { if(obj instanceof Array) { return true; } + if(obj === undefined || obj === null) { + return "undefined"; + } var value = obj[canSymbol.for("can.isMoreListLikeThanMapLike")]; if(value !== undefined) { return value;