summaryrefslogtreecommitdiff
path: root/net/ioutil_test.ts
blob: 422901e4a5c39760beb2b0431393cde859bcd97e (plain)
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
import { Reader, ReadResult } from "deno";
import { assertEqual, test } from "../testing/mod.ts";
import { readInt, readLong, readShort, sliceLongToBytes } from "./ioutil.ts";
import { BufReader } from "./bufio.ts";

class BinaryReader implements Reader {
  index = 0;

  constructor(private bytes: Uint8Array = new Uint8Array(0)) {}

  async read(p: Uint8Array): Promise<ReadResult> {
    p.set(this.bytes.subarray(this.index, p.byteLength));
    this.index += p.byteLength;
    return { nread: p.byteLength, eof: false };
  }
}

test(async function testReadShort() {
  const r = new BinaryReader(new Uint8Array([0x12, 0x34]));
  const short = await readShort(new BufReader(r));
  assertEqual(short, 0x1234);
});

test(async function testReadInt() {
  const r = new BinaryReader(new Uint8Array([0x12, 0x34, 0x56, 0x78]));
  const int = await readInt(new BufReader(r));
  assertEqual(int, 0x12345678);
});

test(async function testReadLong() {
  const r = new BinaryReader(
    new Uint8Array([0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78])
  );
  const long = await readLong(new BufReader(r));
  assertEqual(long, 0x1234567812345678);
});

test(async function testReadLong2() {
  const r = new BinaryReader(
    new Uint8Array([0, 0, 0, 0, 0x12, 0x34, 0x56, 0x78])
  );
  const long = await readLong(new BufReader(r));
  assertEqual(long, 0x12345678);
});

test(async function testSliceLongToBytes() {
  const arr = sliceLongToBytes(0x1234567890abcdef);
  const actual = readLong(new BufReader(new BinaryReader(new Uint8Array(arr))));
  const expected = readLong(
    new BufReader(
      new BinaryReader(
        new Uint8Array([0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef])
      )
    )
  );
  assertEqual(actual, expected);
});

test(async function testSliceLongToBytes2() {
  const arr = sliceLongToBytes(0x12345678);
  assertEqual(arr, [0, 0, 0, 0, 0x12, 0x34, 0x56, 0x78]);
});