@cloudpss/compress 0.4.15 → 0.4.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/tests/e2e.js ADDED
@@ -0,0 +1,132 @@
1
+ import { compress, decompress, detectCompression } from '@cloudpss/compress';
2
+ import { randomFillSync } from 'node:crypto';
3
+
4
+ describe('compress/decompress', () => {
5
+ const data = Buffer.from('hello world');
6
+ it('default', async () => {
7
+ const compressed = await compress(data);
8
+ expect(detectCompression(compressed)).toBe('zstd');
9
+ const decompressing = decompress(compressed);
10
+ const decompressed = await decompressing;
11
+ expect(Buffer.compare(decompressed, data)).toBe(0);
12
+ expect(decompressing.algorithm).toBe('zstd');
13
+ });
14
+ it('zstd', async () => {
15
+ const compressed = await compress(data, 'zstd');
16
+ expect(detectCompression(compressed)).toBe('zstd');
17
+ const decompressing = decompress(compressed);
18
+ const decompressed = await decompressing;
19
+ expect(Buffer.compare(decompressed, data)).toBe(0);
20
+ expect(decompressing.algorithm).toBe('zstd');
21
+ });
22
+ it('gzip', async () => {
23
+ const compressed = await compress(data, 'gzip');
24
+ expect(detectCompression(compressed)).toBe('gzip');
25
+ const decompressing = decompress(compressed);
26
+ const decompressed = await decompressing;
27
+ expect(Buffer.compare(decompressed, data)).toBe(0);
28
+ expect(decompressing.algorithm).toBe('gzip');
29
+ });
30
+ it('none', async () => {
31
+ const compressed = await compress(data, 'none');
32
+ expect(detectCompression(compressed)).toBe('none');
33
+ const decompressing = decompress(compressed);
34
+ const decompressed = await decompressing;
35
+ expect(Buffer.compare(compressed, data)).toBe(0);
36
+ expect(Buffer.compare(decompressed, data)).toBe(0);
37
+ expect(decompressing.algorithm).toBe('none');
38
+ });
39
+ });
40
+
41
+ describe('compress/decompress empty', () => {
42
+ const data = Buffer.alloc(0);
43
+ it('default', async () => {
44
+ const compressed = await compress(data);
45
+ expect(detectCompression(compressed)).toBe('zstd');
46
+ const decompressing = decompress(compressed);
47
+ const decompressed = await decompressing;
48
+ expect(decompressed.length).toBe(0);
49
+ expect(decompressing.algorithm).toBe('zstd');
50
+ });
51
+ it('zstd', async () => {
52
+ const compressed = await compress(data, 'zstd');
53
+ expect(detectCompression(compressed)).toBe('zstd');
54
+ const decompressing = decompress(compressed);
55
+ const decompressed = await decompressing;
56
+ expect(decompressed.length).toBe(0);
57
+ expect(decompressing.algorithm).toBe('zstd');
58
+ });
59
+ it('gzip', async () => {
60
+ const compressed = await compress(data, 'gzip');
61
+ expect(detectCompression(compressed)).toBe('gzip');
62
+ const decompressing = decompress(compressed);
63
+ const decompressed = await decompressing;
64
+ expect(decompressed.length).toBe(0);
65
+ expect(decompressing.algorithm).toBe('gzip');
66
+ });
67
+ it('none', async () => {
68
+ const compressed = await compress(data, 'none');
69
+ expect(detectCompression(compressed)).toBe('none');
70
+ const decompressing = decompress(compressed);
71
+ const decompressed = await decompressing;
72
+ expect(compressed.length).toBe(0);
73
+ expect(decompressed.length).toBe(0);
74
+ expect(decompressing.algorithm).toBe('none');
75
+ });
76
+ });
77
+
78
+ describe(`other data types`, () => {
79
+ it('ArrayBuffer', async () => {
80
+ const data = new ArrayBuffer(10);
81
+ randomFillSync(Buffer.from(data), 0, 10);
82
+ const compressed = await compress(data);
83
+ const decompressing = decompress(compressed);
84
+ const decompressed = await decompressing;
85
+ expect(Buffer.compare(decompressed, Buffer.from(data))).toBe(0);
86
+ expect(decompressing.algorithm).toBe('zstd');
87
+ });
88
+
89
+ it(`DataView`, async () => {
90
+ const data = new ArrayBuffer(10);
91
+ randomFillSync(Buffer.from(data), 0, 10);
92
+ const compressed = await compress(new DataView(data));
93
+ const decompressing = decompress(compressed);
94
+ const decompressed = await decompressing;
95
+ expect(Buffer.compare(decompressed, Buffer.from(data))).toBe(0);
96
+ expect(decompressing.algorithm).toBe('zstd');
97
+ });
98
+ });
99
+
100
+ describe('rejects bad input', () => {
101
+ it('compress', () => {
102
+ // @ts-expect-error test
103
+ expect(() => compress(123)).toThrow();
104
+ // @ts-expect-error test
105
+ expect(() => compress([1, 2, 3])).toThrow();
106
+ // @ts-expect-error test
107
+ expect(() => compress(Buffer.alloc(10), 'xxx')).toThrow();
108
+ });
109
+ it('decompress', () => {
110
+ // @ts-expect-error test
111
+ expect(() => decompress(123)).toThrow();
112
+ });
113
+ });
114
+
115
+ describe('detectCompression', () => {
116
+ it('detects zstd', () => {
117
+ const compressed = Buffer.from('28b52ffd00000000', 'hex');
118
+ expect(detectCompression(compressed)).toBe('zstd');
119
+ });
120
+ it('detects gzip', () => {
121
+ const compressed = Buffer.from('1f8b08000000000000000000000000000000', 'hex');
122
+ expect(detectCompression(compressed)).toBe('gzip');
123
+ });
124
+ it('detects none', () => {
125
+ const compressed = Buffer.from('00000000000000000000', 'hex');
126
+ expect(detectCompression(compressed)).toBe('none');
127
+ const compressed2 = Buffer.from('28b52ffd000000', 'hex');
128
+ expect(detectCompression(compressed2)).toBe('none');
129
+ const compressed3 = Buffer.from('1f8b080000000000000000000000000000', 'hex');
130
+ expect(detectCompression(compressed3)).toBe('none');
131
+ });
132
+ });