// Copyright © 2024 Mikhail Hogrefe // // This file is part of Malachite. // // Malachite is free software: you can redistribute it and/or modify it under the terms of the GNU // Lesser General Public License (LGPL) as published by the Free Software Foundation; either version // 3 of the License, or (at your option) any later version. See . use crate::extra_variadic::Union3; use malachite_base::unions::UnionFromStrError; use std::result::Result; use std::str::FromStr; #[test] fn test_from_str() { let test = |s, out| { assert_eq!(Union3::from_str(s), out); }; test("A(a)", Ok(Union3::A('a'))); test("B(5)", Ok(Union3::B(5))); test("C(false)", Ok(Union3::C(false))); test("", Err(UnionFromStrError::Generic(String::new()))); test("xyz", Err(UnionFromStrError::Generic("xyz".to_string()))); test("D(a)", Err(UnionFromStrError::Generic("D(a)".to_string()))); test("A(a", Err(UnionFromStrError::Generic("A(a".to_string()))); let result: Result, _> = Union3::from_str("A(ab)"); if let Err(UnionFromStrError::Specific(Union3::A(_e))) = result { } else { panic!("wrong error variant") } let result: Result, _> = Union3::from_str("B(-1)"); if let Err(UnionFromStrError::Specific(Union3::B(_e))) = result { } else { panic!("wrong error variant") } let result: Result, _> = Union3::from_str("C(tralse)"); if let Err(UnionFromStrError::Specific(Union3::C(_e))) = result { } else { panic!("wrong error variant") } }