]> git.proxmox.com Git - mirror_novnc.git/blame - tests/test.tightpng.js
Add tests for the Tight decoders
[mirror_novnc.git] / tests / test.tightpng.js
CommitLineData
111225fa
PO
1const expect = chai.expect;
2
3import Websock from '../core/websock.js';
4import Display from '../core/display.js';
5
6import TightPngDecoder from '../core/decoders/tightpng.js';
7
8import FakeWebSocket from './fake.websocket.js';
9
10function testDecodeRect(decoder, x, y, width, height, data, display, depth) {
11 let sock;
12
13 sock = new Websock;
14 sock.open("ws://example.com");
15
16 sock.on('message', () => {
17 decoder.decodeRect(x, y, width, height, sock, display, depth);
18 });
19
20 sock._websocket._receiveData(new Uint8Array(data));
21
22 display.flip();
23}
24
25describe('TightPng Decoder', function () {
26 let decoder;
27 let display;
28
29 before(FakeWebSocket.replace);
30 after(FakeWebSocket.restore);
31
32 beforeEach(function () {
33 decoder = new TightPngDecoder();
34 display = new Display(document.createElement('canvas'));
35 display.resize(4, 4);
36 });
37
15cfa135
PO
38 it('should handle the TightPng encoding', function (done) {
39 let data = [
40 // Control bytes
41 0xa0, 0xb4, 0x04,
42 // PNG data
43 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,
44 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
45 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04,
46 0x08, 0x02, 0x00, 0x00, 0x00, 0x26, 0x93, 0x09,
47 0x29, 0x00, 0x00, 0x01, 0x84, 0x69, 0x43, 0x43,
48 0x50, 0x49, 0x43, 0x43, 0x20, 0x70, 0x72, 0x6f,
49 0x66, 0x69, 0x6c, 0x65, 0x00, 0x00, 0x28, 0x91,
50 0x7d, 0x91, 0x3d, 0x48, 0xc3, 0x40, 0x18, 0x86,
51 0xdf, 0xa6, 0x6a, 0x45, 0x2a, 0x0e, 0x76, 0x10,
52 0x71, 0x08, 0x52, 0x9d, 0x2c, 0x88, 0x8a, 0x38,
53 0x6a, 0x15, 0x8a, 0x50, 0x21, 0xd4, 0x0a, 0xad,
54 0x3a, 0x98, 0x5c, 0xfa, 0x07, 0x4d, 0x1a, 0x92,
55 0x14, 0x17, 0x47, 0xc1, 0xb5, 0xe0, 0xe0, 0xcf,
56 0x62, 0xd5, 0xc1, 0xc5, 0x59, 0x57, 0x07, 0x57,
57 0x41, 0x10, 0xfc, 0x01, 0x71, 0x72, 0x74, 0x52,
58 0x74, 0x91, 0x12, 0xbf, 0x4b, 0x0a, 0x2d, 0x62,
59 0xbc, 0xe3, 0xb8, 0x87, 0xf7, 0xbe, 0xf7, 0xe5,
60 0xee, 0x3b, 0x40, 0xa8, 0x97, 0x99, 0x66, 0x75,
61 0x8c, 0x03, 0x9a, 0x6e, 0x9b, 0xa9, 0x44, 0x5c,
62 0xcc, 0x64, 0x57, 0xc5, 0xd0, 0x2b, 0xba, 0x68,
63 0x86, 0x31, 0x8c, 0x2e, 0x99, 0x59, 0xc6, 0x9c,
64 0x24, 0x25, 0xe1, 0x3b, 0xbe, 0xee, 0x11, 0xe0,
65 0xfb, 0x5d, 0x8c, 0x67, 0xf9, 0xd7, 0xfd, 0x39,
66 0x7a, 0xd5, 0x9c, 0xc5, 0x80, 0x80, 0x48, 0x3c,
67 0xcb, 0x0c, 0xd3, 0x26, 0xde, 0x20, 0x9e, 0xde,
68 0xb4, 0x0d, 0xce, 0xfb, 0xc4, 0x11, 0x56, 0x94,
69 0x55, 0xe2, 0x73, 0xe2, 0x31, 0x93, 0x2e, 0x48,
70 0xfc, 0xc8, 0x75, 0xc5, 0xe3, 0x37, 0xce, 0x05,
71 0x97, 0x05, 0x9e, 0x19, 0x31, 0xd3, 0xa9, 0x79,
72 0xe2, 0x08, 0xb1, 0x58, 0x68, 0x63, 0xa5, 0x8d,
73 0x59, 0xd1, 0xd4, 0x88, 0xa7, 0x88, 0xa3, 0xaa,
74 0xa6, 0x53, 0xbe, 0x90, 0xf1, 0x58, 0xe5, 0xbc,
75 0xc5, 0x59, 0x2b, 0x57, 0x59, 0xf3, 0x9e, 0xfc,
76 0x85, 0xe1, 0x9c, 0xbe, 0xb2, 0xcc, 0x75, 0x5a,
77 0x43, 0x48, 0x60, 0x11, 0x4b, 0x90, 0x20, 0x42,
78 0x41, 0x15, 0x25, 0x94, 0x61, 0x23, 0x46, 0xbb,
79 0x4e, 0x8a, 0x85, 0x14, 0x9d, 0xc7, 0x7d, 0xfc,
80 0x83, 0xae, 0x5f, 0x22, 0x97, 0x42, 0xae, 0x12,
81 0x18, 0x39, 0x16, 0x50, 0x81, 0x06, 0xd9, 0xf5,
82 0x83, 0xff, 0xc1, 0xef, 0xde, 0x5a, 0xf9, 0xc9,
83 0x09, 0x2f, 0x29, 0x1c, 0x07, 0x3a, 0x5f, 0x1c,
84 0xe7, 0x63, 0x04, 0x08, 0xed, 0x02, 0x8d, 0x9a,
85 0xe3, 0x7c, 0x1f, 0x3b, 0x4e, 0xe3, 0x04, 0x08,
86 0x3e, 0x03, 0x57, 0x7a, 0xcb, 0x5f, 0xa9, 0x03,
87 0x33, 0x9f, 0xa4, 0xd7, 0x5a, 0x5a, 0xf4, 0x08,
88 0xe8, 0xdb, 0x06, 0x2e, 0xae, 0x5b, 0x9a, 0xb2,
89 0x07, 0x5c, 0xee, 0x00, 0x03, 0x4f, 0x86, 0x6c,
90 0xca, 0xae, 0x14, 0xa4, 0x25, 0xe4, 0xf3, 0xc0,
91 0xfb, 0x19, 0x7d, 0x53, 0x16, 0xe8, 0xbf, 0x05,
92 0x7a, 0xd6, 0xbc, 0xbe, 0x35, 0xcf, 0x71, 0xfa,
93 0x00, 0xa4, 0xa9, 0x57, 0xc9, 0x1b, 0xe0, 0xe0,
94 0x10, 0x18, 0x2d, 0x50, 0xf6, 0xba, 0xcf, 0xbb,
95 0xbb, 0xdb, 0xfb, 0xf6, 0x6f, 0x4d, 0xb3, 0x7f,
96 0x3f, 0x0a, 0x27, 0x72, 0x7d, 0x49, 0x29, 0x8b,
97 0xbb, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59,
98 0x73, 0x00, 0x00, 0x2e, 0x23, 0x00, 0x00, 0x2e,
99 0x23, 0x01, 0x78, 0xa5, 0x3f, 0x76, 0x00, 0x00,
100 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 0x07, 0xe4,
101 0x06, 0x06, 0x0c, 0x23, 0x1d, 0x3f, 0x9f, 0xbb,
102 0x94, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58,
103 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
104 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
105 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49,
106 0x4d, 0x50, 0x57, 0x81, 0x0e, 0x17, 0x00, 0x00,
107 0x00, 0x1e, 0x49, 0x44, 0x41, 0x54, 0x08, 0xd7,
108 0x65, 0xc9, 0xb1, 0x0d, 0x00, 0x00, 0x08, 0x03,
109 0x20, 0xea, 0xff, 0x3f, 0xd7, 0xd5, 0x44, 0x56,
110 0x52, 0x90, 0xc2, 0x38, 0xa2, 0xd0, 0xbc, 0x59,
111 0x8a, 0x9f, 0x04, 0x05, 0x6b, 0x38, 0x7b, 0xb2,
112 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
113 0xae, 0x42, 0x60, 0x82,
114 ];
115
116 testDecodeRect(decoder, 0, 0, 4, 4, data, display, 24);
117
118 let targetData = new Uint8Array([
119 0xff, 0x00, 0x00, 255, 0xff, 0x00, 0x00, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,
120 0xff, 0x00, 0x00, 255, 0xff, 0x00, 0x00, 255, 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255,
121 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255, 0xff, 0x00, 0x00, 255, 0xff, 0x00, 0x00, 255,
122 0x00, 0xff, 0x00, 255, 0x00, 0xff, 0x00, 255, 0xff, 0x00, 0x00, 255, 0xff, 0x00, 0x00, 255
123 ]);
124
125 display.onflush = () => {
126 expect(display).to.have.displayed(targetData);
127 done();
128 };
129 display.flush();
111225fa
PO
130 });
131});