#![cfg_attr(not(feature = "std"), no_std)] use nullable_result::NullableResult; mod result_and_back { use super::*; #[test] fn ok() { let res: Result, u32> = Ok(Some(1)); let nr: NullableResult = NullableResult::from(res); assert!(matches!(nr, NullableResult::Ok(_))); let res = Result::from(nr); assert_eq!(res.unwrap().unwrap(), 1); } #[test] fn none() { let res = Ok(None); let nr: NullableResult<(), ()> = NullableResult::from(res); assert!(matches!(nr, NullableResult::Null)); let res = Result::from(nr); assert!(res.unwrap().is_none()); } #[test] fn err() { let res: Result, _> = Err(1); let nr: NullableResult<(), _> = NullableResult::from(res); assert!(matches!(nr, NullableResult::Err(_))); let res = Result::from(nr); assert_eq!(res.unwrap_err(), 1); } } mod option_and_back { use super::*; #[test] fn ok() { let opt = Some(Ok(1)); let nr: NullableResult = NullableResult::from(opt); assert!(matches!(nr, NullableResult::Ok(_))); let opt: Option> = Option::from(nr); assert_eq!(opt.unwrap().unwrap(), 1); } #[test] fn none() { let opt = None; let nr: NullableResult<(), ()> = NullableResult::from(Ok(opt)); assert!(matches!(nr, NullableResult::Null)); let opt: Option> = Option::from(nr); assert!(opt.is_none()); } #[test] fn err() { let opt = Some(Err(1)); let nr: NullableResult<(), _> = NullableResult::from(opt); assert!(matches!(nr, NullableResult::Err(_))); let opt: Option> = Option::from(nr); assert_eq!(opt.unwrap().unwrap_err(), 1); } }