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
pub mod qr_encoder;

// #![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);
//     }
// }