2ab50e558aea8582bca224e512e40129ab71d367
[platform/framework/web/wrtjs.git] / device_home / node_modules / qs / test / utils.js
1 "use strict";var test=require("tape"),inspect=require("object-inspect"),SaferBuffer=require("safer-buffer").Buffer,forEach=require("for-each"),utils=require("../lib/utils");test("merge()",(function(e){e.deepEqual(utils.merge(null,!0),[null,!0],"merges true into null"),e.deepEqual(utils.merge(null,[42]),[null,42],"merges null into an array"),e.deepEqual(utils.merge({a:"b"},{a:"c"}),{a:["b","c"]},"merges two objects with the same key");var a=utils.merge({foo:"bar"},{foo:{first:"123"}});e.deepEqual(a,{foo:["bar",{first:"123"}]},"merges a standalone and an object into an array");var r=utils.merge({foo:["bar",{first:"123"}]},{foo:{second:"456"}});e.deepEqual(r,{foo:{0:"bar",1:{first:"123"},second:"456"}},"merges a standalone and two objects into an array");var t=utils.merge({foo:["bar",{first:"123",second:"456"}]},{foo:"baz"});e.deepEqual(t,{foo:["bar",{first:"123",second:"456"},"baz"]},"merges an object sandwiched by two standalones into an array");var n=utils.merge({foo:["baz"]},{foo:["bar","xyzzy"]});e.deepEqual(n,{foo:["baz","bar","xyzzy"]});var u=utils.merge({foo:"baz"},"bar");e.deepEqual(u,{foo:"baz",bar:!0}),e.test("avoids invoking array setters unnecessarily",{skip:"function"!=typeof Object.defineProperty},(function(e){var a=0,r=0,t=[];Object.defineProperty(t,0,{get:function(){return r+=1,{bar:"baz"}},set:function(){a+=1}}),utils.merge(t,[null]),e.equal(a,0),e.equal(r,1),t[0]=t[0],e.equal(a,1),e.equal(r,2),e.end()})),e.end()})),test("assign()",(function(e){var a={a:1,b:2},r={b:3,c:4},t=utils.assign(a,r);e.equal(t,a,"returns the target"),e.deepEqual(a,{a:1,b:3,c:4},"target and source are merged"),e.deepEqual(r,{b:3,c:4},"source is untouched"),e.end()})),test("combine()",(function(e){e.test("both arrays",(function(e){var a=[1],r=[2],t=utils.combine(a,r);e.deepEqual(a,[1],"a is not mutated"),e.deepEqual(r,[2],"b is not mutated"),e.notEqual(a,t,"a !== combined"),e.notEqual(r,t,"b !== combined"),e.deepEqual(t,[1,2],"combined is a + b"),e.end()})),e.test("one array, one non-array",(function(e){var a=[1],r=[2],t=utils.combine(1,r);e.deepEqual(r,[2],"b is not mutated"),e.notEqual(1,t,"aN + b !== aN"),e.notEqual(a,t,"aN + b !== a"),e.notEqual(2,t,"aN + b !== bN"),e.notEqual(r,t,"aN + b !== b"),e.deepEqual([1,2],t,"first argument is array-wrapped when not an array");var n=utils.combine(a,2);e.deepEqual(a,[1],"a is not mutated"),e.notEqual(1,n,"a + bN !== aN"),e.notEqual(a,n,"a + bN !== a"),e.notEqual(2,n,"a + bN !== bN"),e.notEqual(r,n,"a + bN !== b"),e.deepEqual([1,2],n,"second argument is array-wrapped when not an array"),e.end()})),e.test("neither is an array",(function(e){var a=utils.combine(1,2);e.notEqual(1,a,"1 + 2 !== 1"),e.notEqual(2,a,"1 + 2 !== 2"),e.deepEqual([1,2],a,"both arguments are array-wrapped when not an array"),e.end()})),e.end()})),test("isBuffer()",(function(e){forEach([null,void 0,!0,!1,"","abc",42,0,NaN,{},[],function(){},/a/g],(function(a){e.equal(utils.isBuffer(a),!1,inspect(a)+" is not a buffer")}));var a={constructor:Buffer};e.equal(utils.isBuffer(a),!1,"fake buffer is not a buffer");var r=SaferBuffer.from("abc");e.equal(utils.isBuffer(r),!0,"SaferBuffer instance is a buffer");var t=Buffer.from?Buffer.from("abc"):new Buffer("abc");e.equal(utils.isBuffer(t),!0,"real Buffer instance is a buffer"),e.end()}));