summaryrefslogtreecommitdiff
path: root/core/src/test/java
diff options
context:
space:
mode:
authorFrançois Tiercelin <francois.tiercelin@hpe.com>2024-11-17 19:25:04 +0300
committerGitHub <noreply@github.com>2024-11-17 19:25:04 +0300
commit2dfb2054af1e1872ac5354e6d8218931fb88e021 (patch)
treeddc39ce5511c75881eb3a39c5464ded533d1014b /core/src/test/java
parent3b189fc700c9c7c210f4b78fc66b01f4c13ae5d2 (diff)
downloadzxing-2dfb2054af1e1872ac5354e6d8218931fb88e021.tar.xz
Fixing issue #1831 (#1879)
* throw a more explicit exception when trying to PDF417/TEXT encode something outside of 0...255 * refactor PDF417HighLevelEncoder to avoid code duplication extend UT to new method PDF417HighLevelEncoder#checkCharset * fix javadoc typo make UT more stringent on PDF417HighLevelEncoder#checkCharset * restrict TEXT to 0...127 test with CP437 and Greek chars * reinstate testEncodeAuto UT * refactor testEncodeAuto UT * address codacy findings * formatting * fix issue #1831 make PDF417#determineDimensions to enable finer UT add UT coverage to validate fix for #1831 * fix javadoc for PDF417#determineDimensions remove stacktrace when UT fails * make UT Java 8 compliant
Diffstat (limited to 'core/src/test/java')
-rw-r--r--core/src/test/java/com/google/zxing/pdf417/encoder/PDF417EncoderTestCase.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/core/src/test/java/com/google/zxing/pdf417/encoder/PDF417EncoderTestCase.java b/core/src/test/java/com/google/zxing/pdf417/encoder/PDF417EncoderTestCase.java
index 2f582b901..6f99c4229 100644
--- a/core/src/test/java/com/google/zxing/pdf417/encoder/PDF417EncoderTestCase.java
+++ b/core/src/test/java/com/google/zxing/pdf417/encoder/PDF417EncoderTestCase.java
@@ -23,7 +23,10 @@ import java.util.UUID;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.Writer;
import com.google.zxing.WriterException;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.pdf417.PDF417Writer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
@@ -161,4 +164,44 @@ public final class PDF417EncoderTestCase extends Assert {
public void testEncodeEmptyString() throws Exception {
PDF417HighLevelEncoder.encodeHighLevel("", Compaction.AUTO, null, false);
}
+
+ @Test
+ public void testDimensions() throws Exception {
+ // test https://github.com/zxing/zxing/issues/1831
+ String input = "0000000001000000022200000003330444400888888881010101010";
+ testDimensions(input, new Dimensions(1, 30, 7, 10));
+ testDimensions(input, new Dimensions(1, 40, 1, 7));
+ testDimensions(input, new Dimensions(10, 30, 1, 5));
+ testDimensions(input, new Dimensions(1, 3, 1, 15));
+ testDimensions(input, new Dimensions(5, 30, 7, 7));
+ testDimensions(input, new Dimensions(12, 12, 1, 17));
+ testDimensions(input, new Dimensions(1, 30, 7, 7));
+ }
+
+ public static void testDimensions(String input, Dimensions dimensions) throws Exception {
+ int sourceCodeWords = 20;
+ int errorCorrectionCodeWords = 8;
+
+ int[] calculated = PDF417.determineDimensions(dimensions.getMinCols(), dimensions.getMaxCols(),
+ dimensions.getMinRows(), dimensions.getMaxRows(),
+ sourceCodeWords, errorCorrectionCodeWords);
+
+ assertNotNull(calculated);
+ assertEquals(2,calculated.length);
+ assertTrue(dimensions.getMinCols() <= calculated[0]);
+ assertTrue(dimensions.getMaxCols() >= calculated[0]);
+ assertTrue(dimensions.getMinRows() <= calculated[1]);
+ assertTrue(dimensions.getMaxRows() >= calculated[1]);
+ assertNotNull(generatePDF417BitMatrix(input, 371, null, dimensions));
+ }
+
+ public static BitMatrix generatePDF417BitMatrix(final String barcodeText, final int width,
+ final Integer heightRequested, final Dimensions dimensions) throws WriterException {
+ final Writer barcodeWriter = new PDF417Writer();
+ final int height = heightRequested == null ? width / 4 : heightRequested;
+ Map<EncodeHintType, Object> hints = new HashMap<>();
+ hints.put(EncodeHintType.MARGIN, 0);
+ hints.put(EncodeHintType.PDF417_DIMENSIONS, dimensions);
+ return barcodeWriter.encode(barcodeText, BarcodeFormat.PDF_417, width, height, hints);
+ }
}