• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2require('../common');
3const assert = require('assert');
4const { Readable, Writable, Duplex, Transform } = require('stream');
5
6const readable = new Readable({ read() {} });
7const writable = new Writable({ write() {} });
8const duplex = new Duplex({ read() {}, write() {} });
9const transform = new Transform({ transform() {} });
10
11assert.ok(readable instanceof Readable);
12assert.ok(!(writable instanceof Readable));
13assert.ok(duplex instanceof Readable);
14assert.ok(transform instanceof Readable);
15
16assert.ok(!(readable instanceof Writable));
17assert.ok(writable instanceof Writable);
18assert.ok(duplex instanceof Writable);
19assert.ok(transform instanceof Writable);
20
21assert.ok(!(readable instanceof Duplex));
22assert.ok(!(writable instanceof Duplex));
23assert.ok(duplex instanceof Duplex);
24assert.ok(transform instanceof Duplex);
25
26assert.ok(!(readable instanceof Transform));
27assert.ok(!(writable instanceof Transform));
28assert.ok(!(duplex instanceof Transform));
29assert.ok(transform instanceof Transform);
30
31assert.ok(!(null instanceof Writable));
32assert.ok(!(undefined instanceof Writable));
33
34// Simple inheritance check for `Writable` works fine in a subclass constructor.
35function CustomWritable() {
36  assert.ok(
37    this instanceof CustomWritable,
38    `${this} does not inherit from CustomWritable`
39  );
40  assert.ok(
41    this instanceof Writable,
42    `${this} does not inherit from Writable`
43  );
44}
45
46Object.setPrototypeOf(CustomWritable, Writable);
47Object.setPrototypeOf(CustomWritable.prototype, Writable.prototype);
48
49new CustomWritable();
50
51assert.throws(
52  CustomWritable,
53  {
54    code: 'ERR_ASSERTION',
55    constructor: assert.AssertionError,
56    message: 'undefined does not inherit from CustomWritable'
57  }
58);
59
60class OtherCustomWritable extends Writable {}
61
62assert(!(new OtherCustomWritable() instanceof CustomWritable));
63assert(!(new CustomWritable() instanceof OtherCustomWritable));
64