Tilføjet en semver comparer
ci/woodpecker/push/woodpecker Pipeline was successful Details

This commit is contained in:
Martin Slot 2022-12-05 16:14:57 +01:00
parent 89a57d196b
commit 3e595f69a0
2 changed files with 40 additions and 13 deletions

View File

@ -12,3 +12,4 @@ config = { version = "0.13.1", features = ["toml"] }
serde = { version = "1.0", features = ["derive"]}
clap = { version = "3.2.21", features = ["derive", "cargo"] }
reqwest = { version = "0.11.12", features = ["blocking", "json"] }
semver = { version = "1.0" }

View File

@ -88,24 +88,23 @@ JOIN VCSTYPES V ON O.vcs_type = V.vcs_type";
}
mod versioning {
trait VersionComparer {
fn compare(v1: &str, v2: &str) -> Comp;
use semver::Version;
use std::cmp::Ordering;
pub trait VersionComparer {
fn compare(&self, v1: &str, v2: &str) -> Ordering;
}
pub struct GithubDefaultVersionComparer;
pub struct SemverVersionComparer;
impl VersionComparer for GithubDefaultVersionComparer {
fn compare(v1: &str, v2: &str) -> Comp {
todo!()
impl VersionComparer for SemverVersionComparer {
fn compare(&self, v1: &str, v2: &str) -> Ordering {
let v1 = Version::parse(v1).unwrap();
let v2 = Version::parse(v2).unwrap();
v1.cmp(&v2)
}
}
// todo: rename this
pub enum Comp {
Left,
Right,
Equal,
}
}
pub mod models {
@ -125,3 +124,30 @@ pub mod models {
pub api_root_url: String,
}
}
#[cfg(test)]
mod tests {
use crate::request::versioning::{SemverVersionComparer, VersionComparer};
use std::cmp::Ordering;
#[test]
fn rest_equal_semver() {
let comparer = SemverVersionComparer;
let ordering = comparer.compare("1.2.3", "1.2.3");
assert_eq!(ordering, Ordering::Equal);
}
#[test]
fn rest_greater_semver() {
let comparer = SemverVersionComparer;
let ordering = comparer.compare("1.2.4", "1.2.3");
assert_eq!(ordering, Ordering::Greater);
}
#[test]
fn rest_less_semver() {
let comparer = SemverVersionComparer;
let ordering = comparer.compare("1.2.3", "1.2.4");
assert_eq!(ordering, Ordering::Less);
}
}