var test = require('tap').test var sigmund = require('../sigmund.js') // occasionally there are duplicates // that's an acceptable edge-case. JSON.stringify and util.inspect // have some collision potential as well, though less, and collision // detection is expensive. var hash = '{abc/def/g{0h1i2{jkl' var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} var obj3 = JSON.parse(JSON.stringify(obj1)) obj3.c = /def/ obj3.g[2].cycle = obj3 var cycleHash = '{abc/def/g{0h1i2{jklcycle' test('basic', function (t) { t.equal(sigmund(obj1), hash) t.equal(sigmund(obj2), hash) t.equal(sigmund(obj3), cycleHash) t.end() })