1pub use facet_core::ScalarType;
7
8#[cfg(test)]
9mod tests {
10 use super::*;
11
12 use core::net::{IpAddr, Ipv4Addr, Ipv6Addr};
13
14 use facet_core::{ConstTypeId, Facet};
15
16 #[test]
18 fn test_ensure_try_from_shape() {
19 assert_eq!(
20 ScalarType::Unit,
21 ScalarType::try_from_shape(<()>::SHAPE).unwrap()
22 );
23 assert_eq!(
24 ScalarType::Bool,
25 ScalarType::try_from_shape(bool::SHAPE).unwrap()
26 );
27 assert_eq!(
28 ScalarType::Str,
29 ScalarType::try_from_shape(<&str>::SHAPE).unwrap()
30 );
31 #[cfg(feature = "std")]
32 assert_eq!(
33 ScalarType::String,
34 ScalarType::try_from_shape(String::SHAPE).unwrap()
35 );
36 #[cfg(feature = "std")]
37 assert_eq!(
38 ScalarType::CowStr,
39 ScalarType::try_from_shape(alloc::borrow::Cow::<str>::SHAPE).unwrap()
40 );
41 assert_eq!(
42 ScalarType::F32,
43 ScalarType::try_from_shape(f32::SHAPE).unwrap()
44 );
45 assert_eq!(
46 ScalarType::F64,
47 ScalarType::try_from_shape(f64::SHAPE).unwrap()
48 );
49 assert_eq!(
50 ScalarType::U8,
51 ScalarType::try_from_shape(u8::SHAPE).unwrap()
52 );
53 assert_eq!(
54 ScalarType::U16,
55 ScalarType::try_from_shape(u16::SHAPE).unwrap()
56 );
57 assert_eq!(
58 ScalarType::U32,
59 ScalarType::try_from_shape(u32::SHAPE).unwrap()
60 );
61 assert_eq!(
62 ScalarType::U64,
63 ScalarType::try_from_shape(u64::SHAPE).unwrap()
64 );
65 assert_eq!(
66 ScalarType::U128,
67 ScalarType::try_from_shape(u128::SHAPE).unwrap()
68 );
69 assert_eq!(
70 ScalarType::USize,
71 ScalarType::try_from_shape(usize::SHAPE).unwrap()
72 );
73 assert_eq!(
74 ScalarType::I8,
75 ScalarType::try_from_shape(i8::SHAPE).unwrap()
76 );
77 assert_eq!(
78 ScalarType::I16,
79 ScalarType::try_from_shape(i16::SHAPE).unwrap()
80 );
81 assert_eq!(
82 ScalarType::I32,
83 ScalarType::try_from_shape(i32::SHAPE).unwrap()
84 );
85 assert_eq!(
86 ScalarType::I64,
87 ScalarType::try_from_shape(i64::SHAPE).unwrap()
88 );
89 assert_eq!(
90 ScalarType::I128,
91 ScalarType::try_from_shape(i128::SHAPE).unwrap()
92 );
93 assert_eq!(
94 ScalarType::ISize,
95 ScalarType::try_from_shape(isize::SHAPE).unwrap()
96 );
97 assert_eq!(
98 ScalarType::SocketAddr,
99 ScalarType::try_from_shape(core::net::SocketAddr::SHAPE).unwrap()
100 );
101 assert_eq!(
102 ScalarType::IpAddr,
103 ScalarType::try_from_shape(IpAddr::SHAPE).unwrap()
104 );
105 assert_eq!(
106 ScalarType::Ipv4Addr,
107 ScalarType::try_from_shape(Ipv4Addr::SHAPE).unwrap()
108 );
109 assert_eq!(
110 ScalarType::Ipv6Addr,
111 ScalarType::try_from_shape(Ipv6Addr::SHAPE).unwrap()
112 );
113 assert_eq!(
114 ScalarType::ConstTypeId,
115 ScalarType::try_from_shape(ConstTypeId::SHAPE).unwrap()
116 );
117 }
118
119 #[test]
121 fn test_shape_scalar_type_method() {
122 assert_eq!(bool::SHAPE.scalar_type(), Some(ScalarType::Bool));
123 assert_eq!(u32::SHAPE.scalar_type(), Some(ScalarType::U32));
124 assert_eq!(f64::SHAPE.scalar_type(), Some(ScalarType::F64));
125 assert_eq!(<()>::SHAPE.scalar_type(), Some(ScalarType::Unit));
126
127 #[cfg(feature = "std")]
128 assert_eq!(String::SHAPE.scalar_type(), Some(ScalarType::String));
129
130 assert_eq!(alloc::vec::Vec::<u8>::SHAPE.scalar_type(), None);
132 }
133}