云
4 小时以前 a7cf1913c376b53f487f0ef8dfff084c5bc010a7
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
package cn.iocoder.yudao.module.mes.framework.qrcode;
 
import cn.hutool.extra.qrcode.QrCodeUtil;
import org.junit.jupiter.api.Test;
 
import javax.imageio.ImageIO;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
 
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
 
class QrCodeImageUtilsZipTest {
 
    @Test
    void writesMultipleReadablePngEntries() throws Exception {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        try (ZipOutputStream zip = new ZipOutputStream(bytes)) {
            QrCodeImageUtils.writeZipEntry(zip, QrLabelInfo.builder()
                    .fileName("1234567890123456").code("1234567890123456").build());
            QrCodeImageUtils.writeZipEntry(zip, QrLabelInfo.builder()
                    .fileName("1234567890123457").code("1234567890123457").build());
        }
 
        try (ZipInputStream zip = new ZipInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
            assertEquals("1234567890123456.png", zip.getNextEntry().getName());
            var first = ImageIO.read(zip);
            assertNotNull(first);
            assertEquals("1234567890123456", QrCodeUtil.decode(first));
            assertEquals("1234567890123457.png", zip.getNextEntry().getName());
            var second = ImageIO.read(zip);
            assertNotNull(second);
            assertEquals("1234567890123457", QrCodeUtil.decode(second));
            assertNull(zip.getNextEntry());
        }
    }
 
}