mirror of
https://github.com/danbulant/node-x11
synced 2026-05-19 12:28:58 +00:00
114 lines
4 KiB
JavaScript
114 lines
4 KiB
JavaScript
var x11 = require('../lib');
|
|
var UnpackStream = require('../lib/unpackstream.js');
|
|
var should = require('should');
|
|
|
|
//Used Atoms
|
|
var ATOM = {};
|
|
|
|
describe('ClientMessage', function() {
|
|
before(function(done) {
|
|
var self = this;
|
|
var client = x11.createClient(function(err, dpy) {
|
|
should.not.exist(err);
|
|
self.X = dpy.client;
|
|
self.wid = self.X.AllocID();
|
|
self.X.CreateWindow(self.wid, dpy.screen[0].root, 0, 0, 1, 1); // 1x1 pixel window
|
|
|
|
self.X.InternAtom(false, 'TEST_ATOM_1', function(err, atom) {
|
|
should.not.exist(err);
|
|
ATOM['TEST_ATOM_1'] = atom;
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
client.on('error', done);
|
|
});
|
|
|
|
it('should receive client message with format=8', function(done) {
|
|
var self = this;
|
|
|
|
var client = x11.createClient(function(err, dpy) {
|
|
should.not.exist(err);
|
|
self.X.once('event', function(ev) {
|
|
ev.name.should.equal('ClientMessage');
|
|
ev.wid.should.equal(self.wid);
|
|
ev.message_type.should.equal(ATOM.TEST_ATOM_1);
|
|
ev.data.should.be.an.Array();
|
|
ev.data.length.should.equal(20);
|
|
done();
|
|
});
|
|
|
|
var X = dpy.client;
|
|
var eventData = new Buffer(32);
|
|
eventData.writeInt8(33, 0); //Event Type 33 = ClientMessage
|
|
eventData.writeInt8(8, 1); //Format
|
|
eventData.writeInt32LE(self.wid, 4); //Window ID
|
|
eventData.writeInt32LE(ATOM.TEST_ATOM_1, 8); //Message Type
|
|
|
|
X.SendEvent(self.wid, false, 0, eventData);
|
|
});
|
|
|
|
client.on('error', done);
|
|
});
|
|
|
|
it('should receive client message with format=16', function(done) {
|
|
var self = this;
|
|
|
|
var client = x11.createClient(function(err, dpy) {
|
|
should.not.exist(err);
|
|
self.X.once('event', function(ev) {
|
|
ev.name.should.equal('ClientMessage');
|
|
ev.wid.should.equal(self.wid);
|
|
ev.message_type.should.equal(ATOM.TEST_ATOM_1);
|
|
ev.data.should.be.an.Array();
|
|
ev.data.length.should.equal(10);
|
|
done();
|
|
});
|
|
|
|
var X = dpy.client;
|
|
var eventData = new Buffer(32);
|
|
eventData.writeInt8(33, 0); //Event Type 33 = ClientMessage
|
|
eventData.writeInt8(16, 1); //Format
|
|
eventData.writeInt32LE(self.wid, 4); //Window ID
|
|
eventData.writeInt32LE(ATOM.TEST_ATOM_1, 8); //Message Type
|
|
|
|
X.SendEvent(self.wid, false, 0, eventData);
|
|
});
|
|
|
|
client.on('error', done);
|
|
});
|
|
|
|
it('should receive client message with format=32', function(done) {
|
|
var self = this;
|
|
|
|
var client = x11.createClient(function(err, dpy) {
|
|
should.not.exist(err);
|
|
self.X.once('event', function(ev) {
|
|
ev.name.should.equal('ClientMessage');
|
|
ev.wid.should.equal(self.wid);
|
|
ev.message_type.should.equal(ATOM.TEST_ATOM_1);
|
|
ev.data.should.be.an.Array();
|
|
ev.data.length.should.equal(5);
|
|
done();
|
|
});
|
|
|
|
var X = dpy.client;
|
|
var eventData = new Buffer(32);
|
|
eventData.writeInt8(33, 0); //Event Type 33 = ClientMessage
|
|
eventData.writeInt8(32, 1); //Format
|
|
eventData.writeInt32LE(self.wid, 4); //Window ID
|
|
eventData.writeInt32LE(ATOM.TEST_ATOM_1, 8); //Message Type
|
|
|
|
X.SendEvent(self.wid, false, 0, eventData);
|
|
});
|
|
|
|
client.on('error', done);
|
|
});
|
|
|
|
after(function(done) {
|
|
this.X.DestroyWindow(this.wid);
|
|
this.X.on('end', done);
|
|
this.X.terminate();
|
|
});
|
|
});
|