xref: /webrtc/sdp/src/extmap/extmap_test.rs (revision 5d8fe953)
1 use super::*;
2 use crate::lexer::END_LINE;
3 use crate::util::ATTRIBUTE_KEY;
4 
5 use std::io::BufReader;
6 use std::iter::Iterator;
7 
8 const EXAMPLE_ATTR_EXTMAP1: &str = "extmap:1 http://example.com/082005/ext.htm#ttime";
9 const EXAMPLE_ATTR_EXTMAP2: &str =
10     "extmap:2/sendrecv http://example.com/082005/ext.htm#xmeta short";
11 const FAILING_ATTR_EXTMAP1: &str =
12     "extmap:257/sendrecv http://example.com/082005/ext.htm#xmeta short";
13 const FAILING_ATTR_EXTMAP2: &str = "extmap:2/blorg http://example.com/082005/ext.htm#xmeta short";
14 
15 #[test]
test_extmap() -> Result<()>16 fn test_extmap() -> Result<()> {
17     let example_attr_extmap1_line = EXAMPLE_ATTR_EXTMAP1;
18     let example_attr_extmap2_line = EXAMPLE_ATTR_EXTMAP2;
19     let failing_attr_extmap1_line = format!("{ATTRIBUTE_KEY}{FAILING_ATTR_EXTMAP1}{END_LINE}");
20     let failing_attr_extmap2_line = format!("{ATTRIBUTE_KEY}{FAILING_ATTR_EXTMAP2}{END_LINE}");
21     let passingtests = vec![
22         (EXAMPLE_ATTR_EXTMAP1, example_attr_extmap1_line),
23         (EXAMPLE_ATTR_EXTMAP2, example_attr_extmap2_line),
24     ];
25     let failingtests = vec![
26         (FAILING_ATTR_EXTMAP1, failing_attr_extmap1_line),
27         (FAILING_ATTR_EXTMAP2, failing_attr_extmap2_line),
28     ];
29 
30     for (i, u) in passingtests.iter().enumerate() {
31         let mut reader = BufReader::new(u.1.as_bytes());
32         let actual = ExtMap::unmarshal(&mut reader)?;
33         assert_eq!(
34             actual.marshal(),
35             u.1,
36             "{}: {} vs {}",
37             i,
38             u.1,
39             actual.marshal()
40         );
41     }
42 
43     for u in failingtests {
44         let mut reader = BufReader::new(u.1.as_bytes());
45         let actual = ExtMap::unmarshal(&mut reader);
46         assert!(actual.is_err());
47     }
48 
49     Ok(())
50 }
51 
52 #[test]
test_transport_cc_extmap() -> Result<()>53 fn test_transport_cc_extmap() -> Result<()> {
54     // a=extmap:<value>["/"<direction>] <URI> <extensionattributes>
55     // a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
56     let uri = Some(Url::parse(
57         "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01",
58     )?);
59     let e = ExtMap {
60         value: 3,
61         uri,
62         direction: Direction::Unspecified,
63         ext_attr: None,
64     };
65 
66     let s = e.marshal();
67     if s == "3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" {
68         panic!("TestTransportCC failed");
69     } else {
70         assert_eq!(
71             s,
72             "extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"
73         )
74     }
75 
76     Ok(())
77 }
78