|
@@ -4,7 +4,7 @@
|
|
|
import expect = require('expect.js');
|
|
|
|
|
|
import {
|
|
|
- Signal
|
|
|
+ ISignal, Signal
|
|
|
} from 'phosphor-signaling';
|
|
|
|
|
|
import {
|
|
@@ -12,21 +12,47 @@ import {
|
|
|
} from '../../../lib/common/activitymonitor';
|
|
|
|
|
|
|
|
|
+
|
|
|
+class TestObject {
|
|
|
+
|
|
|
+ static oneSignal = new Signal<TestObject, number>();
|
|
|
+
|
|
|
+ static twoSignal = new Signal<TestObject, string[]>();
|
|
|
+
|
|
|
+ get one(): ISignal<TestObject, number> {
|
|
|
+ return TestObject.oneSignal.bind(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ get two(): ISignal<TestObject, string[]> {
|
|
|
+ return TestObject.twoSignal.bind(this);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
describe('common/activitymonitor', () => {
|
|
|
|
|
|
describe('ActivityMonitor()', () => {
|
|
|
|
|
|
+ let testObj: TestObject;
|
|
|
+ let signal: ISignal<TestObject, number>;
|
|
|
+
|
|
|
+ beforeEach(() => {
|
|
|
+ testObj = new TestObject();
|
|
|
+ signal = testObj.one;
|
|
|
+ });
|
|
|
+
|
|
|
describe('#constructor()', () => {
|
|
|
|
|
|
it('should accept a signal', () => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
- let monitor = new ActivityMonitor<Window, number>({ signal });
|
|
|
+ let monitor = new ActivityMonitor<TestObject, number>({ signal });
|
|
|
expect(monitor).to.be.an(ActivityMonitor);
|
|
|
});
|
|
|
|
|
|
it('should accept a timeout', () => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
- let monitor = new ActivityMonitor<Window, number>({ signal, timeout: 100 });
|
|
|
+ let monitor = new ActivityMonitor<TestObject, string[]>({
|
|
|
+ signal: testObj.two, timeout: 100
|
|
|
+ });
|
|
|
expect(monitor).to.be.an(ActivityMonitor);
|
|
|
});
|
|
|
|
|
@@ -35,12 +61,11 @@ describe('common/activitymonitor', () => {
|
|
|
describe('#activityStopped', () => {
|
|
|
|
|
|
it('should be emitted after the signal has fired and a timeout', (done) => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
let called = false;
|
|
|
let monitor = new ActivityMonitor({ signal, timeout: 100 });
|
|
|
monitor.activityStopped.connect((sender, args) => {
|
|
|
expect(sender).to.be(monitor);
|
|
|
- expect(args.sender).to.be(window);
|
|
|
+ expect(args.sender).to.be(testObj);
|
|
|
expect(args.args).to.be(10);
|
|
|
called = true;
|
|
|
});
|
|
@@ -53,12 +78,11 @@ describe('common/activitymonitor', () => {
|
|
|
});
|
|
|
|
|
|
it('should collapse during activity', (done) => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
let called = false;
|
|
|
- let monitor = new ActivityMonitor<Window, number>({ signal, timeout: 100 });
|
|
|
+ let monitor = new ActivityMonitor<TestObject, number>({ signal, timeout: 100 });
|
|
|
monitor.activityStopped.connect((sender, args) => {
|
|
|
expect(sender).to.be(monitor);
|
|
|
- expect(args.sender).to.be(window);
|
|
|
+ expect(args.sender).to.be(testObj);
|
|
|
expect(args.args).to.be(10);
|
|
|
called = true;
|
|
|
});
|
|
@@ -66,7 +90,7 @@ describe('common/activitymonitor', () => {
|
|
|
expect(called).to.be(false);
|
|
|
setTimeout(() => {
|
|
|
signal.emit(10);
|
|
|
- }, 90);
|
|
|
+ }, 70);
|
|
|
setTimeout(() => {
|
|
|
expect(called).to.be(false);
|
|
|
}, 100);
|
|
@@ -81,14 +105,12 @@ describe('common/activitymonitor', () => {
|
|
|
describe('#timeout', () => {
|
|
|
|
|
|
it('should default to `1000`', () => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
- let monitor = new ActivityMonitor<Window, number>({ signal });
|
|
|
+ let monitor = new ActivityMonitor<TestObject, number>({ signal });
|
|
|
expect(monitor.timeout).to.be(1000);
|
|
|
});
|
|
|
|
|
|
it('should be set-able', () => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
- let monitor = new ActivityMonitor<Window, number>({ signal });
|
|
|
+ let monitor = new ActivityMonitor<TestObject, number>({ signal });
|
|
|
monitor.timeout = 200;
|
|
|
expect(monitor.timeout).to.be(200);
|
|
|
});
|
|
@@ -98,16 +120,14 @@ describe('common/activitymonitor', () => {
|
|
|
describe('#isDisposed', () => {
|
|
|
|
|
|
it('should test whether the monitor is disposed', () => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
- let monitor = new ActivityMonitor<Window, number>({ signal });
|
|
|
+ let monitor = new ActivityMonitor<TestObject, number>({ signal });
|
|
|
expect(monitor.isDisposed).to.be(false);
|
|
|
monitor.dispose();
|
|
|
expect(monitor.isDisposed).to.be(true);
|
|
|
});
|
|
|
|
|
|
it('should be read-only', () => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
- let monitor = new ActivityMonitor<Window, number>({ signal });
|
|
|
+ let monitor = new ActivityMonitor<TestObject, number>({ signal });
|
|
|
expect(() => { monitor.isDisposed = false; }).to.throwError();
|
|
|
});
|
|
|
|
|
@@ -116,15 +136,13 @@ describe('common/activitymonitor', () => {
|
|
|
describe('#dispose()', () => {
|
|
|
|
|
|
it('should disposed of the resources used by the monitor', () => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
- let monitor = new ActivityMonitor<Window, number>({ signal });
|
|
|
+ let monitor = new ActivityMonitor<TestObject, number>({ signal });
|
|
|
monitor.dispose();
|
|
|
expect(monitor.isDisposed).to.be(true);
|
|
|
});
|
|
|
|
|
|
it('should be a no-op if called more than once', () => {
|
|
|
- let signal = new Signal<Window, number>().bind(window);
|
|
|
- let monitor = new ActivityMonitor<Window, number>({ signal });
|
|
|
+ let monitor = new ActivityMonitor<TestObject, number>({ signal });
|
|
|
monitor.dispose();
|
|
|
monitor.dispose();
|
|
|
expect(monitor.isDisposed).to.be(true);
|