package im.actor.runtime.webrtc.sdp;
import org.junit.Test;
import im.actor.runtime.webrtc.sdp.entities.SDPMedia;
import im.actor.runtime.webrtc.sdp.entities.SDPMediaMode;
import static org.junit.Assert.assertEquals;
public class SDPTest {
private String sdp = "v=0\n" +
"o=- 3369226760567452353 2 IN IP4 127.0.0.1\n" +
"s=-\n" +
"t=0 0\n" +
"a=group:BUNDLE audio\n" +
"a=msid-semantic: WMS 4l5CG6RIEL30oDxuCDaOXlJSQJDjjEFcPqSZ\n" +
"m=audio 9 UDP/TLS/RTP/SAVPF 111 103 9 0 8 106 105 13 126\n" +
"c=IN IP4 0.0.0.0\n" +
"a=rtcp:9 IN IP4 0.0.0.0\n" +
"a=ice-ufrag:Cf21p3V3DLMewJzW\n" +
"a=ice-pwd:GZVX4lWnwLpUF9bgdFP8Rjjm\n" +
"a=fingerprint:sha-256 63:DF:AC:5B:AC:01:B2:16:33:92:61:4A:83:CE:A1:27:DC:43:12:DF:9D:D2:2B:86:84:58:AB:C9:01:DA:C3:2A\n" +
"a=setup:active\n" +
"a=mid:audio\n" +
"a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\n" +
"a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\n" +
"a=sendrecv\n" +
"a=rtcp-mux\n" +
"a=rtpmap:111 opus/48000/2\n" +
"a=fmtp:111 minptime=10; useinbandfec=1\n" +
"a=rtpmap:103 ISAC/16000\n" +
"a=rtpmap:9 G722/8000\n" +
"a=rtpmap:0 PCMU/8000\n" +
"a=rtpmap:8 PCMA/8000\n" +
"a=rtpmap:106 CN/32000\n" +
"a=rtpmap:105 CN/16000\n" +
"a=rtpmap:13 CN/8000\n" +
"a=rtpmap:126 telephone-event/8000\n" +
"a=maxptime:60\n" +
"a=ssrc:419421375 cname:us7FwY4nl+TCdXVa\n" +
"a=ssrc:419421375 msid:4l5CG6RIEL30oDxuCDaOXlJSQJDjjEFcPqSZ 3b9e5bd4-81bf-4080-b914-2c55696e8ba0\n" +
"a=ssrc:419421375 mslabel:4l5CG6RIEL30oDxuCDaOXlJSQJDjjEFcPqSZ\n" +
"a=ssrc:419421375 label:3b9e5bd4-81bf-4080-b914-2c55696e8ba0\n";
private String sdp2 = "v=0\n" +
"o=- 0 2 IN IP4 127.0.0.1\n" +
"s=-\n" +
"t=0 0\n" +
"a=msid-semantic:WMS\n" +
"a=group:BUNDLE audio video data\n" +
"m=audio 1 RTP/SAVPF 111 103 0 8 106 105 13 126\n" +
"a=sendrecv\n" +
"a=mid:audio\n" +
"a=rtcp-mux\n" +
"a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:7S0K6v625mPQw8wPxQHgKFvzaEi1gAGOQ6ieXifj\n" +
"a=rtpmap:111 opus/48000/2\n" +
"a=rtpmap:103 ISAC/16000/1\n" +
"a=rtpmap:0 PCMU/8000/1\n" +
"a=rtpmap:8 PCMA/8000/1\n" +
"a=rtpmap:106 CN/32000/1\n" +
"a=rtpmap:105 CN/16000/1\n" +
"a=rtpmap:13 CN/8000/1\n" +
"a=rtpmap:126 telephone-event/8000/1\n" +
"a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\n" +
"a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\n" +
"a=ssrc:627951608 cname:localCname\n" +
"a=ssrc:627951608 msid:4c0246cb-db9a-4aff-a4d8-f2bb2298eecb f1f2b0c5-5c71-4c6e-8650-319f570e4c49\n" +
"a=ice-ufrag:quqrS4gpAWmlQ3MZ\n" +
"a=ice-pwd:ls7ebOSxNP5ei9ZdIjfslVDs\n" +
"m=video 1 RTP/SAVPF 100 96\n" +
"a=sendrecv\n" +
"a=mid:video\n" +
"a=rtcp-mux\n" +
"a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:7S0K6v625mPQw8wPxQHgKFvzaEi1gAGOQ6ieXifj\n" +
"a=rtpmap:100 VP8/90000\n" +
"a=rtcp-fb:100 ccm fir\n" +
"a=rtcp-fb:100 nack\n" +
"a=rtcp-fb:100 goog-remb\n" +
"a=rtpmap:96 rtx/90000\n" +
"a=fmtp:96 apt=100\n" +
"a=rtcp-fb:96 ccm fir\n" +
"a=rtcp-fb:96 nack\n" +
"a=rtcp-fb:96 goog-remb\n" +
"a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n" +
"a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\n" +
"a=ssrc-group:SIM 1498522288 1414599019 130364185\n" +
"a=ssrc-group:FID 1498522288 1124771813\n" +
"a=ssrc-group:FID 1414599019 947126490\n" +
"a=ssrc-group:FID 130364185 1521365890\n" +
"a=ssrc:1498522288 cname:localCname\n" +
"a=ssrc:1498522288 msid:68aedb58-b7c6-4887-95c6-f048d9de8442 a1504603-878f-4eca-8b3d-0a2b6e9f5dc0\n" +
"a=ssrc:1414599019 cname:localCname\n" +
"a=ssrc:1414599019 msid:68aedb58-b7c6-4887-95c6-f048d9de8442 a1504603-878f-4eca-8b3d-0a2b6e9f5dc0\n" +
"a=ssrc:130364185 cname:localCname\n" +
"a=ssrc:130364185 msid:68aedb58-b7c6-4887-95c6-f048d9de8442 a1504603-878f-4eca-8b3d-0a2b6e9f5dc0\n" +
"a=ssrc:1124771813 cname:localCname\n" +
"a=ssrc:1124771813 msid:68aedb58-b7c6-4887-95c6-f048d9de8442 a1504603-878f-4eca-8b3d-0a2b6e9f5dc0\n" +
"a=ssrc:947126490 cname:localCname\n" +
"a=ssrc:947126490 msid:68aedb58-b7c6-4887-95c6-f048d9de8442 a1504603-878f-4eca-8b3d-0a2b6e9f5dc0\n" +
"a=ssrc:1521365890 cname:localCname\n" +
"a=ssrc:1521365890 msid:68aedb58-b7c6-4887-95c6-f048d9de8442 a1504603-878f-4eca-8b3d-0a2b6e9f5dc0\n" +
"a=ice-ufrag:quqrS4gpAWmlQ3MZ\n" +
"a=ice-pwd:ls7ebOSxNP5ei9ZdIjfslVDs\n" +
"m=application 1 RTP/SAVPF 101\n" +
"a=sendrecv\n" +
"a=mid:data\n" +
"a=rtcp-mux\n" +
"a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:7S0K6v625mPQw8wPxQHgKFvzaEi1gAGOQ6ieXifj\n" +
"a=rtpmap:101 google-data/90000\n" +
"a=ssrc:978055802 cname:localCname\n" +
"a=ssrc:978055802 msid:sendDataChannel sendDataChannel\n" +
"a=ice-ufrag:quqrS4gpAWmlQ3MZ\n" +
"a=ice-pwd:ls7ebOSxNP5ei9ZdIjfslVDs\n";
@Test
public void testSDPParser() {
SDPScheme sdpScheme = SDP.parse(sdp);
// Check serializer
// String serialized = sdpScheme.toSDP().replace("\r", "");
// assertEquals(sdp, serialized);
assertEquals(1, sdpScheme.getMediaLevel().size());
SDPMedia media = sdpScheme.getMediaLevel().get(0);
assertEquals("audio", media.getType());
assertEquals(SDPMediaMode.SEND_RECEIVE, media.getMode());
// Protocols
assertEquals("UDP/TLS/RTP/SAVPF", media.getProtocol());
// Codecs
assertEquals(9, media.getCodecs().size());
assertEquals(111, media.getCodecs().get(0).getIndex());
assertEquals(103, media.getCodecs().get(1).getIndex());
assertEquals(9, media.getCodecs().get(2).getIndex());
assertEquals(0, media.getCodecs().get(3).getIndex());
assertEquals(8, media.getCodecs().get(4).getIndex());
assertEquals(106, media.getCodecs().get(5).getIndex());
assertEquals(105, media.getCodecs().get(6).getIndex());
assertEquals(13, media.getCodecs().get(7).getIndex());
assertEquals(126, media.getCodecs().get(8).getIndex());
}
@Test
public void testSDP2() {
SDPScheme sdpScheme = SDP.parse(sdp2);
String serialized = sdpScheme.toSDP().replace("\r", "");
// assertEquals(sdp2, serialized);
}
}