File size: 2,832 Bytes
9307755
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
'use strict'
const assert = require('assert')
const tsame = require('tsame')
const { it } = require('mocha')
const bytes = require('../')

const test = it

const same = (x, y) => assert.ok(tsame(x, y))

test('string conversion', done => {
  const ab = bytes('hello world')
  assert(ab instanceof DataView)
  const str = bytes.toString(ab)
  same(str, 'hello world')
  done()
})

test('compare', done => {
  const a = bytes('hello world')
  const b = bytes('hello world 2')
  assert(bytes.compare(a, a))
  assert(bytes.compare(a, 'hello world'))
  assert(!bytes.compare(a, b))
  assert(!bytes.compare(b, a))
  assert(!bytes.compare(a, '123'))
  assert(!bytes.compare('123', a))
  done()
})

test('double view', done => {
  const a = bytes('hello world')
  const b = bytes(a)
  same(a, b)
  done()
})

test('typed array', done => {
  const ab = bytes.random(4)
  const view = bytes(ab)
  const uint = bytes.typedArray(ab, Uint32Array)
  assert(uint instanceof Uint32Array)
  assert(bytes.compare(uint, view))
  done()
})

test('from array buffer', done => {
  const a = bytes('hello world')
  const b = bytes(bytes.memcopy(a))
  same(bytes.toString(a), bytes.toString(b))
  done()
})

test('to array buffer', done => {
  const a = bytes.arrayBuffer('hello world')
  const b = bytes('hello world')
  assert(a instanceof ArrayBuffer)
  assert(bytes.compare(a, b))
  assert(a, bytes.arrayBuffer(a))
  done()
})

test('Uint8Array', done => {
  const a = bytes('hello world')
  const b = bytes(new Uint8Array(bytes.memcopy(a)))
  same(bytes.toString(a), bytes.toString(b))
  done()
})

test('native', done => {
  let n = bytes.native('hello world')
  if (process.browser) {
    assert(n instanceof Uint8Array)
    n = bytes.native(n)
    assert(n instanceof Uint8Array)
  } else {
    assert(n instanceof Buffer)
    n = bytes.native(n)
    assert(n instanceof Buffer)
  }
  done()
})

test('slice', done => {
  const a = bytes.slice('hello world', 2, 7)
  assert(a instanceof DataView)
  const b = bytes.arrayBuffer('hello world').slice(2, 7)
  same(b, bytes.arrayBuffer(a))
  done()
})

test('slice memcopy', done => {
  const a = bytes.memcopySlice('hello world', 2, 7)
  assert(a instanceof ArrayBuffer)
  const b = bytes.arrayBuffer('hello world').slice(2, 7)
  same(b, a)
  const c = bytes.memcopySlice(a)
  assert(a !== c)
  same(a, c)
  done()
})

test('concat', done => {
  let values = [bytes('1'), bytes.native('2'), bytes.arrayBuffer('3')]
  let ab = bytes.concat(values)
  assert(ab instanceof ArrayBuffer)
  assert(bytes.compare(ab, '123'))
  values = [bytes('one')]
  ab = bytes.concat(values)
  assert(bytes.compare(ab, 'one'))
  done()
})

test('random above max entropy', done => {
  const maxEntropy = 65536
  const size = (maxEntropy * 3) + 8
  const rand = bytes.random(size)
  same(rand.byteLength, size)
  done()
})