use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Remote(String);
impl Remote {
pub fn as_prefix(&self) -> String {
if self.0.ends_with('/') {
self.0.clone()
} else {
format!("{}/", self.0)
}
}
pub fn new<S: Into<String>>(remote: S) -> Self {
Remote(remote.into())
}
}
impl fmt::Display for Remote {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0.fmt(f)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_as_prefix_no_slash() {
let remote = Remote::new("origin");
assert_eq!(remote.as_prefix(), "origin/");
}
#[test]
fn test_as_prefix_with_slash() {
let remote = Remote::new("origin/");
assert_eq!(remote.as_prefix(), "origin/");
}
#[test]
fn test_display() {
let remote = Remote::new("origin");
assert_eq!(remote.to_string(), "origin");
}
}