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