Added several new types

This commit is contained in:
Philip (a-0) 2023-07-12 00:21:51 +02:00
parent 0280f02bc0
commit 58c8f8d356
45 changed files with 1496 additions and 1 deletions

View file

@ -0,0 +1,49 @@
default_derive!{
pub struct GalaxyClusterSource {
name: String
}
}
impl TryFrom<&str> for GalaxyClusterSource {
type Error = &'static str;
fn try_from(value: &str) -> Result<Self, Self::Error> {
if value.len() > 0 && value.len() <= 255 {
Ok(GalaxyClusterSource { name: value.to_string() })
}
else {
Err("Failed to parse GalaxyClusterSource")
}
}
}
impl Into<String> for GalaxyClusterSource {
fn into(self) -> String {
self.name
}
}
#[test]
fn empty() {
let id: Result<GalaxyClusterSource, _> = "".try_into();
assert!(id.is_err())
}
#[test]
fn oversized() {
let id: Result<GalaxyClusterSource, _> = format!("{:>256}", "Test").as_str().try_into();
assert!(id.is_err())
}
#[test]
fn valid1() {
let id: Result<GalaxyClusterSource, _> = "version".try_into();
assert_eq!(id, Ok(GalaxyClusterSource { name: "version".to_string() }))
}
#[test]
fn valid2() {
let id: Result<GalaxyClusterSource, _> = "1234".try_into();
assert_eq!(id, Ok(GalaxyClusterSource { name: "1234".to_string() }))
}