/* global describe, it */
var assert = require('assert');
var BigInteger = require('../src/jsbn/jsbn.js')
var bytesToHex = require('../src/convert.js').bytesToHex;
var secureRandom = require('secure-random');

describe('BigInteger', function() {
    describe('toByteArraySigned', function() {
        it('handles examples', function() {
            function hex(num) {
                var bytes = BigInteger.valueOf(num).toByteArraySigned();
                var h = bytesToHex(bytes);
                return '0x' + h;
            }

            assert.equal(hex( 0), '0x');
            assert.equal(hex( 1), '0x01');
            assert.equal(hex(-1), '0x81');
            assert.equal(hex( 127), '0x7f');
            assert.equal(hex(-127), '0xff');
            assert.equal(hex( 255), '0x00ff');
            assert.equal(hex(-255), '0x80ff');
            assert.equal(hex( 16300),  '0x3fac');
            assert.equal(hex(-16300), '0xbfac');
            assert.equal(hex( 62300), '0x00f35c');
            assert.equal(hex(-62300), '0x80f35c');
        })
    })

    describe('with RNG passed into constructor as the 2nd argument', function(){
      it('returns a BigInteger with the limit of the specified length', function(){
        var bitLength = 256
        var i = new BigInteger(bitLength, secureRandom)
        assert(i.bitLength() <= 256)
      })
    })
})