|
1 | 1 | 'use strict'; |
2 | 2 |
|
3 | 3 | const { deepStrictEqual } = require('assert'); |
| 4 | +const { randomBytes } = require('crypto'); |
4 | 5 | const { join } = require('path'); |
5 | 6 |
|
| 7 | +const native = require('node-gyp-build')(join(__dirname, '..')); |
| 8 | +const fallback = require('../fallback'); |
| 9 | + |
6 | 10 | function use(bufferUtil) { |
7 | 11 | return function () { |
8 | 12 | it('masks a buffer (1/2)', function () { |
@@ -44,5 +48,39 @@ function use(bufferUtil) { |
44 | 48 | }; |
45 | 49 | } |
46 | 50 |
|
47 | | -describe('bindings', use(require('node-gyp-build')(join(__dirname, '..')))); |
48 | | -describe('fallback', use(require('../fallback'))); |
| 51 | +describe('bindings', use(native)); |
| 52 | +describe('fallback', use(fallback)); |
| 53 | + |
| 54 | +describe('bindings match fallback', () => { |
| 55 | + const sizes = [1, 127, 128, 200, 1024, 10 * 1024 - 1, 10 * 1024] |
| 56 | + const offsets = [0, 1, 10, 16, 128] |
| 57 | + |
| 58 | + it('masks', function () { |
| 59 | + for (const size of sizes) { |
| 60 | + for (const offset of offsets) { |
| 61 | + const src = randomBytes(size); |
| 62 | + const mask = randomBytes(4); |
| 63 | + const dest = randomBytes(size + offset); |
| 64 | + const destFallback = Buffer.from(dest); |
| 65 | + |
| 66 | + native.mask(src, mask, dest, offset, size); |
| 67 | + fallback.mask(src, mask, destFallback, offset, size); |
| 68 | + |
| 69 | + deepStrictEqual(dest, destFallback); |
| 70 | + } |
| 71 | + } |
| 72 | + }); |
| 73 | + |
| 74 | + it('unmasks', function () { |
| 75 | + for (const size of sizes) { |
| 76 | + const buf1 = randomBytes(size); |
| 77 | + const buf2 = Buffer.from(buf1); |
| 78 | + const mask = randomBytes(4); |
| 79 | + |
| 80 | + native.unmask(buf1, mask); |
| 81 | + fallback.unmask(buf2, mask); |
| 82 | + |
| 83 | + deepStrictEqual(buf1, buf2); |
| 84 | + } |
| 85 | + }); |
| 86 | +}) |
0 commit comments