swrs 0.1.1

A simple rust library that reads and parses a sketchware project
Documentation
extern crate swrs;

use swrs::parser::library::{LibraryItem, Library};
use swrs::parser::Parsable;

#[test]
fn parse_library_item() {
    let input = r#"{"adUnits":[],"data":"","libType":0,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"N"}"#;
    let result = match LibraryItem::parse(input) {
        Ok(r) => r,
        Err(err) => panic!("Failed to parse library item: {:?}", err)
    };

    let expected = LibraryItem {
        ad_units: vec![],
        lib_type: 0,
        data: "".to_string(),
        reserved1: "".to_string(),
        reserved2: "".to_string(),
        reserved3: "".to_string(),
        test_devices: vec![],
        use_yn: "N".to_string()
    };

    assert_eq!(result, expected);
}

#[test]
fn parse_library() {
    let input = r#"@firebaseDB
{"adUnits":[],"data":"","libType":0,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"N"}
@compat
{"adUnits":[],"data":"","libType":1,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"Y"}
@admob
{"adUnits":[],"data":"","libType":2,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"N"}
@googleMap
{"adUnits":[],"data":"","libType":3,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"N"}"#;

    let result = match Library::parse(input) {
        Ok(r) => r,
        Err(err) => panic!("Failed to parse library: {:?}", err),
    };

    let expected = Library {
        firebase_db: LibraryItem {
            ad_units: vec![], lib_type: 0,
            data: "".to_string(), reserved1: "".to_string(), reserved2: "".to_string(), reserved3: "".to_string(),
            test_devices: vec![], use_yn: "N".to_string()
        },
        compat: LibraryItem {
            ad_units: vec![], lib_type: 1,
            data: "".to_string(), reserved1: "".to_string(), reserved2: "".to_string(), reserved3: "".to_string(),
            test_devices: vec![], use_yn: "Y".to_string()
        },
        admob: LibraryItem {
            ad_units: vec![], lib_type: 2,
            data: "".to_string(), reserved1: "".to_string(), reserved2: "".to_string(), reserved3: "".to_string(),
            test_devices: vec![], use_yn: "N".to_string()
        },
        google_map: LibraryItem {
            ad_units: vec![], lib_type: 3,
            data: "".to_string(), reserved1: "".to_string(), reserved2: "".to_string(), reserved3: "".to_string(),
            test_devices: vec![], use_yn: "N".to_string()
        }
    };

    assert_eq!(result, expected);
}

#[test]
fn reconstruct_library_item() {
    let input = LibraryItem {
        ad_units: vec![],
        lib_type: 0,
        data: "".to_string(),
        reserved1: "".to_string(),
        reserved2: "".to_string(),
        reserved3: "".to_string(),
        test_devices: vec![],
        use_yn: "N".to_string()
    };

    let result = match input.reconstruct() {
        Ok(r) => r,
        Err(err) => panic!("Failed to reconstruct library item: {:?}", err)
    };

    let expected = r#"{"adUnits":[],"data":"","libType":0,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"N"}"#;

    assert_eq!(result, expected);
}

#[test]
fn reconstruct_library() {
    let input = Library {
        firebase_db: LibraryItem {
            ad_units: vec![], lib_type: 0,
            data: "".to_string(), reserved1: "".to_string(), reserved2: "".to_string(), reserved3: "".to_string(),
            test_devices: vec![], use_yn: "N".to_string()
        },
        compat: LibraryItem {
            ad_units: vec![], lib_type: 1,
            data: "".to_string(), reserved1: "".to_string(), reserved2: "".to_string(), reserved3: "".to_string(),
            test_devices: vec![], use_yn: "Y".to_string()
        },
        admob: LibraryItem {
            ad_units: vec![], lib_type: 2,
            data: "".to_string(), reserved1: "".to_string(), reserved2: "".to_string(), reserved3: "".to_string(),
            test_devices: vec![], use_yn: "N".to_string()
        },
        google_map: LibraryItem {
            ad_units: vec![], lib_type: 3,
            data: "".to_string(), reserved1: "".to_string(), reserved2: "".to_string(), reserved3: "".to_string(),
            test_devices: vec![], use_yn: "N".to_string()
        }
    };

    let result = match input.reconstruct() {
        Ok(r) => r,
        Err(err) => panic!("Failed to reconstruct library: {:?}", err)
    };

    let expected = r#"@firebaseDB
{"adUnits":[],"data":"","libType":0,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"N"}
@compat
{"adUnits":[],"data":"","libType":1,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"Y"}
@admob
{"adUnits":[],"data":"","libType":2,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"N"}
@googleMap
{"adUnits":[],"data":"","libType":3,"reserved1":"","reserved2":"","reserved3":"","testDevices":[],"useYn":"N"}"#;

    assert_eq!(result, expected);
}