-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.test.ts
71 lines (60 loc) · 2.25 KB
/
index.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import {
initTestUtils,
cleanup,
writeTmpBuffer,
getFileSize,
getImageMetadata,
getImage,
} from '@wasm-codecs/test-utils';
import encode from '../lib';
describe('oxipng', () => {
beforeAll(() => {
initTestUtils(__dirname);
});
afterAll(cleanup);
// test all image sizes
['tiny', 'small', 'medium', 'large'].forEach((size) => {
it(`encodes a ${size} image`, async () => {
jest.setTimeout(60000);
const {
data,
info: { width, height },
} = await getImage(`images/${size}.png`);
const originalSize = getFileSize(`images/${size}.png`);
const originalMetadata = await getImageMetadata(`images/${size}.png`);
expect(originalMetadata.channels).toBe(4);
const result = await encode(data);
const encodedPath = writeTmpBuffer(result, `${size}.png`);
const encodedSize = getFileSize(encodedPath);
// expect the image size to be between 1/2 and 9/10 of the original image
expect(encodedSize).toBeLessThan(originalSize * 0.9);
expect(encodedSize).toBeGreaterThan(originalSize * 0.5);
// check if the image is still a valid png image
const metadata = await getImageMetadata(encodedPath);
expect(metadata.format).toBe('png');
expect(metadata.width).toBe(width);
expect(metadata.height).toBe(height);
expect(metadata.channels).toBe(4);
});
});
it('respects level option', async () => {
const {
data,
info: { width, height },
} = await getImage('images/medium.png');
const originalSize = getFileSize('images/medium.png');
const originalMetadata = await getImageMetadata('images/medium.png');
expect(originalMetadata.channels).toBe(4);
const result = await encode(data, { level: 0 });
const encodedPath = writeTmpBuffer(result, 'medium-lowlevel.png');
const encodedSize = getFileSize(encodedPath);
// expect the image size to be higher than 90% of the original
expect(encodedSize).toBeGreaterThan(originalSize * 0.9);
// check if the image is still a valid png image
const metadata = await getImageMetadata(encodedPath);
expect(metadata.format).toBe('png');
expect(metadata.width).toBe(width);
expect(metadata.height).toBe(height);
expect(metadata.channels).toBe(4);
});
});