sharp/test/unit/median.js
2023-10-31 21:32:33 +00:00

55 lines
1.2 KiB
JavaScript

// Copyright 2013 Lovell Fuller and others.
// SPDX-License-Identifier: Apache-2.0
'use strict';
const assert = require('assert');
const sharp = require('../../');
const row = [0, 3, 15, 63, 127, 255];
const input = Buffer.from(Array.from(row, () => row).flat());
const raw = {
width: 6,
height: 6,
channels: 1
};
describe('Median filter', function () {
it('default window (3x3)', async () => {
const data = await sharp(input, { raw })
.median()
.toColourspace('b-w')
.raw()
.toBuffer();
assert.deepStrictEqual(data.subarray(0, 6), Buffer.from(row));
});
it('3x3 window', async () => {
const data = await sharp(input, { raw })
.median(3)
.toColourspace('b-w')
.raw()
.toBuffer();
assert.deepStrictEqual(data.subarray(0, 6), Buffer.from(row));
});
it('5x5 window', async () => {
const data = await sharp(input, { raw })
.median(5)
.toColourspace('b-w')
.raw()
.toBuffer();
assert.deepStrictEqual(data.subarray(0, 6), Buffer.from([0, 3, 15, 15, 63, 127]));
});
it('invalid radius', () => {
assert.throws(() => {
sharp().median(0.1);
});
});
});