vertigo 0.1.1

Reactive Real-DOM library for Rust
Documentation
use crate::css::next_id::NextId;

use super::{css_split_rows, css_split_rows_pair, transform_css, transform_css_animation_value};

#[test]
fn test_css_split_rows1() {
    let css = "cursor: pointer;";

    assert_eq!(
        css_split_rows(css),
        vec!("cursor: pointer")
    );

    let rows_pairs = css_split_rows_pair(css);

    assert_eq!(
        rows_pairs,
        vec!(("cursor", "pointer".into()),)
    );
}

#[test]
fn test_css_split_rows2() {
    let css = "border: 1px solid black; padding: 10px; background-color: #e0e0e0; margin-bottom: 10px ; ";

    assert_eq!(
        css_split_rows(css),
        vec!(
            "border: 1px solid black",
            "padding: 10px",
            "background-color: #e0e0e0",
            "margin-bottom: 10px"
        )
    );

    let rows_pairs = css_split_rows_pair(css);
    assert_eq!(
        rows_pairs,
        vec!(
            ("border", "1px solid black".into()),
            ("padding", "10px".into()),
            ("background-color", "#e0e0e0".into()),
            ("margin-bottom", "10px".into())
        )
    )
}

#[test]
fn test_css_split_rows3() {
    let css = "border: 1px solid black; padding: 10px; background-color: #e0e0e0; margin-bottom: 10px   ";

    let rows = css_split_rows(css);
    assert_eq!(
        &rows,
        &vec!(
            "border: 1px solid black",
            "padding: 10px",
            "background-color: #e0e0e0",
            "margin-bottom: 10px"
        )
    );

    let rows_pairs = css_split_rows_pair(css);
    assert_eq!(
        rows_pairs,
        vec!(
            ("border", "1px solid black".into()),
            ("padding", "10px".into()),
            ("background-color", "#e0e0e0".into()),
            ("margin-bottom", "10px".into())
        )
    )
}

#[test]
fn test_basic1() {
    let css = "cursor: pointer;";

    let next_id = NextId::new();

    let (id, selectors) = transform_css(css, &next_id);

    assert_eq!(selectors, vec!((".autocss_1".into(), "cursor: pointer".into())));

    assert_eq!(id, 1);
    assert_eq!(next_id.current(), 1);
}

#[test]
fn test_basic2() {
    let css = "border: 1px solid black; padding: 10px; background-color: #e0e0e0;margin-bottom: 10px;";

    let next_id = NextId::new();

    let (id, selectors) = transform_css(css, &next_id);

    assert_eq!(
        selectors,
        vec!((
            ".autocss_1".into(),
            "border: 1px solid black; padding: 10px; background-color: #e0e0e0; margin-bottom: 10px".into()
        ))
    );

    assert_eq!(id, 1);
    assert_eq!(next_id.current(), 1);
}

#[test]
fn test_basic3() {
    let css = "
        border:1px solid black;
        margin: 5px 0;
    ";

    let next_id = NextId::new();

    let (id, selectors) = transform_css(css, &next_id);

    assert_eq!(
        selectors,
        vec!((".autocss_1".into(), "border: 1px solid black; margin: 5px 0".into()))
    );

    assert_eq!(id, 1);
    assert_eq!(next_id.current(), 1);
}

#[test]
fn test_transform_css_animation_value() {
    let next_id = NextId::new();

    let css_value = "1.0s infinite ease-in-out {
        0% {
            transform: scale(0);
        }
        100% {
            transform: scale(1.0);
            opacity: 0;
        }
    }";

    let (css_parsed, css_document) = transform_css_animation_value(css_value, &next_id);

    assert_eq!(next_id.current(), 1);
    assert_eq!(css_parsed, "1.0s infinite ease-in-out autocss_1 ");

    assert_eq!(css_document, Some(("@keyframes autocss_1".into(), "0% {
            transform: scale(0);
        }
        100% {
            transform: scale(1.0);
            opacity: 0;
        }".into())));
}

#[test]
fn test_animation() {
    let css = "
    width: 40px;
    animation: 1.0s infinite ease-in-out {
        0% {
            -webkit-transform: scale(0);
            transform: scale(0);
        }
        100% {
            -webkit-transform: scale(1.0);
            transform: scale(1.0);
            opacity: 0;
        }
    };
    ";

    let next_id = NextId::new();

    let (id, selectors) = transform_css(css, &next_id);

    assert_eq!(id, 1);
    assert_eq!(next_id.current(), 2);

    assert_eq!(
        selectors,
        vec!(
            ("@keyframes autocss_2".into(), "0% {\n            -webkit-transform: scale(0);\n            transform: scale(0);\n        }\n        100% {\n            -webkit-transform: scale(1.0);\n            transform: scale(1.0);\n            opacity: 0;\n        }".into()),
            (".autocss_1".into(), "width: 40px; animation: 1.0s infinite ease-in-out autocss_2 ".into())
        )
    );
}

#[test]
fn test_hover() {
    let css = "
    width: 40px;
    :hover {
        color: red;
    };
    ";

    let next_id = NextId::new();

    let (id, selectors) = transform_css(css, &next_id);

    assert_eq!(id, 1);
    assert_eq!(next_id.current(), 1);

    assert_eq!(
        selectors,
        vec!(
            (".autocss_1:hover".into(), "color: red;".into()),
            (".autocss_1".into(), "width: 40px".into())
        )
    );
}

#[test]
fn test_of_type() {
    let css = "
    width: 40px;
    :nth-of-type(2) {
        color: red;
    };
    ";

    let next_id = NextId::new();

    let (id, selectors) = transform_css(css, &next_id);

    assert_eq!(id, 1);
    assert_eq!(next_id.current(), 1);

    assert_eq!(
        selectors,
        vec!(
            (".autocss_1:nth-of-type(2)".into(), "color: red;".into()),
            (".autocss_1".into(), "width: 40px".into())
        )
    );
}

#[test]
fn test_doubled() {
    let css = "
    width: 40px;

    :focus {
        color: red;
    };

    :focus::first-letter {
        color: crimson;
    };
    ";

    let next_id = NextId::new();

    let (id, selectors) = transform_css(css, &next_id);

    assert_eq!(id, 1);
    assert_eq!(next_id.current(), 1);

    assert_eq!(
        selectors,
        vec!(
            (".autocss_1:focus".into(), "color: red;".into()),
            (".autocss_1:focus::first-letter".into(), "color: crimson;".into()),
            (".autocss_1".into(), "width: 40px".into())
        )
    );
}