mirror of
https://github.com/danbulant/node-x11
synced 2026-06-16 05:01:28 +00:00
Fixed datatype returned by message_type on ClientMessage event.
Added Testcase.
This commit is contained in:
parent
27c70c7315
commit
4fd0385911
2 changed files with 122 additions and 1 deletions
|
|
@ -404,7 +404,7 @@ XClient.prototype.unpackEvent = function(type, seq, extra, code, raw, headerBuf)
|
|||
event.name = 'ClientMessage';
|
||||
event.format = code;
|
||||
event.wid = extra;
|
||||
event.message_type = raw.unpack('L');
|
||||
event.message_type = raw.unpack('L')[0];
|
||||
var format = (code === 32) ? 'LLLLL' : (code === 16) ? 'SSSSSSSSSS' : 'CCCCCCCCCCCCCCCCCCCC';
|
||||
event.data = raw.unpack(format, 4);
|
||||
} else if (type == 34) {
|
||||
|
|
|
|||
121
test/client-message.js
Normal file
121
test/client-message.js
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
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
|
||||
|
||||
//Ugly but works for now
|
||||
self.X.InternAtom(false, 'TEST_ATOM_1', function(err, atom) {
|
||||
should.not.exist(err);
|
||||
ATOM['TEST_ATOM_1'] = atom;
|
||||
|
||||
self.X.InternAtom(false, 'TEST_ATOM_2', function(err, atom) {
|
||||
should.not.exist(err);
|
||||
ATOM['TEST_ATOM_2'] = atom;
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
client.on('error', function (err) {
|
||||
console.error('Error : ', err);
|
||||
});
|
||||
});
|
||||
|
||||
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();
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue