"Outside lower and right are padded with walls" : function() { var view = [['6', 'w', 'w'], ['w', 'w', 'w'], ['w', 'w', 'w']]; buster.assert.equals(this.world.look(7, 4), view); },
"Outside upper and left gets are padded with walls" : function() { var view = [['w', 'w', 'w'], ['w', 'w', 'w'], ['w', 'w', 'b']]; buster.assert.equals(this.world.look(0, 0), view); },
nodeZlib.gunzip(deflated, function(err, buf) { console.log("Inflate:", buf.length); buster.assert.equals(buf.length, testData.length); buster.assert(arrayEquals(buf, testData)); done(); });
"Northwest" : function() { var surroundings = this.wall.toBits([['w', 'w', 'w' ], ['w', 'w', 'w' ], ['w', 'w', '' ], ]); buster.assert.equals(wall.typeFrom(surroundings), 'w_northwest'); },
"Field can be converted to map" : function() { var view = [['w', 'w', 'w'], ['w', 'b', 'w'], ['w', '.', 'w']]; buster.assert.equals(this.world.look(1, 1), view); },
"South east" : function() { var surroundings = this.wall.toBits([['', 'w', 'w' ], ['w', 'w', 'w' ], ['w', 'w', 'w' ], ]); buster.assert.equals(wall.typeFrom(surroundings), 'w_southeast'); },
'Expect to be able to get a model from collection by cid': function() { var fakeModel = new Epitome.Model({ id: 'hello' }); this.collection.addModel(fakeModel); buster.assert.equals(fakeModel, this.collection.getModelByCID(fakeModel.get('id'))); }
.on('success', function (m) { // console.log("proposed: %s", JSON.stringify(m)); // 0 alternatives. buster.assert.equals(0, m.alternatives.length) callback(); })
.on('end', function () { var fsmd5sum = md5sum.digest('hex') assert.equals( dbmd5sum , fsmd5sum , 'MD5 sum compare of ' + data.key + ' failed (' + dbmd5sum + ' != ' + fsmd5sum + ')' ) })
assertException: function(block, msg) { try { block() throw new Error('Passed function did not throw an error') } catch(e) { buster.assert.equals(e.message, msg) } }
'Expect adding a model via an object only to create a model and add it >': function() { var data = { id: 'hello' }; this.collection.addModel(data); buster.assert.isTrue(instanceOf(this.collection.getModelByCID(data.id), this.collection.model)); },
"inflate pre-deflated data": function() { var size = 123456; var plain = new Buffer(size); var i, il; var testData = 'eJztzydhGAAAALDd/v////////////////////////////////9no6BxkF+///z99x8A'+ 'EAgYBBQMHAISChoGFg4eAREJGQUVDR0DEwsbBxcPn4CQiJiElIycgpKKmoaWjp6BkYmZ'+ 'hZWNnYOTi5uHl49fQFBIWERUTFxCUkpaRlZOXkFRSVlFVU1dQ1NLW0dXT9/A0MjYxNTM'+ '3MLSytrG1s7ewdHJ2cXVzd3D08vbx9fPPyAwKDgkNCw8IjIqOiY2Lj4hMSk5JTUtPSMz'+ 'KzsnNy+/oLCouKS0rLyisqq6prauvqGxqbmlta29o7Oru6e3r39gcGh4ZHRsfGJyanpm'+ 'dm5+YXFpeWV1bX1jc2t7Z3dv/+Dw6Pjk9Oz84vLq+ub27v7h8en55fXt/ePz5//z//n/'+ '/H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f'+ '/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z'+ '//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+'+ 'P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//'+ '5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n/'+ '/H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f'+ '/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z'+ '//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+'+ 'P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//'+ '5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n/'+ '/H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f'+ '/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z'+ '//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+'+ 'P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//'+ '5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n/'+ '/H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f'+ '/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z//n//H/+P/+f/8//5//z'+ '//n//H/+P/+f/8//5//z//n//H/+3+P/Ba1OJPE='; // make plain data for (i = 0, il = size; i < il; ++i) { plain[i] = i & 0xff; } var decodedData = new Buffer(testData, 'base64'); // testdata size buster.assert.equals(testData.length, 1604, "source data size"); buster.assert.equals(decodedData.length, 1202, "base64 decoded data size"); var inflated = zlib.inflateSync(decodedData); buster.assert.equals(inflated.length, size, "inflated data size"); buster.assert(arrayEquals(inflated, plain)); },
'A model should be able to exist in 2 collections and the event emitter should work when removed from either one >': function() { var c2 = new this.Collection(this.models), spy = this.spy(); this.collection.addEvent('change', spy); c2.removeModel(this.model); this.model.set('foo', 'bar'); buster.assert.called(spy); },
zlibBuffer(new nodeZlib.Deflate({level: 9}), data, function(err, buf) { var inflated = zlib.inflateSync(buf); buster.assert.equals(inflated.length, data.length); buster.assert(arrayEquals(inflated, data)); done(); });
this.model.on('error', function(errors) { var error = Array.filter(errors, function(el) { return el.bar; })[0]; buster.assert.equals(error.bar.error, msg); done(); });
'Expect error to fire when validation fails >': function() { var spy = this.spy(); this.model.on('error', spy); this.model.set(this.dataFail); buster.assert.called(spy); },
'Expect model to set value when validation passes >': function() { var spy = this.spy(); this.model.on('change:bar', spy); this.model.set(this.dataPass); buster.assert.calledWith(spy, this.dataPass.bar); },
this.collection.addEvent('sort', function() { var changed = this.toJSON().map(function(el) { return el.name; }).join(','); // should be "C,B,A" buster.assert.equals(changed, 'C,B,A'); done(); });
nodeZlib.gzip(testData, function(err, buf) { var inflated = zlib.gunzipSync(buf); buster.assert.equals(inflated.length, testData.length); buster.assert(arrayEquals(inflated, testData)); done(); });
'Expect .on to add a single event > ': function(){ var foo = new this.Foo(), spy = this.spy(); foo.on('test', spy); buster.assert.equals(foo.$events['test'][0], spy); },
"raw replace equal string": function () { var replacer = new Groumf(); replacer.add('g27', 'cidre'); replacer.add('g270', 'rhum'); var input = "g27"; var output = "cidre"; buster.assert.equals(replacer.replace(input), output); },
"callback replace not cutting word with (basic) Unicode support": function () { var replacer = new Groumf(); replacer.add("cha"); var input = "Un chat en chaînes"; var output = input; var cb = function(s){ return '['+s+']' }; buster.assert.equals(replacer.replace(input, cb), output); },
"callback replace cutting word": function () { var replacer = new Groumf({dontCutWords:false}); replacer.add("cha"); var input = "Un chat en chaînes"; var output = "Un [cha]t en [cha]înes"; var cb = function(s){ return '['+s+']' }; buster.assert.equals(replacer.replace(input, cb), output); },
"raw replace": function () { var replacer = new Groumf(); replacer.add('Schtroumpfs', 'cailloux'); replacer.add('Schtroumpf', 'caillou'); var input = "Schtroumpfs des champs, schtroumpfs des villes, tous schtroumpfons en schtroumpf!"; var output = "cailloux des champs, cailloux des villes, tous schtroumpfons en caillou!"; buster.assert.equals(replacer.replace(input), output); },
'gets an OK at a given level': function () { var parts = dosage._partition(1000, [100]); buster.assert.equals(parts, [{ level: 100, factor: 10, remainder: 0, }]); },
"World can tell points apart" : function() { var p1 = {x : 1, y : 1}; var p2 = {x : 2, y : 2}; var w = this.world.putGoldAt(p1, 1); var w = w.putGoldAt(p2, 1); // buster.assert.equals(w.goldAt(p1), 1); // buster.assert.equals(w.goldAt(p2), 1); buster.assert.equals(2, 2); },
"callback replace": function () { var replacer = new Groumf(); replacer.add('Schtroumpfs', 'plural'); replacer.add('Schtroumpf', 'singular'); var input = "Schtroumpfs des champs, schtroumpfs des villes, tous schtroumpfons en schtroumpf!"; var output = "[Schtroumpfs](plural) des champs, [schtroumpfs](plural) des villes, tous schtroumpfons en [schtroumpf](singular)!"; var cb = function(s,v){ return '['+s+']('+v+')' }; buster.assert.equals(replacer.replace(input, cb), output); },
"callback replace not cutting word with Unicode (Latin-A extended) support": function () { var replacer = new Groumf(); replacer.add("urs", "T1"); replacer.add("sœur", "T2"); var input = "Le troll urs avais deux sœurs, mais le troll sœur n'en faisait pas partie."; var output = "Le troll [urs](T1) avais deux sœurs, mais le troll [sœur](T2) n'en faisait pas partie."; var cb = function(s,v){ return '['+s+']('+v+')' }; buster.assert.equals(replacer.replace(input, cb), output); },
"raw replace with unicode": function () { var replacer = new Groumf(); replacer.add("π/2", "1.57"); replacer.add("2π/3", "2.094"); replacer.add("3π/7", "1.346"); var input = "(24π + 2π + 12π/3 + π/2 - 3π/7 + π)"; var output = "(24π + 2π + 12π/3 + 1.57 - 1.346 + π)"; buster.assert.equals(replacer.replace(input), output); },
'Expect adding a model to fire onReset >': function() { var data = { id: 'hello' }, spy = this.spy(); this.collection.addEvent('reset', spy); this.collection.addModel(data); buster.assert.called(spy); },