diff mupdf-source/thirdparty/zxing-cpp/wrappers/rust/src/tests.rs @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/thirdparty/zxing-cpp/wrappers/rust/src/tests.rs	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,101 @@
+/*
+* Copyright 2024 Axel Waggershauser
+*/
+// SPDX-License-Identifier: Apache-2.0
+
+#[cfg(test)]
+mod tests {
+	use crate::*;
+
+	#[test]
+	fn barcode_formats_from_str_valid() {
+		let formats = BarcodeFormats::from_str("qrcode,linearcodes").unwrap();
+		assert_eq!(formats, BarcodeFormat::QRCode | BarcodeFormat::LinearCodes);
+	}
+
+	#[test]
+	fn barcode_reader_new() {
+		let mut o1 = BarcodeReader::new();
+		assert_eq!(o1.get_formats(), BarcodeFormat::None);
+		assert_eq!(o1.get_try_harder(), true);
+		o1.set_formats(BarcodeFormat::EAN8);
+		assert_eq!(o1.get_formats(), BarcodeFormat::EAN8);
+		o1.set_try_harder(false);
+		assert_eq!(o1.get_try_harder(), false);
+
+		o1 = BarcodeReader::new().is_pure(true).text_mode(TextMode::Hex);
+		assert_eq!(o1.get_formats(), BarcodeFormat::None);
+		assert_eq!(o1.get_try_harder(), true);
+		assert_eq!(o1.get_is_pure(), true);
+		assert_eq!(o1.get_text_mode(), TextMode::Hex);
+	}
+
+	#[test]
+	fn barcode_creator_new() {
+		let mut o1 = BarcodeCreator::new(BarcodeFormat::QRCode);
+		assert_eq!(o1.get_reader_init(), false);
+		o1.set_reader_init(true);
+		assert_eq!(o1.get_reader_init(), true);
+	}
+
+	#[test]
+	#[should_panic]
+	fn barcode_formats_from_str_invalid() {
+		let _ = BarcodeFormats::from_str("qrcoder").unwrap();
+	}
+
+	#[test]
+	fn create_from_str() {
+		let str = "123456";
+		let res = create(BarcodeFormat::QRCode).ec_level("Q").from_str(str).unwrap();
+
+		assert_eq!(res.is_valid(), true);
+		assert_eq!(res.format(), BarcodeFormat::QRCode);
+		assert_eq!(res.text(), str);
+		assert_eq!(res.bytes(), str.as_bytes());
+		assert_eq!(res.has_eci(), false);
+		assert_eq!(res.content_type(), ContentType::Text);
+		assert!(matches!(res.error(), BarcodeError::None()));
+		assert_eq!(res.error().to_string(), "");
+	}
+
+	#[test]
+	fn create_from_slice() {
+		let data = [1, 2, 3, 4, 5];
+		let res = create(BarcodeFormat::QRCode).reader_init(true).from_slice(&data).unwrap();
+
+		assert_eq!(res.is_valid(), true);
+		assert_eq!(res.format(), BarcodeFormat::QRCode);
+		assert_eq!(res.bytes(), data);
+		assert_eq!(res.has_eci(), true);
+		// assert_eq!(res.reader_init(), true); // TODO
+		assert_eq!(res.content_type(), ContentType::Binary);
+		assert!(matches!(res.error(), BarcodeError::None()));
+		assert_eq!(res.error().to_string(), "");
+	}
+
+	#[test]
+	fn read_pure() {
+		let mut data = Vec::<u8>::new();
+		for v in "0000101000101101011110111101011011101010100111011100101000100101110010100000".chars() {
+			data.push(if v == '0' { 255 } else { 0 });
+		}
+		let iv = ImageView::from_slice(&data, data.len(), 1, ImageFormat::Lum).unwrap();
+		let res = read().binarizer(Binarizer::BoolCast).from(&iv).unwrap();
+
+		let expected = "96385074";
+
+		assert_eq!(res.len(), 1);
+		assert_eq!(res[0].is_valid(), true);
+		assert_eq!(res[0].format(), BarcodeFormat::EAN8);
+		assert_eq!(res[0].text(), expected);
+		assert_eq!(res[0].bytes(), expected.as_bytes());
+		assert_eq!(res[0].has_eci(), false);
+		assert_eq!(res[0].content_type(), ContentType::Text);
+		assert_eq!(res[0].orientation(), 0);
+		assert_eq!(res[0].position().top_left, PointI { x: 4, y: 0 });
+		assert_eq!(res[0].line_count(), 1);
+		assert!(matches!(res[0].error(), BarcodeError::None()));
+		assert_eq!(res[0].error().to_string(), "");
+	}
+}