Spracherkennung für: .rs vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
#![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));
}