text: 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()
  })
  