File: arraybuffer.js

package info (click to toggle)
node-socket.io-parser 4.2.1%2B~3.1.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 916 kB
  • sloc: javascript: 787; makefile: 9; sh: 4
file content (92 lines) | stat: -rw-r--r-- 2,358 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
const { PacketType, Decoder, Encoder } = require("..");
const expect = require("expect.js");
const helpers = require("./helpers.js");
const encoder = new Encoder();

describe("parser", () => {
  it("encodes an ArrayBuffer", (done) => {
    const packet = {
      type: PacketType.EVENT,
      data: ["a", new ArrayBuffer(2)],
      id: 0,
      nsp: "/",
    };
    helpers.test_bin(packet, done);
  });

  it("encodes an ArrayBuffer into an object with a null prototype", (done) => {
    const packet = {
      type: PacketType.EVENT,
      data: [
        "a",
        Object.create(null, {
          array: { value: new ArrayBuffer(2), enumerable: true },
        }),
      ],
      id: 0,
      nsp: "/",
    };
    helpers.test_bin(packet, done);
  });

  it("encodes a TypedArray", (done) => {
    const array = new Uint8Array(5);
    for (let i = 0; i < array.length; i++) array[i] = i;

    const packet = {
      type: PacketType.EVENT,
      data: ["a", array],
      id: 0,
      nsp: "/",
    };
    helpers.test_bin(packet, done);
  });

  it("encodes ArrayBuffers deep in JSON", (done) => {
    const packet = {
      type: PacketType.EVENT,
      data: [
        "a",
        {
          a: "hi",
          b: { why: new ArrayBuffer(3) },
          c: { a: "bye", b: { a: new ArrayBuffer(6) } },
        },
      ],
      id: 999,
      nsp: "/deep",
    };
    helpers.test_bin(packet, done);
  });

  it("encodes deep binary JSON with null values", (done) => {
    const packet = {
      type: PacketType.EVENT,
      data: ["a", { a: "b", c: 4, e: { g: null }, h: new ArrayBuffer(9) }],
      nsp: "/",
      id: 600,
    };
    helpers.test_bin(packet, done);
  });

  it("cleans itself up on close", () => {
    const packet = {
      type: PacketType.EVENT,
      data: ["a", new ArrayBuffer(2), new ArrayBuffer(3)],
      id: 0,
      nsp: "/",
    };

    const encodedPackets = encoder.encode(packet);

    const decoder = new Decoder();
    decoder.on("decoded", (packet) => {
      throw new Error("received a packet when not all binary data was sent.");
    });

    decoder.add(encodedPackets[0]); // add metadata
    decoder.add(encodedPackets[1]); // add first attachment
    decoder.destroy(); // destroy before all data added
    expect(decoder.reconstructor.buffers.length).to.be(0); // expect that buffer is clean
  });
});