copy.js 703 Bytes
"use strict";

var stringify = JSON.stringify;

module.exports = function (t, a) {
	var o = { 1: "raz", 2: "dwa", 3: "trzy" }, no = t(o);

	a.not(no, o, "Return different object");
	a(stringify(no), stringify(o), "Match properties and values");

	o = {
		foo: "bar",
		raz: {
			dwa: "dwa",
			trzy: { cztery: "pięć", sześć: "siedem" },
			osiem: {},
			dziewięć: function () {}
		},
		dziesięć: 10
	};
	o.raz.rec = o;

	no = t(o);
	a(o.raz, no.raz, "Shallow");

	a.deep(t(o, ["foo"]), { foo: "bar" });
	a.deep(t(Object.create(o), ["foo"]), { foo: "bar" });
	a.deep(t(o, ["foo", "habla"]), { foo: "bar" });
	a.deep(t(o, ["foo", "habla"], { ensure: true }), { foo: "bar", habla: undefined });
};