node-x11/test/dpms.js
Santiago Gimeno e6796ab192 Only execute dpms test when we can
- Add test-runner.js to be able to execute the dpms when these
  conditions are complied:
     1 - DPMS extension is supported.
     2 - DPMS version is 1.1.
     3 - DPMS is capable.
2012-11-25 19:35:07 +01:00

101 lines
2.8 KiB
JavaScript

var x11 = require('../lib/x11');
var should = require('should');
var assert = require('assert');
var util = require('util');
describe('DPMS extension', function() {
var display;
var X;
var dpms;
before(function(done) {
var client = x11.createClient(function(dpy) {
display = dpy;
X = display.client;
X.require('dpms', function(ext) {
if (util.isError(ext)) {
done(ext);
} else {
dpms = ext;
done();
}
});
});
client.on('error', done);
});
describe('Setting the DPMS timeouts to specific values', function() {
var prev_timeouts;
before(function(done) {
dpms.GetTimeouts(function(err, timeouts) {
prev_timeouts = timeouts;
done(err);
});
});
it('GetTimeouts should return those values', function(done) {
dpms.SetTimeouts(110, 110, 110);
dpms.GetTimeouts(function(err, timeouts) {
if (!err) timeouts.should.eql([110, 110, 110]);
done(err);
});
});
after(function(done) {
dpms.SetTimeouts(prev_timeouts[0], prev_timeouts[1], prev_timeouts[2]);
dpms.GetTimeouts(function(err, timeouts) {
if (!err) timeouts.should.eql(prev_timeouts);
done(err);
});
});
});
describe('Changing status and level of DPMS', function() {
var prev_status;
var prev_level;
before(function(done) {
dpms.Info(function(err, info) {
if (!err) {
prev_level = info[0];
prev_status = info[1];
}
done(err);
});
});
it('Info should return the correct values', function(done) {
if (prev_status === 0) dpms.Enable(); // for force level to work dpms must be enabled
var new_level = prev_level === 0 ? 1 : 0;
dpms.ForceLevel(new_level);
dpms.Info(function(err, info) {
if (!err) {
info[0].should.equal(new_level);
info[1].should.equal(1);
}
done(err);
});
});
after(function(done) {
dpms.ForceLevel(prev_level);
if (prev_status) dpms.Enable();
else dpms.Disable();
dpms.Info(function(err, info) {
if (!err) {
info[0].should.equal(prev_level);
info[1].should.equal(prev_status);
}
done(err);
});
});
});
after(function(done) {
X.terminate();
X.on('end', done);
});
});