diff --git a/.gitignore b/.gitignore index 74815da..699f234 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ doc/ node_modules/ coverage/ +test/browser/pako.js v8.log diff --git a/.jshintignore b/.jshintignore index 7374751..5073f1d 100644 --- a/.jshintignore +++ b/.jshintignore @@ -3,3 +3,4 @@ node_modules/ benchmark/implementations coverage/ dist/ +test/browser/pako.js diff --git a/Makefile b/Makefile index 484db25..28875ad 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,11 @@ lint: test: lint mocha +test-browser: lint + rm -f ./test/browser/pako.js + browserify -r ./ -s pako > test/browser/pako.js + @SAUCE_PROJ=${GITHUB_PROJ} test/browser/sauce-run.js + cover: rm -rf cover istanbul cover node_modules/.bin/_mocha -- -t 30000 -R spec diff --git a/package.json b/package.json index b045321..ee04e98 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "devDependencies" : { "mocha": "*", + "chai": "*", "benchmark": "*", "ansi": "*", "browserify":"*", @@ -24,6 +25,10 @@ "istanbul": "*", "ndoc": "*", "lodash": "2.4.1", - "async": "0.2.10" + "async": "0.2.10", + + "mocha-cloud": "*", + "mocha-cloud-grid-view": "*", + "term-canvas": "*" } } diff --git a/test/browser/browsers.json b/test/browser/browsers.json new file mode 100644 index 0000000..a8b7fbc --- /dev/null +++ b/test/browser/browsers.json @@ -0,0 +1,14 @@ +[ + { "browserName": "iphone", "platform": "OS X 10.8", "version": "6" }, + { "browserName": "android", "platform": "Linux", "version": "4.0" }, + { "browserName": "firefox", "platform": "XP" }, + { "browserName": "chrome", "platform": "XP" }, + + { "browserName": "internet explorer", "platform": "WIN8", "version": "10" }, + { "browserName": "internet explorer", "platform": "VISTA", "version": "9" }, + { "browserName": "internet explorer", "platform": "Windows 7","version": "8" }, + { "browserName": "internet explorer", "platform": "XP", "version": "7" }, + + { "browserName": "opera", "platform": "Windows 2008","version": "12" }, + { "browserName": "safari", "platform": "OS X 10.8", "version": "6" } +] diff --git a/test/browser/sauce-run.js b/test/browser/sauce-run.js new file mode 100755 index 0000000..8a7b8af --- /dev/null +++ b/test/browser/sauce-run.js @@ -0,0 +1,77 @@ +#!/usr/bin/env node + +/* You have to setup 3 enviroment variables to run this script: + * + * SAUCE_PROJ - project name + * SAUCE_USER - saucelabs user name + * SAUCE_AUTH - saucelabs authorisation token + */ + +'use strict'; + +var Cloud = require('mocha-cloud'); +/* , Canvas = require('term-canvas') + , size = process.stdout.getWindowSize() + , GridView = require('mocha-cloud-grid-view');*/ + +/*if (!process.env.SAUCE_PROJ || !process.env.SAUCE_USER || !process.env.SAUCE_AUTH) { + console.err('You must set enviroment variables SAUCE_PROJ, SAUCE_USER and SAUCE_AUTH'); + process.exit(1); +}*/ + +var cloud = new Cloud(process.env.SAUCE_PROJ, process.env.SAUCE_USER, process.env.SAUCE_AUTH); + +// the browsers to test + +var browsers = require('./browsers.json'); + +browsers.forEach(function(browser) { + cloud.browser(browser.browserName, browser.version, browser.platform); +}); + +// the local url to test + +cloud.url('http://localhost:3000/test/browser/'); + +// setup + +/*var canvas = new Canvas(size[0], size[1]); +var ctx = canvas.getContext('2d'); +var grid = new GridView(cloud, ctx); +grid.size(canvas.width, canvas.height); +ctx.hideCursor(); + +// trap SIGINT + +process.on('SIGINT', function(){ + ctx.reset(); + process.nextTick(function(){ + process.exit(); + }); +}); + +// output failure messages +// once complete, and exit > 0 +// accordingly + +cloud.start(function(){ + grid.showFailures(); + setTimeout(function(){ + ctx.showCursor(); + process.exit(grid.totalFailures()); + }, 100); +});*/ + +cloud.on('init', function(browser){ + console.log(' init : %s %s', browser.browserName, browser.version); +}); + +cloud.on('start', function(browser){ + console.log(' start : %s %s', browser.browserName, browser.version); +}); + +cloud.on('end', function(browser, res){ + console.log(' end : %s %s : %d failures', browser.browserName, browser.version, res.failures); +}); + +cloud.start(); diff --git a/test/browser/test.html b/test/browser/test.html new file mode 100644 index 0000000..eaad0e7 --- /dev/null +++ b/test/browser/test.html @@ -0,0 +1,28 @@ + + + pako tests + + + + +
+ + + + + + + + + + diff --git a/test/browser/test.js b/test/browser/test.js new file mode 100644 index 0000000..1ccee63 --- /dev/null +++ b/test/browser/test.js @@ -0,0 +1,26 @@ +/*global describe, it, pako, assert*/ + + +'use strict'; + + +var size = 100*1000; + +var data_bin = Uint8Array ? new Uint8Array(size) : new Array(size); + +for (var i=data_bin.length-1; i>=0; i--) { data_bin[i] = (Math.random(256)*256) & 0xff; } + + +describe('Generic tests', function () { + + it('dummy', function() { + pako.deflate(data_bin); + }); + + it.skip('levels', function() { + assert.deepEqual(data_bin, pako.inflate(pako.deflate(data_bin))); + assert.deepEqual(data_bin, pako.inflate(pako.deflate(data_bin, { level: 0 }))); + assert.deepEqual(data_bin, pako.inflate(pako.deflate(data_bin, { level: 1 }))); + }); +}); +