You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.5 KiB
65 lines
1.5 KiB
var bytewise = require('../'); |
|
var compare = require('../util').compare |
|
var tape = require('tape'); |
|
var util = require('typewise-core/test/util'); |
|
|
|
function toHex(buffer) { |
|
return buffer.toString('hex') |
|
} |
|
|
|
function push(prefix, levels) { |
|
sample.push(prefix) |
|
|
|
if (!levels--) |
|
return |
|
|
|
var i |
|
for (var i = 0; i <= 2; i++) |
|
push(prefix + toHex(Buffer([ i ])), levels) |
|
|
|
for (var i = 253; i <= 255; i++) |
|
push(prefix + toHex(Buffer([ i ])), levels) |
|
} |
|
|
|
var sample = [] |
|
push('', 3) |
|
sample = sample.sort().map(function (s) { |
|
return Buffer(s, 'hex') |
|
}) |
|
|
|
tape('buffers should round trip', function (t) { |
|
for (var i = 0; i < sample.length; i++) { |
|
var expected = sample[i] |
|
var result = bytewise.decode(bytewise.encode(expected)) |
|
t.equal(toHex(result), toHex(expected)) |
|
} |
|
t.end() |
|
}) |
|
|
|
tape('nested buffers should round trip', function (t) { |
|
var result = bytewise.decode(bytewise.encode(sample)) |
|
t.deepEqual(result.map(toHex), sample.map(toHex)) |
|
t.end() |
|
}) |
|
|
|
tape('buffers should sort correctly', function (t) { |
|
var result = sample.map(bytewise.encode) |
|
.sort(bytewise.compare) |
|
.map(bytewise.decode) |
|
|
|
t.deepEqual(result.map(toHex), sample.map(toHex)) |
|
t.end() |
|
}) |
|
|
|
tape('nested buffers should sort correctly', function (t) { |
|
var nested = sample.map(function (s) { |
|
return [ s ] |
|
}) |
|
|
|
var result = nested.map(bytewise.encode) |
|
.sort(bytewise.compare) |
|
.map(bytewise.decode) |
|
|
|
t.deepEqual(result.map(toHex), nested.map(toHex)) |
|
t.end() |
|
})
|
|
|