Browse Source

Qrcode test

duke
Aditya Kulkarni 5 years ago
parent
commit
82a78f27f9
  1. 3
      lib/Cargo.toml
  2. 49
      lib/src/pdf.rs

3
lib/Cargo.toml

@ -12,4 +12,5 @@ zip32 = { git = "https://github.com/zcash/librustzcash", rev="3b6f5e3d5ede6469f
json = "0.11.14"
qrcode = { version = "0.8", default-features = false }
printpdf = "0.2.8"
blake2-rfc = { git = "https://github.com/gtank/blake2-rfc", rev="7a5b5fc99ae483a0043db7547fb79a6fa44b88a9" }
blake2-rfc = { git = "https://github.com/gtank/blake2-rfc", rev="7a5b5fc99ae483a0043db7547fb79a6fa44b88a9" }
array2d = "0.1.0"

49
lib/src/pdf.rs

@ -208,6 +208,55 @@ fn split_to_max(s: &str, max: usize, blocksize: usize) -> Vec<String> {
#[cfg(test)]
mod tests {
#[test]
fn test_qrcode_scale() {
use array2d::Array2D;
use qrcode::QrCode;
use crate::pdf::qrcode_scaled;
let testdata = "This is some testdata";
let code = QrCode::new(testdata.as_bytes()).unwrap();
let width = code.width();
let factor = 10;
let padding = 10;
let (scaled, size) = qrcode_scaled(testdata, factor);
let scaled_size = (width * factor)+(2*padding);
assert_eq!(size, scaled_size);
// 3 bytes per pixel
let scaled_qrcode = Array2D::from_row_major(&scaled, scaled_size, scaled_size*3);
for i in 0..scaled_size {
for j in 0..scaled_size {
for px in 0..3 {
// The padding should be white
if i < padding || i >= (width*factor) + padding ||
j < padding || j >= (width*factor) + padding {
assert_eq!(scaled_qrcode[(i, j*3+px)], 255u8);
} else {
// Should match the QR code module
let module_i = (i-padding)/factor;
let module_j = (j-padding)/factor;
// This should really be (i,j), but I think there's a bug in the qrcode
// module that is returning it the other way.
if code[(module_j, module_i)] == qrcode::Color::Light {
// Light color is white
assert_eq!(scaled_qrcode[(i, j*3+px)], 255u8);
} else {
// Dark color is black
assert_eq!(scaled_qrcode[(i, j*3+px)], 0u8);
}
}
}
}
}
}
#[test]
fn test_split() {

Loading…
Cancel
Save