zbar-rust 0.0.7

High-level and low-level ZBar binding for the Rust language.
extern crate qrcode_generator;
extern crate zbar_rust;

use zbar_rust::{ZBarConfig, ZBarImageScanner, ZBarSymbolType};

use qrcode_generator::QrCodeEcc;

#[test]
fn image_create_destroy() {
    let _scanner = ZBarImageScanner::new();
}

#[test]
fn set_config() {
    let mut scanner = ZBarImageScanner::new();
    scanner.set_config(ZBarSymbolType::ZBarNone, ZBarConfig::ZBarCfgEnable, 0).unwrap();
    scanner.set_config(ZBarSymbolType::ZBarQRCode, ZBarConfig::ZBarCfgEnable, 1).unwrap();
}

#[test]
fn decode_qrcode() {
    let mut scanner = ZBarImageScanner::new();

    let url = "https://magiclen.org";

    let size = 512;

    let data = qrcode_generator::to_image(url, QrCodeEcc::Low, size).unwrap();

    let mut result = scanner.scan_y800(&data, size as u32, size as u32).unwrap();

    assert_eq!(1, result.len());
    assert_eq!(ZBarSymbolType::ZBarQRCode, result[0].symbol_type);
    assert_eq!(url, unsafe { String::from_utf8_unchecked(result.remove(0).data) });
}