node-x11/test/core-CreateWindow.js
Santiago Gimeno 3b18e43fe6 src: fix CreateNotify parsing and add new test
- The first 4 fields in an event 'CCSL' are already unpacked in
  expectReplyHeader. No need to get the L field again: it is already in the
  'extra' variable.
2015-10-01 11:35:26 +02:00

80 lines
2.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) {
ev.name.should.equal('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);
done();
});
X.CreateWindow(wid, root, 0, 0, 1, 1); // 1x1 pixel window
})
});