1 /* 2 * Copyright 2020 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 package org.webrtc; 12 13 import static org.junit.Assert.assertEquals; 14 import static org.junit.Assert.assertNotNull; 15 import static org.junit.Assert.assertNull; 16 import static org.junit.Assert.assertTrue; 17 import static org.mockito.Mockito.mock; 18 19 import android.support.test.InstrumentationRegistry; 20 import androidx.test.filters.SmallTest; 21 import java.util.Arrays; 22 import org.junit.Before; 23 import org.junit.Test; 24 import org.webrtc.RtpParameters.DegradationPreference; 25 26 /** Unit-tests for {@link RtpSender}. */ 27 public class RtpSenderTest { 28 private PeerConnectionFactory factory; 29 private PeerConnection pc; 30 31 @Before setUp()32 public void setUp() { 33 PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions 34 .builder(InstrumentationRegistry.getTargetContext()) 35 .setNativeLibraryName(TestConstants.NATIVE_LIBRARY) 36 .createInitializationOptions()); 37 38 factory = PeerConnectionFactory.builder().createPeerConnectionFactory(); 39 40 PeerConnection.RTCConfiguration config = new PeerConnection.RTCConfiguration(Arrays.asList()); 41 // RtpTranceiver is part of new unified plan semantics. 42 config.sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN; 43 pc = factory.createPeerConnection(config, mock(PeerConnection.Observer.class)); 44 } 45 46 /** Test checking the enum values for DegradationPreference stay consistent */ 47 @Test 48 @SmallTest testSetDegradationPreference()49 public void testSetDegradationPreference() throws Exception { 50 RtpTransceiver transceiver = pc.addTransceiver(MediaStreamTrack.MediaType.MEDIA_TYPE_VIDEO); 51 RtpSender sender = transceiver.getSender(); 52 53 RtpParameters parameters = sender.getParameters(); 54 assertNotNull(parameters); 55 assertNull(parameters.degradationPreference); 56 57 parameters.degradationPreference = DegradationPreference.MAINTAIN_FRAMERATE; 58 assertTrue(sender.setParameters(parameters)); 59 parameters = sender.getParameters(); 60 assertEquals(DegradationPreference.MAINTAIN_FRAMERATE, parameters.degradationPreference); 61 62 parameters.degradationPreference = DegradationPreference.MAINTAIN_RESOLUTION; 63 assertTrue(sender.setParameters(parameters)); 64 parameters = sender.getParameters(); 65 assertEquals(DegradationPreference.MAINTAIN_RESOLUTION, parameters.degradationPreference); 66 67 parameters.degradationPreference = DegradationPreference.BALANCED; 68 assertTrue(sender.setParameters(parameters)); 69 parameters = sender.getParameters(); 70 assertEquals(DegradationPreference.BALANCED, parameters.degradationPreference); 71 72 parameters.degradationPreference = DegradationPreference.DISABLED; 73 assertTrue(sender.setParameters(parameters)); 74 parameters = sender.getParameters(); 75 assertEquals(DegradationPreference.DISABLED, parameters.degradationPreference); 76 } 77 } 78