domain/rdata/
dname.rs
1use crate::base::cmp::CanonicalOrd;
2use crate::base::name::{ParsedDname, ToDname};
3use crate::base::wire::ParseError;
4use core::cmp::Ordering;
5use core::str::FromStr;
6use core::{fmt, hash};
7use octseq::octets::{Octets, OctetsFrom};
8use octseq::parse::Parser;
9
10dname_type_canonical! {
13 (Dname, Dname, dname, into_dname)
20}
21
22#[cfg(test)]
25#[cfg(all(feature = "std", feature = "bytes"))]
26mod test {
27 use super::*;
28 use crate::base::name::Dname as Name;
29 use crate::base::rdata::test::{
30 test_compose_parse, test_rdlen, test_scan,
31 };
32 use core::str::FromStr;
33 use std::vec::Vec;
34
35 #[test]
36 fn create_dname() {
37 let name = Name::<Vec<u8>>::from_str("bar.example.com").unwrap();
38 let rdata = Dname::new(name.clone());
39 assert_eq!(rdata.dname(), &name);
40 }
41 #[test]
44 #[allow(clippy::redundant_closure)] fn dname_compose_parse_scan() {
46 let rdata =
47 Dname::<Name<Vec<u8>>>::from_str("www.example.com").unwrap();
48 test_rdlen(&rdata);
49 test_compose_parse(&rdata, |parser| Dname::parse(parser));
50 test_scan(&["www.example.com"], Dname::scan, &rdata);
51 }
52}