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