mirror of
https://github.com/sexybiggetje/pixdisp.git
synced 2024-11-22 02:21:02 +01:00
Update README with test info, add drowingoperations tests, add getMatrix function to driver for tests.
This commit is contained in:
parent
7f106f4a3f
commit
f2c885ac8c
4 changed files with 109 additions and 3 deletions
|
@ -19,6 +19,13 @@ Navigate to http://localhost:8080/
|
||||||
|
|
||||||
Matrix driver & Unicorn Hat HD driver inspired by https://github.com/vesteraas/node-unicornhathd
|
Matrix driver & Unicorn Hat HD driver inspired by https://github.com/vesteraas/node-unicornhathd
|
||||||
|
|
||||||
|
### Unit tests
|
||||||
|
This application has some unit tests, making use of [Jest](http://facebook.github.io/jest/). Jest is configured as a dev dependency.
|
||||||
|
|
||||||
|
execute:
|
||||||
|
|
||||||
|
npm test
|
||||||
|
|
||||||
### Drawing
|
### Drawing
|
||||||
![Device drawing](https://raw.githubusercontent.com/sexybiggetje/pixdisp/screenshots/device.jpg "Drawing on the device")
|
![Device drawing](https://raw.githubusercontent.com/sexybiggetje/pixdisp/screenshots/device.jpg "Drawing on the device")
|
||||||
|
|
||||||
|
|
91
__tests__/drawingoperations.js
Normal file
91
__tests__/drawingoperations.js
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
let driver, config;
|
||||||
|
|
||||||
|
let { DriverFactory } = require( '../drivers/driverfactory' );
|
||||||
|
let { Dummy } = require( '../drivers/dummy' );
|
||||||
|
|
||||||
|
let driverFactory = new DriverFactory();
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
config = {
|
||||||
|
"driver": "dummy",
|
||||||
|
"matrix": {
|
||||||
|
"width": 4,
|
||||||
|
"height": 4,
|
||||||
|
"brightness": 1,
|
||||||
|
"flipHorizontal": false,
|
||||||
|
"flipVertical": false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
test( 'Matrix creation', () => {
|
||||||
|
driver = driverFactory.createFromConfig( config );
|
||||||
|
|
||||||
|
expect( driver.getSize() ).toEqual( { width: 4, height: 4 } );
|
||||||
|
expect( driver.getBuffer().length ).toEqual( 48 );
|
||||||
|
} );
|
||||||
|
|
||||||
|
test( 'Set a pixel', () => {
|
||||||
|
driver = driverFactory.createFromConfig( config );
|
||||||
|
|
||||||
|
driver.setPixel( 0, 0, 255, 255, 255, 1 );
|
||||||
|
driver.setPixel( 3, 0, 255, 255, 255, 1 );
|
||||||
|
driver.setPixel( 0, 3, 255, 255, 255, 1 );
|
||||||
|
driver.setPixel( 3, 3, 255, 255, 255, 1 );
|
||||||
|
|
||||||
|
let matrix = driver.getMatrix();
|
||||||
|
|
||||||
|
expect( matrix[ 0 ][ 0 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
expect( matrix[ 3 ][ 0 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
expect( matrix[ 0 ][ 3 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
expect( matrix[ 3 ][ 3 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
|
||||||
|
expect( matrix[ 0 ][ 1 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
expect( matrix[ 3 ][ 1 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
expect( matrix[ 1 ][ 3 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
expect( matrix[ 2 ][ 3 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
|
||||||
|
} );
|
||||||
|
|
||||||
|
test( 'Draw a line', () => {
|
||||||
|
driver = driverFactory.createFromConfig( config );
|
||||||
|
|
||||||
|
driver.drawLine( 0, 0, 3, 3, 255, 255, 255, 1 );
|
||||||
|
|
||||||
|
let matrix = driver.getMatrix();
|
||||||
|
|
||||||
|
expect( matrix[ 0 ][ 0 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
expect( matrix[ 1 ][ 1 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
expect( matrix[ 2 ][ 2 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
expect( matrix[ 3 ][ 3 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
|
||||||
|
expect( matrix[ 0 ][ 1 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
expect( matrix[ 1 ][ 2 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
expect( matrix[ 2 ][ 3 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
expect( matrix[ 3 ][ 0 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
|
||||||
|
} );
|
||||||
|
|
||||||
|
test( 'Draw a circle', () => {
|
||||||
|
config.matrix.width = 8;
|
||||||
|
config.matrix.height = 8;
|
||||||
|
|
||||||
|
driver = driverFactory.createFromConfig( config );
|
||||||
|
|
||||||
|
driver.drawCircle( 3, 3, 4, 255, 255, 255, 1 );
|
||||||
|
|
||||||
|
let matrix = driver.getMatrix();
|
||||||
|
|
||||||
|
expect( matrix[ 1 ][ 0 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
expect( matrix[ 2 ][ 0 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
expect( matrix[ 2 ][ 6 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
expect( matrix[ 3 ][ 6 ] ).toEqual( { r: 255, g: 255, b: 255, a: 1} );
|
||||||
|
|
||||||
|
expect( matrix[ 0 ][ 0 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
expect( matrix[ 0 ][ 7 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
expect( matrix[ 2 ][ 1 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
expect( matrix[ 3 ][ 1 ] ).toEqual( { r: 0, g: 0, b: 0, a: 1} );
|
||||||
|
|
||||||
|
} );
|
|
@ -64,8 +64,8 @@ class Driver {
|
||||||
* Set pixel color
|
* Set pixel color
|
||||||
*/
|
*/
|
||||||
setPixel( x, y, r = 0, g = 0, b = 0, a = 1 ) {
|
setPixel( x, y, r = 0, g = 0, b = 0, a = 1 ) {
|
||||||
if ( x >= 0 && x <= this.width &&
|
if ( x >= 0 && x < this.width &&
|
||||||
y >= 0 && y <= this.height ) {
|
y >= 0 && y < this.height ) {
|
||||||
this.matrix[x][y].r = r;
|
this.matrix[x][y].r = r;
|
||||||
this.matrix[x][y].g = g;
|
this.matrix[x][y].g = g;
|
||||||
this.matrix[x][y].b = b;
|
this.matrix[x][y].b = b;
|
||||||
|
@ -169,6 +169,13 @@ class Driver {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current matrix at any given state
|
||||||
|
*/
|
||||||
|
getMatrix() {
|
||||||
|
return this.matrix;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the buffer for writing
|
* Get the buffer for writing
|
||||||
* @return {Buffer}
|
* @return {Buffer}
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
},
|
},
|
||||||
"jest": {
|
"jest": {
|
||||||
"name": "pixdisp",
|
"name": "pixdisp",
|
||||||
"testRegex": "(/__tests__/.[^_]*|(\\.|/)(test|spec))\\.jsx?$"
|
"testRegex": "(/__tests__/.[^_]*|(\\.|/)(test|spec))\\.jsx?$",
|
||||||
|
"verbose": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue