mirror of
https://github.com/danbulant/node-x11
synced 2026-05-19 04:18:35 +00:00
103 lines
3 KiB
JavaScript
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);
|
|
})
|
|
});
|