cryo
Version:
Easily pickle/serialize/freeze/store and re-hydrate complex JavaScript objects (including Functions)
112 lines (92 loc) • 2.93 kB
JavaScript
var mocha = require('mocha');
var assert = require('chai').assert;
var Cryo = require('../lib/cryo');
describe('Object', function() {
it('should hydrate an empty object', function() {
var original = {};
var stringified = Cryo.stringify(original);
var hydrated = Cryo.parse(stringified);
assert.deepEqual(hydrated, original);
});
it('should hydrate an object with a string property', function() {
var original = {
myString: 'my string'
};
var stringified = Cryo.stringify(original);
var hydrated = Cryo.parse(stringified);
assert.deepEqual(hydrated, original);
});
it('should hydrate an object with a number property', function() {
var original = {
myNum: -128
};
var stringified = Cryo.stringify(original);
var hydrated = Cryo.parse(stringified);
assert.deepEqual(hydrated, original);
});
it('should hydrate an object with a boolean property', function() {
var original = {
myBool: false
};
var stringified = Cryo.stringify(original);
var hydrated = Cryo.parse(stringified);
assert.deepEqual(hydrated, original);
});
it('should hydrate an object with an array property', function() {
var original = {
myArray: ['a', 2, 3, 'd', false, true]
};
var stringified = Cryo.stringify(original);
var hydrated = Cryo.parse(stringified);
assert.deepEqual(hydrated, original);
});
it('should hydrate an object with an null property', function() {
var original = {
myNull: null
};
var stringified = Cryo.stringify(original);
var hydrated = Cryo.parse(stringified);
assert.deepEqual(hydrated, original);
});
it('should hydrate an object with an undefined property', function() {
var original = {
myUndefined: undefined
};
var stringified = Cryo.stringify(original);
var hydrated = Cryo.parse(stringified);
assert.deepEqual(hydrated, original);
});
it('should hydrate an object with several native types', function() {
var original = {
myString: 'my string',
myNum: 128,
myArray: ['a', 2, 3, 'd', false, true],
myBool: false,
myNull: null,
myUndefined: undefined
};
var stringified = Cryo.stringify(original);
var hydrated = Cryo.parse(stringified);
assert.deepEqual(hydrated, original);
});
it('should hydrate an object with nested objects', function() {
var original = {
first: {
second: {
myString: 'my string',
myNum: 128,
myArray: ['a', 2, 3, 'd', false, true],
myBool: false,
myNull: null,
myUndefined: undefined
},
secondSibling: [1, 2, 3],
thirdSibling: undefined
},
firstSibling: 'hello'
};
var stringified = Cryo.stringify(original);
var hydrated = Cryo.parse(stringified);
assert.deepEqual(hydrated, original);
});
});