okey-cli 0.1.2

An advanced, easy-to-use key remapper for Linux
Documentation
use jsonschema::draft7 as jsonschema;

const SCHEMA: &str = include_str!("../../schema/okey.json");

const TD_TEST: &str = include_str!("./config/tap_dances.yaml");
const COMBO_TEST: &str = include_str!("./config/combos.yaml");
const LAYER_TEST: &str = include_str!("./config/layers.yaml");
const MACRO_TEST: &str = include_str!("./config/macros.yaml");
const MAPPING_TEST: &str = include_str!("./config/mappings.yaml");
const SHIFT_TEST: &str = include_str!("./config/shift.yaml");

const TD_EX: &str = include_str!("../../examples/tap_dance_hrm.yaml");
const COMBO_EX: &str = include_str!("../../examples/combo_hrm.yaml");
const MACRO_EX: &str = include_str!("../../examples/macro_types.yaml");
const MAPPING_EX: &str = include_str!("../../examples/key_mapping.yaml");
const SETTING_EX: &str = include_str!("../../examples/default_settings.yaml");

fn yaml_to_json(source: &str) -> serde_json::Value {
    serde_yaml::from_str(source).unwrap()
}

#[test]
fn test_config_validation() {
    let schema = serde_json::from_str(SCHEMA).unwrap();

    assert!(jsonschema::is_valid(&schema, &yaml_to_json(TD_TEST)));
    assert!(jsonschema::is_valid(&schema, &yaml_to_json(COMBO_TEST)));
    assert!(jsonschema::is_valid(&schema, &yaml_to_json(LAYER_TEST)));
    assert!(jsonschema::is_valid(&schema, &yaml_to_json(MACRO_TEST)));
    assert!(jsonschema::is_valid(&schema, &yaml_to_json(MAPPING_TEST)));
    assert!(jsonschema::is_valid(&schema, &yaml_to_json(SHIFT_TEST)));

    assert!(jsonschema::is_valid(&schema, &yaml_to_json(TD_EX)));
    assert!(jsonschema::is_valid(&schema, &yaml_to_json(COMBO_EX)));
    assert!(jsonschema::is_valid(&schema, &yaml_to_json(SETTING_EX)));
    assert!(jsonschema::is_valid(&schema, &yaml_to_json(MACRO_EX)));
    assert!(jsonschema::is_valid(&schema, &yaml_to_json(MAPPING_EX)));
}