node-x11/test/core-CreateWindow.js
Santiago Gimeno dbe2d97bee src: fix some more events parsing
- DestroyNotify, UnmapNotify, MapNotify and MapRequest.
- Add some tests.
2015-10-01 11:53:04 +02:00

103 lines
3 KiB
JavaScript

var x11 = require('../lib');
var should = require('should');
var assert = require('assert');
describe('CreateWindow request', function() {
// keep for a while: this snippet helps to track global leak
//global.__defineSetter__('a', function(v) {
// console.trace();
//});
var display;
var X;
beforeEach(function(done) {
var client = x11.createClient(function(err, dpy) {
if (!err) {
display = dpy;
X = display.client;
}
done(err);
});
client.on('error', done);
});
afterEach(function(done) {
X.terminate();
X.on('end', done);
X = null;
display = null;
});
it('should exist as client member', function(done) {
should.exist(X.CreateWindow);
assert.equal(typeof X.CreateWindow, 'function');
done();
});
it('result should present in windows tree', function(done) {
var wid = X.AllocID();
X.CreateWindow(wid, display.screen[0].root, 0, 0, 1, 1); // 1x1 pixel window
X.QueryTree(display.screen[0].root, function(err, list) {
if (err)
done(err);
var pos = list.children.indexOf(wid);
assert.notEqual(pos, -1, 'can\'t find created window');
done();
});
});
it('should work with any kind of attributes too', function(done) {
var wid = X.AllocID();
X.CreateWindow(wid, display.screen[0].root, 0, 0, 1, 1, 0, 0, 0, 0, { overrideRedirect : true }); // 1x1 pixel window
X.QueryTree(display.screen[0].root, function(err, list) {
should.not.exist(err);
list.children.should.containEql(wid);
done();
});
});
it('should emit CreateNotify event when', function(done) {
var wid = X.AllocID();
var root = display.screen[0].root;
X.ChangeWindowAttributes(root, { eventMask: x11.eventMask.SubstructureNotify });
X.on('event', function(ev) {
switch (ev.name) {
case 'CreateNotify':
ev.parent.should.equal(root);
ev.wid.should.equal(wid);
ev.x.should.equal(0);
ev.y.should.equal(0);
ev.width.should.equal(1);
ev.height.should.equal(1);
ev.borderWidth.should.equal(0);
ev.overrideRedirect.should.equal(false);
break;
case 'MapNotify':
ev.event.should.equal(root);
ev.wid.should.equal(wid);
ev.overrideRedirect.should.equal(false);
X.UnmapWindow(wid);
break;
case 'UnmapNotify':
ev.event.should.equal(root);
ev.wid.should.equal(wid);
ev.fromConfigure.should.equal(false);
X.DestroyWindow(wid);
break;
case 'DestroyNotify':
ev.event.should.equal(root);
ev.wid.should.equal(wid);
done();
break;
}
});
X.CreateWindow(wid, root, 0, 0, 1, 1); // 1x1 pixel window
X.MapWindow(wid);
})
});