From ac4356117108ea80811f4fe7051c6b61b8477ab2 Mon Sep 17 00:00:00 2001 From: Nikita Skovoroda Date: Thu, 30 Oct 2025 02:34:55 +0400 Subject: [PATCH 1/2] [test] Add cross-tests between native and fallback --- test/test.js | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/test/test.js b/test/test.js index 2ddcb17..5920389 100644 --- a/test/test.js +++ b/test/test.js @@ -1,8 +1,12 @@ 'use strict'; const { deepStrictEqual } = require('assert'); +const { randomBytes } = require('crypto'); const { join } = require('path'); +const native = require('node-gyp-build')(join(__dirname, '..')); +const fallback = require('../fallback'); + function use(bufferUtil) { return function () { it('masks a buffer (1/2)', function () { @@ -44,5 +48,38 @@ function use(bufferUtil) { }; } -describe('bindings', use(require('node-gyp-build')(join(__dirname, '..')))); -describe('fallback', use(require('../fallback'))); +describe('bindings', use(native)); +describe('fallback', use(fallback)); + +describe('bindings match fallback', () => { + const sizes = [1, 127, 128, 200, 1024, 10 * 1024 - 1, 10 * 1024] + const offsets = [0, 1, 10, 16, 128] + + it('masks', function () { + for (const size of sizes) { + for (const offset of offsets) { + const src = randomBytes(size); + const mask = randomBytes(4); + const dest = randomBytes(size + offset); + const destFallback = Buffer.from(dest); + + native.mask(src, mask, dest, offset, size); + fallback.mask(src, mask, destFallback, offset, size); + + deepStrictEqual(dest, destFallback); + } + } + }); + + it('unmasks', function () { + for (const size of sizes) { + const buf = randomBytes(size); + const mask = randomBytes(4); + + deepStrictEqual( + native.unmask(buf, mask), + fallback.unmask(buf, mask) + ); + } + }); +}) From 7391c251727b7d7efd090e3e75876b0a11ca51ed Mon Sep 17 00:00:00 2001 From: Nikita Skovoroda Date: Fri, 31 Oct 2025 18:53:32 +0300 Subject: [PATCH 2/2] Update test/test.js Co-authored-by: Luigi Pinca --- test/test.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/test.js b/test/test.js index 5920389..d6241cb 100644 --- a/test/test.js +++ b/test/test.js @@ -73,13 +73,14 @@ describe('bindings match fallback', () => { it('unmasks', function () { for (const size of sizes) { - const buf = randomBytes(size); + const buf1 = randomBytes(size); + const buf2 = Buffer.from(buf1); const mask = randomBytes(4); - deepStrictEqual( - native.unmask(buf, mask), - fallback.unmask(buf, mask) - ); + native.unmask(buf1, mask); + fallback.unmask(buf2, mask); + + deepStrictEqual(buf1, buf2); } }); })