/* Copyright (c) 2010 Richard Wall * See LICENSE for details. * * Unit tests for Jarmon **/ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) { Y.Test.Runner.add(new Y.Test.Case({ name: "jarmon.downloadBinary", test_urlNotFound: function () { /** * When url cannot be found, the deferred should errback with status * 404. **/ var d = new jarmon.downloadBinary('non-existent-file.html'); d.addBoth( function(self, ret) { self.resume(function() { Y.Assert.isInstanceOf(Error, ret); Y.Assert.areEqual(404, ret.message); }); }, this); this.wait(); }, test_urlFound: function () { /** * When url is found, the deferred should callback with an instance * of javascriptrrd.BinaryFile **/ var d = new jarmon.downloadBinary('testfile.bin'); d.addBoth( function(self, ret) { self.resume(function() { Y.Assert.isInstanceOf(BinaryFile, ret); Y.Assert.areEqual(String.fromCharCode(0), ret.getRawData()); }); }, this); this.wait(); } })); var RRD_STEP = 10; var RRD_DSNAME = 'speed'; var RRD_DSINDEX = 0; var RRD_RRAROWS = 6; var RRD_STARTTIME = new Date('1 jan 1980 00:00:00').getTime(); var RRD_ENDTIME = new Date('1 jan 1980 00:01:01').getTime(); Y.Test.Runner.add(new Y.Test.Case({ name: "javascriptrrd.RRDFile", setUp: function() { this.d = new jarmon.downloadBinary('build/test.rrd') .addCallback( function(self, binary) { return new RRDFile(binary); }, this) .addErrback( function(ret) { console.log(ret); }); }, test_getLastUpdate: function () { /** * The generated rrd file should have a lastupdate date of * 1980-01-01 00:50:01 **/ this.d.addCallback( function(self, rrd) { self.resume(function() { Y.Assert.areEqual( RRD_ENDTIME/1000, rrd.getLastUpdate()); }); }, this); this.wait(); }, test_getDSIndex: function () { /** * The generated rrd file should have a single DS whose name is * 'speed'. A RangeError is thrown if the requested index or dsName * doesnt exist. **/ this.d.addCallback( function(self, rrd) { self.resume(function() { Y.Assert.areEqual(RRD_DSNAME, rrd.getDS(0).getName()); Y.Assert.areEqual( RRD_DSINDEX, rrd.getDS('speed').getIdx()); var error = null; try { rrd.getDS(RRD_DSINDEX+1); } catch(e) { error = e; } Y.assert(error instanceof RangeError); }); }, this); this.wait(); }, test_getNrRRAs: function () { /** * The generated rrd file should have a single RRA **/ this.d.addCallback( function(self, rrd) { self.resume(function() { Y.Assert.areEqual(1, rrd.getNrRRAs()); }); }, this); this.wait(); }, test_getRRA: function () { /** * The generated rrd file should have a single RRA using AVERAGE * consolidation, step=10, rows=6 and values 0-5 * rra.getEl throws a RangeError if asked for row which doesn't * exist. **/ this.d.addCallback( function(self, rrd) { self.resume(function() { var rra = rrd.getRRA(0); Y.Assert.areEqual('AVERAGE', rra.getCFName()); Y.Assert.areEqual(RRD_STEP, rra.getStep()); Y.Assert.areEqual(RRD_RRAROWS, rra.getNrRows()); for(var i=0; i starttime and * <= endTime **/ this.d.addCallback( function(self, rrd) { self.resume(function() { var rq = new jarmon.RrdQuery(rrd, ''); var data = rq.getData(RRD_STARTTIME, RRD_ENDTIME); console.log(data.data); Y.Assert.areEqual(RRD_RRAROWS, data.data.length); Y.Assert.areEqual(2, data.data[2][1]); Y.Assert.areEqual(RRD_STARTTIME+RRD_STEP*1000, data.data[0][0]); //Y.Assert.areEqual( // RRD_ENDTIME, data.data[RRD_RRAROWS-1][0]); }); }, this); this.wait(); }, })); //initialize the console var yconsole = new Y.Console({ newestOnTop: false, width:'600px', height: '400px' }); yconsole.render('#log'); //run all tests Y.Test.Runner.run(); });