use crate::*;
use std::borrow::Cow;
use std::path::{Path, PathBuf};
#[test]
fn test_option() {
let path: Option<PathBuf> = Some(PathBuf::from("/test"));
let a: Option<&Path> = path.as_ref().map(|p| p.as_path());
let b: Option<&Path> = path.ref_map(|p| p.as_path());
assert_eq!(a, b);
}
#[test]
fn test_ok() {
let path: Result<PathBuf, ()> = Ok(PathBuf::from("/test"));
let a: Result<&Path, &()> = path.as_ref().map(|p| p.as_path());
let b: Result<&Path, &()> = path.ref_map(|p| p.as_path());
assert_eq!(a, b);
}
#[test]
fn test_err() {
let string: Result<(), String> = Err(String::from("apple banana "));
let a: Result<&(), &str> = string.as_ref().map_err(|s| s.trim());
let b: Result<&(), &str> = string.ref_map_err(|s| s.trim());
assert_eq!(a, b);
}
#[test]
fn test_str() {
{
let string: Option<String> = Some(String::from("foo"));
let a: Option<&str> = string.as_ref().map(|s| s.as_str());
let b: Option<&str> = string.as_str();
assert_eq!(a, b);
}
{
let string: Option<&str> = Some("foo");
let a: Option<&str> = string;
let b: Option<&str> = string.as_str();
assert_eq!(a, b);
}
}
#[test]
fn test_cow() {
{
let string: Option<Cow<str>> = Some(Cow::Owned(String::from("bar")));
let a: Option<&str> = string.as_ref().map(|s| s.as_ref());
let b: Option<&str> = string.as_str();
assert_eq!(a, b);
}
{
let string: Option<Cow<str>> = Some(Cow::Borrowed("baz"));
let a: Option<&str> = string.as_ref().map(|s| s.as_ref());
let b: Option<&str> = string.as_str();
assert_eq!(a, b);
}
}