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