etherparse/err/ip/
ip_dscp_unknown_value_error.rs1use core::{cmp::Eq, cmp::PartialEq, fmt::Debug, hash::Hash};
2
3#[derive(Clone, Debug, Eq, PartialEq, Hash)]
5pub struct IpDscpUnknownValueError {
6 pub value: u8,
8}
9
10impl core::fmt::Display for IpDscpUnknownValueError {
11 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12 write!(f, "Error DSCP value '{}' is not known.", self.value)
13 }
14}
15
16impl core::error::Error for IpDscpUnknownValueError {
17 fn source(&self) -> Option<&(dyn core::error::Error + 'static)> {
18 None
19 }
20}
21
22#[cfg(test)]
23mod test {
24 use super::*;
25 use std::{collections::hash_map::DefaultHasher, error::Error, format, hash::Hasher};
26
27 #[test]
28 fn fmt() {
29 assert_eq!(
30 format!("{}", IpDscpUnknownValueError { value: 3 }),
31 "Error DSCP value '3' is not known."
32 );
33 }
34
35 #[test]
36 fn dbg() {
37 assert_eq!(
38 format!("{:?}", IpDscpUnknownValueError { value: 3 }),
39 format!("IpDscpUnknownValueError {{ value: {} }}", 3)
40 );
41 }
42
43 #[test]
44 fn clone_eq_hash() {
45 let err = IpDscpUnknownValueError { value: 3 };
46 assert_eq!(err, err.clone());
47 let hash_a = {
48 let mut hasher = DefaultHasher::new();
49 err.hash(&mut hasher);
50 hasher.finish()
51 };
52 let hash_b = {
53 let mut hasher = DefaultHasher::new();
54 err.clone().hash(&mut hasher);
55 hasher.finish()
56 };
57 assert_eq!(hash_a, hash_b);
58 }
59
60 #[cfg(feature = "std")]
61 #[test]
62 fn source() {
63 assert!(IpDscpUnknownValueError { value: 3 }.source().is_none());
64 }
65}