import assert from 'assert'; import { testMethodProperty } from './properties.js'; describe('constructor', () => { it('throws if called as a function', () => { assert.throws(() => Observable(() => {})); assert.throws(() => Observable.call({}, () => {})); }); it('throws if the argument is not callable', () => { assert.throws(() => new Observable({})); assert.throws(() => new Observable()); assert.throws(() => new Observable(1)); assert.throws(() => new Observable('string')); }); it('accepts a function argument', () => { let result = new Observable(() => {}); assert.ok(result instanceof Observable); }); it('is the value of Observable.prototype.constructor', () => { testMethodProperty(Observable.prototype, 'constructor', { configurable: true, writable: true, length: 1, }); }); it('does not call the subscriber function', () => { let called = 0; new Observable(() => { called++ }); assert.equal(called, 0); }); });