alpkit 0.1.0-pre.2

A library for reading metadata from the APKv2 package format and APKBUILD.
Documentation
use super::*;
use crate::internal::test_utils::{assert, assert_let, S};

////////////////////////////////////////////////////////////////////////////////

#[test]
#[rustfmt::skip]
fn op_from_str_and_display() {
    for (s, op) in vec![
        ("=" , Op::Equal                          ),
        ("~" , Op::Equal | Op::Fuzzy              ),
        (">" , Op::Greater                        ),
        (">=", Op::Greater | Op::Equal            ),
        ("~>", Op::Greater | Op::Equal | Op::Fuzzy),
        ("<" , Op::Less                           ),
        ("<=", Op::Less | Op::Equal               ),
        ("~<", Op::Less | Op::Equal | Op::Fuzzy   ),
        ("><", Op::Checksum                       ),
        ("*" , Op::Any                            ),
    ] {
        assert!(op.to_string() == s);
        assert!(Op::from_str(s).unwrap() == op);
    }
}

#[test]
fn op_from_str_invalid() {
    for input in ["", "?", "<=>"] {
        assert_let!(Err(ConstraintParseError(_)) = Op::from_str(input));
    }
}

////////////////////////////////////////////////////////////////////////////////

#[test]
#[rustfmt::skip]
fn constraint_from_str_and_display() {
    for (s       , constraint) in vec![
        ("=1.2.3", Constraint::new(Op::Equal, "1.2.3")            ),
        (">=1.2" , Constraint::new(Op::Greater | Op::Equal, "1.2")),
    ] {
        assert!(Constraint::from_str(s).unwrap() == constraint);
        assert!(constraint.to_string() == s);
    }

    assert!(Constraint::from_str("= 1.2.3").unwrap() == Constraint::new(Op::Equal, "1.2.3"));
}

#[test]
fn constraint_from_str_invalid() {
    for input in ["1.2.3", "foo", "=", "= ", " 1"] {
        assert_let!(Err(ConstraintParseError(_)) = Constraint::from_str(input));
    }
}

////////////////////////////////////////////////////////////////////////////////

#[test]
#[rustfmt::skip]
fn dependency_key_value() {
    for (kv        , constraint) in vec![
        (("foo-doc", S!("*")), Dependency::new("foo-doc", None)                                               ),
        (("foo-doc", S!("= 1.2.3")), Dependency::new("foo-doc", Some(Constraint::new(Op::Equal, "1.2.3")))    ),
        (("foo"    , S!("<= 1.2")), Dependency::new("foo", Some(Constraint::new(Op::Less | Op::Equal, "1.2")))),
        (("foo"    , S!("~ 1.2")), Dependency::new("foo", Some(Constraint::new(Op::Fuzzy | Op::Equal, "1.2")))),
    ] {
        assert!(constraint.to_key_value() == kv);
        assert!(Dependency::from_key_value(kv.0, kv.1).unwrap() == constraint);
    }
}