1pub mod v1 {
2 use fun_pkg_api::traits::Pkg;
3 use fun_pkg_api::Version;
4
5 pub struct FunPkg {
6 name: String,
7 version: Version,
8 }
9
10 impl FunPkg {
11 pub fn new(name: String, version: Version) -> Self {
12 FunPkg { name, version }
13 }
14 }
15
16 impl Pkg for FunPkg {
17 fn pkg_name(&self) -> String {
18 self.name.clone()
19 }
20
21 fn pkg_version(&self) -> Version {
22 self.version.clone()
23 }
24 }
25}
26
27#[cfg(test)]
28mod tests {
29 use super::v1::FunPkg;
30 use fun_pkg_api::traits::Pkg;
31 use fun_pkg_api::Version;
32
33 #[test]
34 fn test_pkg_name() {
35 let pkg = FunPkg::new("fun-pkg".to_string(), Version::default());
36 assert_eq!(pkg.pkg_name(), "fun-pkg");
37 }
38
39 #[test]
40 fn test_pkg_version() {
41 let pkg = FunPkg::new("fun-pkg".to_string(), Version::new(1, 0, 0));
42 assert_eq!(pkg.pkg_version().to_string(), "1.0.0");
43 }
44}