compare_version 2.0.5

A Rust library for comparing semantic versioning strings and checking version compatibility.
Documentation
use crate::*;

#[test]
fn test_compare_version() {
    let version1: &str = "1.2.3-alpha";
    let version2: &str = "1.2.3-alpha";
    let result: Result<VersionLevel, VersionError> =
        CompareVersion::compare_version(version1, version2);
    assert_eq!(result.unwrap(), VersionLevel::Equal);
    let version1: &str = "1.2.3";
    let version2: &str = "1.2.3-alpha";
    let result: Result<VersionLevel, VersionError> =
        CompareVersion::compare_version(version1, version2);
    assert_eq!(result.unwrap(), VersionLevel::Less);
    let version1: &str = "1.2.2";
    let version2: &str = "1.2.3-alpha";
    let result: Result<VersionLevel, VersionError> =
        CompareVersion::compare_version(version1, version2);
    assert_eq!(result.unwrap(), VersionLevel::Less);
    let version1: &str = "1.2.4";
    let version2: &str = "1.2.3-alpha";
    let result: Result<VersionLevel, VersionError> =
        CompareVersion::compare_version(version1, version2);
    assert_eq!(result.unwrap(), VersionLevel::Greater);
    let version1: &str = "1.2.4";
    let version2: &str = "1.2.3";
    let result: Result<VersionLevel, VersionError> =
        CompareVersion::compare_version(version1, version2);
    assert_eq!(result.unwrap(), VersionLevel::Greater);
    let version1: &str = "1.2.4";
    let version2: &str = "1.2.5";
    let result: Result<VersionLevel, VersionError> =
        CompareVersion::compare_version(version1, version2);
    assert_eq!(result.unwrap(), VersionLevel::Less);
    let version1: &str = "1.2.4";
    let version2: &str = "1.2.4";
    let result: Result<VersionLevel, VersionError> =
        CompareVersion::compare_version(version1, version2);
    assert_eq!(result.unwrap(), VersionLevel::Equal);
}

#[test]
fn test_matches_version_range() {
    let version: &str = "1.2.3-alpha";
    let range1: &str = "^1.2.0";
    let range2: &str = "~1.2.3";
    let result: bool = CompareVersion::matches_version_range(version, range1).unwrap_or_default();
    assert!(result);
    let result: bool = CompareVersion::matches_version_range(version, range2).unwrap_or_default();
    assert!(result);
    let version: &str = "1.2.5-alpha";
    let range1: &str = "^1.2.0";
    let range2: &str = "~1.2.3";
    let result: bool = CompareVersion::matches_version_range(version, range1).unwrap_or_default();
    assert!(result);
    let result: bool = CompareVersion::matches_version_range(version, range2).unwrap_or_default();
    assert!(result);
    let version: &str = "1.3.0";
    let range1: &str = "^1.2.0";
    let range2: &str = "~1.2.3";
    let result: bool = CompareVersion::matches_version_range(version, range1).unwrap_or_default();
    assert!(result);
    let result: bool = CompareVersion::matches_version_range(version, range2).unwrap_or_default();
    assert!(!result);
    let version: &str = "2.0.0";
    let range1: &str = "^1.2.0";
    let range2: &str = "~1.2.3";
    let result: bool = CompareVersion::matches_version_range(version, range1).unwrap_or_default();
    assert!(!result);
    let result: bool = CompareVersion::matches_version_range(version, range2).unwrap_or_default();
    assert!(!result);
    let version: &str = "1.0.0";
    let range1: &str = "^1.2.0";
    let range2: &str = "~1.2.3";
    let result: bool = CompareVersion::matches_version_range(version, range1).unwrap_or_default();
    assert!(!result);
    let result: bool = CompareVersion::matches_version_range(version, range2).unwrap_or_default();
    assert!(!result);
}