// Anything but an object, array, or undefined. function invalidMergeArgumentSpecifier() { return JSC.one_of([ (function() { return function() {}; }), JSC.integer(), JSC.number(), JSC.string(), true, Infinity, -Infinity ]); }
check(100, [ JSC.array([TestUtils.TraversableObjectSpecifier]) ], function(array) { var immutable = Immutable(array); var mutable = array.slice(); var idx = JSC.integer(0, array.length-1); var key = JSC.one_of(_.keys(immutable[idx]))(); var value; do { value = JSC.any()(); } while (TestUtils.isDeepEqual(value, immutable[idx][key])); TestUtils.assertJsonEqual(immutable, mutable); var resultImmutable = Immutable.setIn(immutable, [idx, key], value, {deep: true}); var resultMutable = mutable.slice(); resultMutable[idx][key] = value; TestUtils.assertJsonEqual( resultImmutable, resultMutable ); assert.notEqual( immutable, resultImmutable ); assert.equal( Immutable.setIn(resultImmutable, [idx, key], value, {deep: true}), resultImmutable ); });
function TraversableObjectSpecifier() { var complexFactory = JSC.one_of([ComplexObjectSpecifier(), JSC.array()]); var obj = JSC.object({complex: complexFactory, deep: JSC.object({complex: complexFactory}) })(); obj[JSC.string()()] = JSC.any()(); return withoutItengerKeys(obj); }
check(100, [ JSC.array([TestUtils.TraversableObjectSpecifier]) ], function(array) { var immutable = Immutable(array); var idx = JSC.integer(0, array.length-1); var key = JSC.one_of(_.keys(immutable[idx]))(); var value = immutable[idx][key]; TestUtils.assertJsonEqual( Immutable.getIn(immutable, [idx, key]), value ); });
var obj = _.object(_.map(JSC.array()(), function() { var key = JSC.string()(); var value = JSC.one_of([JSC.array(), JSC.object(), JSC.falsy(), JSC.integer(), JSC.number(), JSC.string(), true, Infinity, -Infinity])(); if (typeof value === "object") { return [key, withoutItengerKeys(value)]; } return [key, value]; }));
check(100, [ JSC.array([TestUtils.TraversableObjectSpecifier]) ], function(array) { var immutable = Immutable(array); var mutable = array.slice(); var value = JSC.any()(); var idx = JSC.integer(0, array.length-1); var key = JSC.one_of(_.keys(immutable[idx]))(); var util = require('util'); function printArr(arr) { return '[\n\t>'+_.map(arr, util.inspect).join('\n\t>')+'\n]'; } TestUtils.assertJsonEqual(immutable, mutable); var resultMutable = mutable.slice(); resultMutable[idx][key] = value; TestUtils.assertJsonEqual( Immutable.setIn(immutable, [idx, key], value), resultMutable ); });