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()); } } }