qr_encode/lib.rs
1pub mod qr_encoder;
2
3// #![allow(dead_code)]
4
5// pub mod qr_encoder;
6
7// use qr_encoder::util::{codeword_info, square_count};
8// use qr_encoder::config::{ECLevel, QRConfig, EncodingMode, ecc_format};
9// use qr_encoder::cell::CellType;
10// use qr_encoder::qr::QR;
11
12
13// fn qr_config_with_general_opts(version: usize, ec_level: ECLevel, encoding_mode: EncodingMode, message: Vec<u8>) -> QRConfig {
14// QRConfig {
15// version: version,
16// data: message,
17// encoding: 0,
18// codewords: vec![],
19// codeword_properties: codeword_info(version, &ec_level),
20// mask: 4,
21// encoding_mode: encoding_mode,
22// debug_mode: false,
23// requires_alignment: version > 6,
24// finder_points: [
25// (0, 0),
26// ((square_count(version) - 7), 0),
27// (0, (square_count(version) - 7))
28// ],
29// size: (((version - 1) * 4) + 21),
30// err_correction_level: ec_level
31// }
32// }
33
34// fn create_qr(config: &QRConfig) -> QR {
35// QR {
36// body: config.create_body() }
37// }
38
39// #[cfg(test)]
40// mod tests {
41// // use super::qr_encoder::util::{args};
42// // use super::qr_encoder::qr::{QROptions, QR};
43
44// // #[test]
45// // fn test_qr_create() {
46// // let qr_opt = args();
47// // }
48
49// #[test]
50// fn test_ecc_version_info() {
51// use super::qr_encoder::config::ecc_format;
52// let gen_poly = 7973;
53// let mut version = 7;
54
55// let mut expected_outcome = 0b000111110010010100u32;
56// let mut actual_outcome = ecc_format::<u32>(version, gen_poly, None);
57
58// assert_eq!(expected_outcome, actual_outcome);
59
60// version = 8;
61// expected_outcome = 0b1000010110111100u32;
62// actual_outcome = ecc_format::<u32>(version, gen_poly, None);
63
64// assert_eq!(expected_outcome, actual_outcome);
65
66// version = 33;
67// expected_outcome = 0b100001011011110000u32;
68// actual_outcome = ecc_format::<u32>(version, gen_poly, None);
69
70// assert_eq!(expected_outcome, actual_outcome);
71// }
72
73// #[test]
74// fn test_ecc_format() {
75// use super::*;
76
77
78// let message = String::from("Hello, World!").into_bytes();
79// let mut qr_opts = qr_config_with_general_opts(7, ECLevel::Low, EncodingMode::Byte, message);
80// let mut qr = create_qr(&qr_opts);
81// qr.setup(&mut qr_opts);
82// // qr.encode_data(&qr_opts);
83// qr_opts.encode_format_areas(&mut qr.body, 4u8);
84
85// // assert_eq!(4, qr_opts.mask);
86// let mut index = qr_opts.size * 8;
87// let mut actual_format_bytestring = 0;
88// let expected_format_bytestring = 0b110011000101111;
89// let mut pos = 14;
90
91// while index >= 8 {
92
93// let cell = &qr.body[index];
94// match cell.module_type {
95// CellType::Format => {
96// if cell.is_black() {
97// actual_format_bytestring |= (1 << pos);
98// }
99// pos -= 1;
100// },
101// _ => {}
102// }
103
104// if index == 8 {
105// break;
106// }
107
108// if index % qr_opts.size == 8 {
109// index -= qr_opts.size;
110// } else {
111// index += 1;
112// }
113// }
114
115// assert_eq!(expected_format_bytestring, actual_format_bytestring);
116// }
117// }