50 lines
1.8 KiB
JavaScript
50 lines
1.8 KiB
JavaScript
import sandbox from 'helper';
|
|
import {expect} from 'chai';
|
|
|
|
import FrameBuilder from 'dom/frame_builder';
|
|
import TextBuilder from 'dom/text_builder';
|
|
import GraphicsBuilder from 'dom/graphics_builder';
|
|
import text_nodes from 'fixtures/text_nodes';
|
|
import {with_text, without_text, scaled} from 'fixtures/canvas_pixels';
|
|
|
|
let text_builder;
|
|
|
|
// To save us hand-writing large pixel arrays, let's just have an unrealistically
|
|
// small window, it's not a problem, because we'll never actually have to view real
|
|
// webpages on it.
|
|
window.innerWidth = 3;
|
|
window.innerHeight = 4;
|
|
|
|
function setup() {
|
|
let frame_builder = new FrameBuilder();
|
|
frame_builder.tty_width = 3
|
|
frame_builder.tty_height = 2
|
|
frame_builder.char_width = 1
|
|
frame_builder.char_height = 2
|
|
frame_builder.graphics_builder.getSnapshotWithText();
|
|
frame_builder.graphics_builder.getSnapshotWithoutText();
|
|
frame_builder.graphics_builder.getScaledSnapshot();
|
|
text_builder = new TextBuilder(frame_builder);
|
|
}
|
|
|
|
describe('Text Builder', ()=> {
|
|
beforeEach(()=> {
|
|
let getPixelsStub = sandbox.stub(GraphicsBuilder.prototype, '_getPixelData');
|
|
getPixelsStub.onCall(0).returns(with_text);
|
|
getPixelsStub.onCall(1).returns(without_text);
|
|
getPixelsStub.onCall(2).returns(scaled);
|
|
setup();
|
|
text_builder.text_nodes = text_nodes;
|
|
});
|
|
|
|
it('should convert text nodes to a grid', ()=> {
|
|
text_builder._positionTextNodes();
|
|
expect(text_builder.tty_grid[0]).to.deep.equal(['t', [255, 255, 255], [0, 0, 0]]);
|
|
expect(text_builder.tty_grid[1]).to.deep.equal(['e', [255, 255, 255], [111, 111, 111]]);
|
|
expect(text_builder.tty_grid[2]).to.deep.equal(['s', [255, 255, 255], [0, 0, 0]]);
|
|
expect(text_builder.tty_grid[3]).to.be.undefined;
|
|
expect(text_builder.tty_grid[4]).to.be.undefined;
|
|
expect(text_builder.tty_grid[5]).to.be.undefined;
|
|
});
|
|
});
|