5-bits-negative-integers.js 826 Bytes
'use strict'

var test = require('tape').test
var msgpack = require('../')

test('encoding/decoding 5-bits negative ints', function (t) {
  var encoder = msgpack()
  var allNum = []

  for (var i = 1; i <= 32; i++) {
    allNum.push(-i)
  }

  allNum.forEach(function (num) {
    t.test('encoding ' + num, function (t) {
      var buf = encoder.encode(num)
      t.equal(buf.length, 1, 'must have 1 byte')
      t.equal(buf[0], num + 0x100, 'must encode correctly')
      t.end()
    })

    t.test('decoding' + num, function (t) {
      var buf = new Buffer([num + 0x100])
      t.equal(encoder.decode(buf), num, 'must decode correctly')
      t.end()
    })

    t.test('mirror test' + num, function (t) {
      t.equal(encoder.decode(encoder.encode(num)), num, 'must stay the same')
      t.end()
    })
  })

  t.end()
})