/* eslint-disable camelcase */ const test = require('brittle') const sodium = require('..') test('sodium_memcmp', function (t) { const b1 = Buffer.from([0, 1, 2, 3]) const b2 = Buffer.from([3, 2, 1, 0]) t.exception.all(_ => sodium.sodium_memcmp(), 'no args') t.exception.all(_ => sodium.sodium_memcmp(b1), 'arg mismatch') t.exception.all(_ => sodium.sodium_memcmp(b1, b2.slice(1)), 'length mismatch') t.ok(sodium.sodium_memcmp(Buffer.alloc(0), Buffer.alloc(0))) t.ok(sodium.sodium_memcmp(Buffer.alloc(5), Buffer.alloc(5))) t.ok(sodium.sodium_memcmp(b1, b1)) t.absent(sodium.sodium_memcmp(b2, b1)) t.absent(sodium.sodium_memcmp(b1, b2)) }) test.skip('sodium_compare', function (t) { const one = Buffer.from([1]) const two = Buffer.from([2]) const three = Buffer.from([3]) t.is(sodium.sodium_compare(Buffer.alloc(0), Buffer.alloc(0)), 0) t.is(sodium.sodium_compare(one, one), 0) t.is(sodium.sodium_compare(two, two), 0) t.is(sodium.sodium_compare(three, three), 0) t.is(sodium.sodium_compare(one, two), -1) t.is(sodium.sodium_compare(one, three), -1) t.is(sodium.sodium_compare(two, one), 1) t.is(sodium.sodium_compare(three, one), 1) t.is(sodium.sodium_compare(two, three), -1) t.is(sodium.sodium_compare(three, two), 1) }) test.skip('sodium_add', function (t) { const large = Buffer.alloc(32) large[23] = 0b00000011 const largeLessOne = Buffer.alloc(32) largeLessOne[23] = 0b00000001 const c = Buffer.from(large) sodium.sodium_add(c, largeLessOne) t.ok(large[23], 4) const overflow = Buffer.alloc(56, 0xff) const one = Buffer.alloc(56) one[0] = 1 sodium.sodium_add(overflow, one) t.ok(sodium.sodium_is_zero(overflow)) }) test.skip('sub', function (t) { const large = Buffer.alloc(32) large[23] = 0b00000011 const largeLessOne = Buffer.alloc(32) largeLessOne[23] = 0b00000001 const c = Buffer.from(large) sodium.sodium_sub(c, largeLessOne) t.ok(large[23], 2) const overflow = Buffer.alloc(56, 0x00) const one = Buffer.alloc(56) one[0] = 1 sodium.sodium_sub(overflow, one) t.ok(sodium.sodium_memcmp(overflow, Buffer.alloc(56, 0xff))) }) test('sodium_increment', function (t) { const zero = Buffer.alloc(4) sodium.sodium_increment(zero) t.ok(zero[0], 1) const overflow = Buffer.alloc(56, 0xff) sodium.sodium_increment(overflow) t.ok(sodium.sodium_is_zero(overflow)) }) test('sodium_is_zero', function (t) { const buf = Buffer.from([0, 0, 0, 1]) t.exception.all(_ => sodium.sodium_is_zero(), 'no args') t.exception.all(_ => sodium.sodium_is_zero(null), 'missing buf') t.ok(sodium.sodium_is_zero(Buffer.alloc(0)), 'empty buffer') t.ok(sodium.sodium_is_zero(buf.subarray(0, 0)), 'zero bytes') t.ok(sodium.sodium_is_zero(buf.subarray(0, 1)), 'one byte') t.ok(sodium.sodium_is_zero(buf.subarray(0, 2)), 'two bytes') t.ok(sodium.sodium_is_zero(buf.subarray(0, 3)), '3 bytes') t.absent(sodium.sodium_is_zero(buf), 'first non-zero byte') t.ok(sodium.sodium_is_zero(buf.subarray(1, 2)), 'view') t.ok(sodium.sodium_is_zero(buf.subarray(1, 2)), 'view') t.absent(sodium.sodium_is_zero(buf.subarray(3)), 'view') })