Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  test_version.rs   Sprache: unbekannt

 
#![allow(
    clippy::nonminimal_bool,
    clippy::too_many_lines,
    clippy::wildcard_imports
)]

mod util;

use crate::util::*;
use semver::{BuildMetadata, Prerelease, Version};

#[test]
fn test_parse() {
    let err = version_err("");
    assert_to_string(
        err,
        "unexpected end of input while parsing major version number",
    );

    let err = version_err("  ");
    assert_to_string(
        err,
        "unexpected character ' ' while parsing major version number",
    );

    let err = version_err("1");
    assert_to_string(
        err,
        "unexpected end of input while parsing major version number",
    );

    let err = version_err("1.2");
    assert_to_string(
        err,
        "unexpected end of input while parsing minor version number",
    );

    let err = version_err("1.2.3-");
    assert_to_string(err, "empty identifier segment in pre-release identifier");

    let err = version_err("a.b.c");
    assert_to_string(
        err,
        "unexpected character 'a' while parsing major version number",
    );

    let err = version_err("1.2.3 abc");
    assert_to_string(err, "unexpected character ' ' after patch version number");

    let err = version_err("1.2.3-01");
    assert_to_string(err, "invalid leading zero in pre-release identifier");

    let parsed = version("1.2.3");
    let expected = Version::new(1, 2, 3);
    assert_eq!(parsed, expected);
    let expected = Version {
        major: 1,
        minor: 2,
        patch: 3,
        pre: Prerelease::EMPTY,
        build: BuildMetadata::EMPTY,
    };
    assert_eq!(parsed, expected);

    let parsed = version("1.2.3-alpha1");
    let expected = Version {
        major: 1,
        minor: 2,
        patch: 3,
        pre: prerelease("alpha1"),
        build: BuildMetadata::EMPTY,
    };
    assert_eq!(parsed, expected);

    let parsed = version("1.2.3+build5");
    let expected = Version {
        major: 1,
        minor: 2,
        patch: 3,
        pre: Prerelease::EMPTY,
        build: build_metadata("build5"),
    };
    assert_eq!(parsed, expected);

    let parsed = version("1.2.3+5build");
    let expected = Version {
        major: 1,
        minor: 2,
        patch: 3,
        pre: Prerelease::EMPTY,
        build: build_metadata("5build"),
    };
    assert_eq!(parsed, expected);

    let parsed = version("1.2.3-alpha1+build5");
    let expected = Version {
        major: 1,
        minor: 2,
        patch: 3,
        pre: prerelease("alpha1"),
        build: build_metadata("build5"),
    };
    assert_eq!(parsed, expected);

    let parsed = version("1.2.3-1.alpha1.9+build5.7.3aedf");
    let expected = Version {
        major: 1,
        minor: 2,
        patch: 3,
        pre: prerelease("1.alpha1.9"),
        build: build_metadata("build5.7.3aedf"),
    };
    assert_eq!(parsed, expected);

    let parsed = version("1.2.3-0a.alpha1.9+05build.7.3aedf");
    let expected = Version {
        major: 1,
        minor: 2,
        patch: 3,
        pre: prerelease("0a.alpha1.9"),
        build: build_metadata("05build.7.3aedf"),
    };
    assert_eq!(parsed, expected);

    let parsed = version("0.4.0-beta.1+0851523");
    let expected = Version {
        major: 0,
        minor: 4,
        patch: 0,
        pre: prerelease("beta.1"),
        build: build_metadata("0851523"),
    };
    assert_eq!(parsed, expected);

    // for https://nodejs.org/dist/index.json, where some older npm versions are "1.1.0-beta-10"
    let parsed = version("1.1.0-beta-10");
    let expected = Version {
        major: 1,
        minor: 1,
        patch: 0,
        pre: prerelease("beta-10"),
        build: BuildMetadata::EMPTY,
    };
    assert_eq!(parsed, expected);
}

#[test]
fn test_eq() {
    assert_eq!(version("1.2.3"), version("1.2.3"));
    assert_eq!(version("1.2.3-alpha1"), version("1.2.3-alpha1"));
    assert_eq!(version("1.2.3+build.42"), version("1.2.3+build.42"));
    assert_eq!(version("1.2.3-alpha1+42"), version("1.2.3-alpha1+42"));
}

#[test]
fn test_ne() {
    assert_ne!(version("0.0.0"), version("0.0.1"));
    assert_ne!(version("0.0.0"), version("0.1.0"));
    assert_ne!(version("0.0.0"), version("1.0.0"));
    assert_ne!(version("1.2.3-alpha"), version("1.2.3-beta"));
    assert_ne!(version("1.2.3+23"), version("1.2.3+42"));
}

#[test]
fn test_display() {
    assert_to_string(version("1.2.3"), "1.2.3");
    assert_to_string(version("1.2.3-alpha1"), "1.2.3-alpha1");
    assert_to_string(version("1.2.3+build.42"), "1.2.3+build.42");
    assert_to_string(version("1.2.3-alpha1+42"), "1.2.3-alpha1+42");
}

#[test]
fn test_lt() {
    assert!(version("0.0.0") < version("1.2.3-alpha2"));
    assert!(version("1.0.0") < version("1.2.3-alpha2"));
    assert!(version("1.2.0") < version("1.2.3-alpha2"));
    assert!(version("1.2.3-alpha1") < version("1.2.3"));
    assert!(version("1.2.3-alpha1") < version("1.2.3-alpha2"));
    assert!(!(version("1.2.3-alpha2") < version("1.2.3-alpha2")));
    assert!(version("1.2.3+23") < version("1.2.3+42"));
}

#[test]
fn test_le() {
    assert!(version("0.0.0") <= version("1.2.3-alpha2"));
    assert!(version("1.0.0") <= version("1.2.3-alpha2"));
    assert!(version("1.2.0") <= version("1.2.3-alpha2"));
    assert!(version("1.2.3-alpha1") <= version("1.2.3-alpha2"));
    assert!(version("1.2.3-alpha2") <= version("1.2.3-alpha2"));
    assert!(version("1.2.3+23") <= version("1.2.3+42"));
}

#[test]
fn test_gt() {
    assert!(version("1.2.3-alpha2") > version("0.0.0"));
    assert!(version("1.2.3-alpha2") > version("1.0.0"));
    assert!(version("1.2.3-alpha2") > version("1.2.0"));
    assert!(version("1.2.3-alpha2") > version("1.2.3-alpha1"));
    assert!(version("1.2.3") > version("1.2.3-alpha2"));
    assert!(!(version("1.2.3-alpha2") > version("1.2.3-alpha2")));
    assert!(!(version("1.2.3+23") > version("1.2.3+42")));
}

#[test]
fn test_ge() {
    assert!(version("1.2.3-alpha2") >= version("0.0.0"));
    assert!(version("1.2.3-alpha2") >= version("1.0.0"));
    assert!(version("1.2.3-alpha2") >= version("1.2.0"));
    assert!(version("1.2.3-alpha2") >= version("1.2.3-alpha1"));
    assert!(version("1.2.3-alpha2") >= version("1.2.3-alpha2"));
    assert!(!(version("1.2.3+23") >= version("1.2.3+42")));
}

#[test]
fn test_spec_order() {
    let vs = [
        "1.0.0-alpha",
        "1.0.0-alpha.1",
        "1.0.0-alpha.beta",
        "1.0.0-beta",
        "1.0.0-beta.2",
        "1.0.0-beta.11",
        "1.0.0-rc.1",
        "1.0.0",
    ];
    let mut i = 1;
    while i < vs.len() {
        let a = version(vs[i - 1]);
        let b = version(vs[i]);
        assert!(a < b, "nope {:?} < {:?}", a, b);
        i += 1;
    }
}

#[test]
fn test_align() {
    let version = version("1.2.3-rc1");
    assert_eq!("1.2.3-rc1           ", format!("{:20}", version));
    assert_eq!("*****1.2.3-rc1******", format!("{:*^20}", version));
    assert_eq!("           1.2.3-rc1", format!("{:>20}", version));
}

[ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge