[MediaController][TCSACR-273] Add new APIs for subtitle, 360 mode, display mode/rotation 07/215107/9
authorHaesu Gwon <haesu.gwon@samsung.com>
Tue, 1 Oct 2019 12:22:38 +0000 (21:22 +0900)
committerHaesu Gwon <haesu.gwon@samsung.com>
Mon, 7 Oct 2019 09:56:26 +0000 (18:56 +0900)
Change-Id: I296e678b1dbcc452728b62619034ce86348bb4ca

44 files changed:
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSCustomCommand.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSCustomCommandReceivedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeCapabilityUpdatedEventArgs.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeCommand.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeCommandReceivedEventArgs.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeUpdatedEventArgs.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationCapabilityUpdatedEventArgs.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationCommand.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationCommandReceivedEventArgs.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationUpdatedEventArgs.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMediaControlMetadata.cs
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMediaControlPlaylist.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMediaControlSearchCondition.cs
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMediaControlServer.cs
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMediaControlServerNotRunning.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMediaControlServerStoppedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMediaController.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMediaControllerManager_NoServerStarted.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMode360Command.cs [new file with mode: 0755]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMode360CommandReceivedEventArgs.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMode360UpdatedEventArgs.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSPlaybackActionCommandReceivedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSPlaybackCapabilityUpdatedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSPlaybackCommandReceivedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSPlaybackPositionCommand.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSPlaybackPositionCommandReceivedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSPlaybackStateUpdatedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSPlaylistCommand.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSPlaylistCommandReceivedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSPlaylistUpdatedEventArgs.cs
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSRepeatModeCapabilityUpdatedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSRepeatModeCommand.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSRepeatModeCommandReceivedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSRepeatModeUpdatedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSearchCommand.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSearchCommandReceivedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSeriesInformation.cs
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSShuffleModeCapabilityUpdatedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSShuffleModeCommand.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSShuffleModeCommandReceivedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSShuffleModeUpdatedEventArgs.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSubtitleModeCommand.cs [new file with mode: 0755]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSubtitleModeCommandReceivedEventArgs.cs [new file with mode: 0644]
tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSubtitleModeUpdatedEventArgs.cs [new file with mode: 0644]

old mode 100755 (executable)
new mode 100644 (file)
index 28073a6..d6dd6d3
@@ -101,7 +101,7 @@ namespace Tizen.Multimedia.Remoting.Tests
         public void Action_READ_ONLY()
         {
             Assert.That(_command.Action, Is.TypeOf<string>());
-            Assert.That(() => _command.Action, Is.EqualTo(_action));
+            Assert.That(() => _command.Action, Is.EqualTo(_action), "Should be same value");
         }
 
         [Test]
@@ -118,7 +118,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             var command = new CustomCommand("test", bundle);
             Assert.That(command.Bundle, Is.TypeOf<Bundle>());
-            Assert.That(() => command.Bundle.GetItem("test_key"), Is.EqualTo("test_value"));
+            Assert.That(() => command.Bundle.GetItem("test_key"), Is.EqualTo("test_value"), "Should be same value");
         }
     }
 }
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index c811610..5aab0d6
@@ -42,8 +42,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         {
             var args = new CustomCommandReceivedEventArgs(new CustomCommand("test"));
 
-            Assert.IsInstanceOf<CustomCommand>(args.Command);
-            Assert.That(() => args.Command.Action, Is.EqualTo("test"));
+            Assert.IsInstanceOf<CustomCommand>(args.Command, "Should return CustomCommand instance");
+            Assert.That(() => args.Command.Action, Is.EqualTo("test"), "Should be same value");
         }
     }
 }
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeCapabilityUpdatedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeCapabilityUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..6031b01
--- /dev/null
@@ -0,0 +1,73 @@
+using NUnit.Framework;
+using System.Linq;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.DisplayModeCapabilityUpdatedEventArgs class")]
+    public class DisplayModeCapabilityUpdatedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the list of display mode capabilities are transfered to controller using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayModeCapabilityUpdatedEventArgs.DisplayMode A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task DisplayMode_CHECK_READ_ONLY()
+        {
+            using (var eventWaiter = EventAwaiter<DisplayModeCapabilityUpdatedEventArgs>.Create())
+            {
+                _controller.DisplayModeCapabilityUpdated += eventWaiter;
+
+                var setModes = new List<MediaControlDisplayMode>()
+                {
+                    MediaControlDisplayMode.LetterBox, MediaControlDisplayMode.CroppedFull
+                };
+
+                foreach ( var mode in setModes)
+                {
+                    MediaControlServer.SetDisplayModeCapability(mode, MediaControlCapabilitySupport.Supported);
+                }
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.That(args.DisplayMode.Count, Is.EqualTo(setModes.Count), "Should be same value");
+
+                foreach (var mode in args.DisplayMode)
+                {
+                    Assert.That(setModes.Contains(mode), "Should be same value");
+                }
+
+                _controller.DisplayModeCapabilityUpdated -= eventWaiter;
+            }
+        }
+    }
+}
+
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeCommand.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeCommand.cs
new file mode 100644 (file)
index 0000000..9a04ea5
--- /dev/null
@@ -0,0 +1,57 @@
+using NUnit.Framework;
+using System;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.DisplayModeCommand class")]
+    public class DisplayModeCommandTests
+    {
+        [Test]
+        [Category("P1")]
+        [Description("Create the DisplayModeCommand Instance and check whether instance is created properly.")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayModeCommand.DisplayModeCommand C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void DisplayModeCommand_CHECK_CREATE_CONSTRUCTOR()
+        {
+            foreach (MediaControlDisplayMode mode in Enum.GetValues(typeof(MediaControlDisplayMode)))
+            {
+                var command = new DisplayModeCommand(mode);
+                Assert.IsNotNull(command, "Object should not be null after initializing");
+                Assert.IsInstanceOf<DisplayModeCommand>(command, "Should return DisplayModeCommand instance");
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether DisplayModeCommand throws exception if parameter is invalid")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayModeCommand.DisplayModeCommand C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void DisplayModeCommand_THROWS_IF_PARAM_IS_INVALID()
+        {
+            Assert.Throws<ArgumentException>(() => new DisplayModeCommand(MediaControlDisplayMode.LetterBox - 1));
+            Assert.Throws<ArgumentException>(() => new DisplayModeCommand(MediaControlDisplayMode.CroppedFull + 1));
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether Mode property is type of MediaControlDisplayMode or not.")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayModeCommand.Mode A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void Mode_READ_ONLY()
+        {
+            foreach (MediaControlDisplayMode mode in Enum.GetValues(typeof(MediaControlDisplayMode)))
+            {
+                var command = new DisplayModeCommand(mode);
+                Assert.IsInstanceOf<MediaControlDisplayMode>(command.Mode, "Should return DisplayModeCommand instance");
+                Assert.That(command.Mode, Is.EqualTo(mode), "Should be same value.");
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeCommandReceivedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeCommandReceivedEventArgs.cs
new file mode 100644 (file)
index 0000000..def6e0b
--- /dev/null
@@ -0,0 +1,68 @@
+using NUnit.Framework;
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.DisplayModeCommandReceivedEventArgs class")]
+    public class DisplayModeCommandReceivedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the display mode command is transfered to server using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayModeCommandReceivedEventArgs.Command A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task Command_CHECK_READ_ONLY()
+        {
+            foreach(MediaControlDisplayMode mode in Enum.GetValues(typeof(MediaControlDisplayMode)))
+            {
+                MediaControlServer.SetDisplayModeCapability(mode, MediaControlCapabilitySupport.Supported);
+
+                using (var eventWaiter = EventAwaiter<DisplayModeCommandReceivedEventArgs>.Create())
+                {
+                    MediaControlServer.DisplayModeCommandReceived += eventWaiter;
+
+                    Task.Run(() => _controller.RequestAsync(new DisplayModeCommand(mode)));
+
+                    var result = await eventWaiter.GetResultAsync();
+
+                    Assert.IsNotNull(result.Command, "Object should not be null after initializing");
+                    Assert.IsInstanceOf<DisplayModeCommand>(result.Command, "Should return DisplayModeCommand instance");
+                    Assert.That(result.Command.Mode, Is.EqualTo(mode), "Should be same value");
+
+                    MediaControlServer.DisplayModeCommandReceived -= eventWaiter;
+                }
+            }
+        }
+    }
+}
+
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeUpdatedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayModeUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..7cfb405
--- /dev/null
@@ -0,0 +1,65 @@
+using NUnit.Framework;
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Collections.Generic;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.DisplayModeUpdatedEventArgs class")]
+    public class DisplayModeUpdatedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the display mode is transfered to controller using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayModeUpdatedEventArgs.DisplayMode A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task DisplayMode_CHECK_READ_ONLY()
+        {
+            foreach (MediaControlDisplayMode mode in Enum.GetValues(typeof(MediaControlDisplayMode)))
+            {
+                MediaControlServer.SetDisplayModeCapability(mode, MediaControlCapabilitySupport.Supported);
+
+                using (var eventWaiter = EventAwaiter<DisplayModeUpdatedEventArgs>.Create())
+                {
+                    _controller.DisplayModeUpdated += eventWaiter;
+
+                    MediaControlServer.SetDisplayMode(mode);
+
+                    var args = await eventWaiter.GetResultAsync();
+                    Assert.IsTrue(args.DisplayMode.Equals(mode), "Should be same value.");
+
+                    _controller.DisplayModeUpdated -= eventWaiter;
+                }
+            }
+        }
+    }
+}
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationCapabilityUpdatedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationCapabilityUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..36c668e
--- /dev/null
@@ -0,0 +1,69 @@
+using NUnit.Framework;
+using System.Linq;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.DisplayRotationCapabilityUpdatedEventArgs class")]
+    public class DisplayRotationCapabilityUpdatedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the list of display rotation capabilities are transfered to controller using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayRotationCapabilityUpdatedEventArgs.DisplayRotation A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task DisplayRotation_CHECK_READ_ONLY()
+        {
+            using (var eventWaiter = EventAwaiter<DisplayRotationCapabilityUpdatedEventArgs>.Create())
+            {
+                _controller.DisplayRotationCapabilityUpdated += eventWaiter;
+
+                var setRotations = new List<Rotation>() { Rotation.Rotate0, Rotation.Rotate180 };
+
+                foreach (var rotation in setRotations)
+                {
+                    MediaControlServer.SetDisplayRotationCapability(rotation, MediaControlCapabilitySupport.Supported);
+                }
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.That(args.DisplayRotation.Count, Is.EqualTo(setRotations.Count), "Should be same value");
+
+                foreach (var rotation in args.DisplayRotation)
+                {
+                    Assert.That(setRotations.Contains(rotation), "Should be same value");
+                }
+
+                _controller.DisplayRotationCapabilityUpdated -= eventWaiter;
+            }
+        }
+    }
+}
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationCommand.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationCommand.cs
new file mode 100644 (file)
index 0000000..83325c3
--- /dev/null
@@ -0,0 +1,61 @@
+using NUnit.Framework;
+using System;
+using System.Linq;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.DisplayRotationCommand class")]
+    public class DisplayRotationCommandTests
+    {
+        [Test]
+        [Category("P1")]
+        [Description("Create DisplayRotationCommand instance")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayRotationCommand.DisplayRotationCommand C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void DisplayRotationCommand_CHECK_CREATE_CONSTRUCTOR()
+        {
+            foreach (Rotation rotation in Enum.GetValues(typeof(Rotation)))
+            {
+                var command = new DisplayRotationCommand(rotation);
+
+                Assert.IsNotNull(command, "Object should not be null after initializing");
+                Assert.IsInstanceOf<DisplayRotationCommand>(command,
+                    "Should return DisplayRotationCommand instance");
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether DisplayRotationCommand throws exception if parameter is invalid")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayRotationCommand.DisplayRotationCommand C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void DisplayRotationCommand_THROWS_IF_PARAM_IS_INVALID()
+        {
+            Assert.Throws<ArgumentException>(() => new DisplayRotationCommand(Rotation.Rotate0 - 1));
+            Assert.Throws<ArgumentException>(() => new DisplayRotationCommand(Rotation.Rotate270 + 1));
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether Rotation property is type of Rotation or not.")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayRotationCommand.Rotation A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void Rotation_READ_ONLY()
+        {
+            foreach (Rotation rotation in Enum.GetValues(typeof(Rotation)))
+            {
+                var command = new DisplayRotationCommand(rotation);
+                Assert.IsInstanceOf<Rotation>(command.Rotation, "Should return DisplayRotationCommand instance");
+                Assert.That(command.Rotation, Is.EqualTo(rotation), "Should be same value.");
+            }
+        }
+    }
+}
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationCommandReceivedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationCommandReceivedEventArgs.cs
new file mode 100644 (file)
index 0000000..ea8161f
--- /dev/null
@@ -0,0 +1,68 @@
+using NUnit.Framework;
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.DisplayRotationCommandReceivedEventArgs class")]
+    public class DisplayRotationCommandReceivedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the display rotation command is transfered to server using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayRotationCommandReceivedEventArgs.Command A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task Command_CHECK_READ_ONLY()
+        {
+            foreach (Rotation rotation in Enum.GetValues(typeof(Rotation)))
+            {
+                Log.Info("Tizen.MediaController.Tests", $"Enter : {rotation}");
+                MediaControlServer.SetDisplayRotationCapability(rotation, MediaControlCapabilitySupport.Supported);
+
+                using (var eventWaiter = EventAwaiter<DisplayRotationCommandReceivedEventArgs>.Create())
+                {
+                    MediaControlServer.DisplayRotationCommandReceived += eventWaiter;
+
+                    Task.Run(() => _controller.RequestAsync(new DisplayRotationCommand(rotation)));
+
+                    var result = await eventWaiter.GetResultAsync();
+
+                    Assert.IsNotNull(result.Command, "Object should not be null after initializing");
+                    Assert.IsInstanceOf<DisplayRotationCommand>(result.Command, "Should return DisplayRotationCommand instance");
+                    Assert.That(result.Command.Rotation, Is.EqualTo(rotation), "Should be same value");
+
+                    MediaControlServer.DisplayRotationCommandReceived -= eventWaiter;
+                }
+            }
+        }
+    }
+}
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationUpdatedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSDisplayRotationUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..a4d7325
--- /dev/null
@@ -0,0 +1,65 @@
+using NUnit.Framework;
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Collections.Generic;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.DisplayRotationUpdatedEventArgs class")]
+    public class DisplayRotationUpdatedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the display rotation is transfered to controller using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.DisplayRotationUpdatedEventArgs.Rotation A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task Rotation_CHECK_READ_ONLY()
+        {
+            foreach (Rotation rotation in Enum.GetValues(typeof(Rotation)))
+            {
+                MediaControlServer.SetDisplayRotationCapability(rotation, MediaControlCapabilitySupport.Supported);
+
+                using (var eventWaiter = EventAwaiter<DisplayRotationUpdatedEventArgs>.Create())
+                {
+                    _controller.DisplayRotationUpdated += eventWaiter;
+
+                    MediaControlServer.SetDisplayRotation(rotation);
+
+                    var args = await eventWaiter.GetResultAsync();
+                    Assert.IsTrue(args.Rotation.Equals(rotation), "Should be same value.");
+
+                    _controller.DisplayRotationUpdated -= eventWaiter;
+                }
+            }
+        }
+    }
+}
index ddba16f..a8dc137 100644 (file)
@@ -32,7 +32,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.Title = value;
 
-            Assert.That(metadata.Title, Is.EqualTo(value));
+            Assert.That(metadata.Title, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -49,7 +49,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.Artist = value;
 
-            Assert.That(metadata.Artist, Is.EqualTo(value));
+            Assert.That(metadata.Artist, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -66,7 +66,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.Album = value;
 
-            Assert.That(metadata.Album, Is.EqualTo(value));
+            Assert.That(metadata.Album, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -83,7 +83,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.Author = value;
 
-            Assert.That(metadata.Author, Is.EqualTo(value));
+            Assert.That(metadata.Author, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -100,7 +100,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.Genre = value;
 
-            Assert.That(metadata.Genre, Is.EqualTo(value));
+            Assert.That(metadata.Genre, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -117,7 +117,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.Duration = value;
 
-            Assert.That(metadata.Duration, Is.EqualTo(value));
+            Assert.That(metadata.Duration, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -134,7 +134,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.Date = value;
 
-            Assert.That(metadata.Date, Is.EqualTo(value));
+            Assert.That(metadata.Date, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -151,7 +151,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.Copyright = value;
 
-            Assert.That(metadata.Copyright, Is.EqualTo(value));
+            Assert.That(metadata.Copyright, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -168,7 +168,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.Description = value;
 
-            Assert.That(metadata.Description, Is.EqualTo(value));
+            Assert.That(metadata.Description, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -185,7 +185,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.TrackNumber = value;
 
-            Assert.That(metadata.TrackNumber, Is.EqualTo(value));
+            Assert.That(metadata.TrackNumber, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -202,7 +202,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             metadata.AlbumArtPath = value;
 
-            Assert.That(metadata.AlbumArtPath, Is.EqualTo(value));
+            Assert.That(metadata.AlbumArtPath, Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -220,8 +220,8 @@ namespace Tizen.Multimedia.Remoting.Tests
             metadata.Season = season;
 
             AssertHelper.PropertyReadWrite<MediaControlMetadata>(nameof(MediaControlMetadata.Season));
-            Assert.That(metadata.Season.Number, Is.EqualTo(season.Number));
-            Assert.That(metadata.Season.Title, Is.EqualTo(season.Title));
+            Assert.That(metadata.Season.Number, Is.EqualTo(season.Number), "Should be same value");
+            Assert.That(metadata.Season.Title, Is.EqualTo(season.Title), "Should be same value");
         }
 
         [Test]
@@ -239,8 +239,8 @@ namespace Tizen.Multimedia.Remoting.Tests
             metadata.Episode = episode;
 
             AssertHelper.PropertyReadWrite<MediaControlMetadata>(nameof(MediaControlMetadata.Episode));
-            Assert.That(metadata.Episode.Number, Is.EqualTo(episode.Number));
-            Assert.That(metadata.Episode.Title, Is.EqualTo(episode.Title));
+            Assert.That(metadata.Episode.Number, Is.EqualTo(episode.Number), "Should be same value");
+            Assert.That(metadata.Episode.Title, Is.EqualTo(episode.Title), "Should be same value");
         }
 
         [Test]
@@ -258,7 +258,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             metadata.Resolution = resolution;
 
             AssertHelper.PropertyReadWrite<MediaControlMetadata>(nameof(MediaControlMetadata.Resolution));
-            Assert.That(metadata.Resolution, Is.EqualTo(resolution));
+            Assert.That(metadata.Resolution, Is.EqualTo(resolution), "Should be same value");
         }
     }
 }
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index dd412e6..13b8386
@@ -84,7 +84,7 @@ namespace Tizen.Multimedia.Remoting.Tests
         {
             using (var playlist = new MediaControlPlaylist("MyFavorite"))
             {
-                Assert.That(playlist.Name, Is.EqualTo("MyFavorite"));
+                Assert.That(playlist.Name, Is.EqualTo("MyFavorite"), "Should be same value");
             }
         }
 
@@ -101,7 +101,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             {
                 playlist.AddMetadata("Song1", new MediaControlMetadata());
 
-                Assert.That(playlist.TotalCount, Is.GreaterThan(0));
+                Assert.That(playlist.TotalCount, Is.GreaterThan(0), "Should be greater than 0");
             }
         }
 
@@ -124,7 +124,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 playlist.AddMetadata(metadatasPair);
 
-                Assert.That(playlist.GetMetadata(), Is.EqualTo(metadatasPair));
+                Assert.That(playlist.GetMetadata(), Is.EqualTo(metadatasPair), "Should be same value");
             }
         }
 
@@ -148,7 +148,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 playlist.AddMetadata("ID1", metadata);
 
-                Assert.That(playlist.GetMetadata("ID1"), Is.EqualTo(metadata));
+                Assert.That(playlist.GetMetadata("ID1"), Is.EqualTo(metadata), "Should be same value");
             }
         }
 
@@ -172,7 +172,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 playlist.AddMetadata(metadatasPair);
 
-                Assert.That(playlist.GetMetadata(), Is.EqualTo(metadatasPair));
+                Assert.That(playlist.GetMetadata(), Is.EqualTo(metadatasPair), "Should be same value");
             }
         }
 
@@ -196,7 +196,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 playlist.AddMetadata("ID1", metadata);
 
-                Assert.That(playlist.GetMetadata("ID1"), Is.EqualTo(metadata));
+                Assert.That(playlist.GetMetadata("ID1"), Is.EqualTo(metadata), "Should be same value");
             }
         }
 
@@ -219,7 +219,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 playlist.AddMetadata("ID1", metadata);
 
-                Assert.That(playlist.GetMetadata("ID1"), Is.EqualTo(metadata));
+                Assert.That(playlist.GetMetadata("ID1"), Is.EqualTo(metadata), "Should be same value");
             }
         }
     }
index 2c01171..2e5056d 100644 (file)
@@ -191,8 +191,9 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void ContentType_READ_ONLY()
         {
-            Assert.IsInstanceOf<MediaControlContentType>(_condition.ContentType);
-            Assert.That(_condition.ContentType, Is.EqualTo(MediaControlContentType.Image));
+            Assert.IsInstanceOf<MediaControlContentType>(_condition.ContentType,
+                "Should return MediaControlContentType instance");
+            Assert.That(_condition.ContentType, Is.EqualTo(MediaControlContentType.Image), "Should be same value");
         }
 
         [Test]
@@ -204,8 +205,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Category_READ_ONLY()
         {
-            Assert.IsInstanceOf<MediaControlSearchCategory>(_condition.Category);
-            Assert.That(_condition.Category, Is.EqualTo(MediaControlSearchCategory.Artist));
+            Assert.IsInstanceOf<MediaControlSearchCategory>(_condition.Category, "Should return MediaControlSearchCategory instance");
+            Assert.That(_condition.Category, Is.EqualTo(MediaControlSearchCategory.Artist), "Should be same value");
         }
 
         [Test]
@@ -217,8 +218,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Keyword_READ_ONLY()
         {
-            Assert.IsInstanceOf<string>(_condition.Keyword);
-            Assert.That(_condition.Keyword, Is.EqualTo("GD"));
+            Assert.IsInstanceOf<string>(_condition.Keyword, "Should return string instance");
+            Assert.That(_condition.Keyword, Is.EqualTo("GD"), "Should be same value");
         }
 
         [Test]
@@ -230,8 +231,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Bundle_READ_ONLY()
         {
-            Assert.IsInstanceOf<Bundle>(_condition.Bundle);
-            Assert.That(_condition.Bundle, Is.EqualTo(_bundle));
+            Assert.IsInstanceOf<Bundle>(_condition.Bundle, "Should return Bundle instance");
+            Assert.That(_condition.Bundle, Is.EqualTo(_bundle), "Should be same value");
         }
     }
 }
index 7e70030..9dab844 100644 (file)
@@ -489,7 +489,7 @@ namespace Tizen.Multimedia.Remoting.Tests
                 var index = "ID1";
                 Assert.That(() => MediaControlServer.SetIndexOfCurrentPlayingMedia(index), Throws.Nothing);
 
-                Assert.That(controller.GetIndexOfCurrentPlayingMedia(), Is.EqualTo(index));
+                Assert.That(controller.GetIndexOfCurrentPlayingMedia(), Is.EqualTo(index), "Should be same value.");
             }
         }
 
@@ -522,7 +522,7 @@ namespace Tizen.Multimedia.Remoting.Tests
                 var ageRating = 12;
                 Assert.That(() => MediaControlServer.SetAgeRating(ageRating), Throws.Nothing);
 
-                Assert.That(controller.GetAgeRatingOfCurrentPlayingMedia(), Is.EqualTo(ageRating));
+                Assert.That(controller.GetAgeRatingOfCurrentPlayingMedia(), Is.EqualTo(ageRating), "Should be same value.");
             }
         }
 
@@ -557,7 +557,7 @@ namespace Tizen.Multimedia.Remoting.Tests
                 var iconPath = "test.jpg";
                 Assert.That(() => MediaControlServer.SetIconPath(iconPath), Throws.Nothing);
 
-                Assert.That(controller.GetIconPath(), Is.EqualTo(iconPath));
+                Assert.That(controller.GetIconPath(), Is.EqualTo(iconPath), "Should be same value.");
             }
         }
 
@@ -595,7 +595,8 @@ namespace Tizen.Multimedia.Remoting.Tests
                 var index = "Song2";
                 MediaControlServer.SetInfoOfCurrentPlayingMedia(playlistName, index);
 
-                Assert.That(controller.GetPlaylistOfCurrentPlayingMedia().Name, Is.EqualTo(playlistName));
+                Assert.That(controller.GetPlaylistOfCurrentPlayingMedia().Name, Is.EqualTo(playlistName),
+                    "Should be same value.");
             }
         }
 
@@ -606,7 +607,7 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("SPEC_URL", "-")]
         [Property("CRITERIA", "MEX")]
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
-        public void SetInfoOfCurrentPlayingMedia_THROW_EXCEPTION()
+        public void SetInfoOfCurrentPlayingMedia_THROWS_EXCEPTION()
         {
             Assert.Throws<ArgumentNullException>(() => MediaControlServer.SetInfoOfCurrentPlayingMedia("MyFavor", null));
 
@@ -615,6 +616,162 @@ namespace Tizen.Multimedia.Remoting.Tests
 
         [Test]
         [Category("P1")]
+        [Description("Sets subtile mode and get and compare with value")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetSubtitleMode M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetSubtitleMode_RETURN_VALUE()
+        {
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                Assert.That(() => MediaControlServer.SetSubtitleMode(true), Throws.Nothing);
+                Assert.That(controller.IsSubtitleModeEnabled(), Is.EqualTo(true), "Should be same value.");
+
+                Assert.That(() => MediaControlServer.SetSubtitleMode(false), Throws.Nothing);
+                Assert.That(controller.IsSubtitleModeEnabled(), Is.EqualTo(false), "Should be same value.");
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetSubtitleMode throws exception if server is not running")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetSubtitleMode M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetSubtitleMode_THROWS_SERVER_IS_NOT_RUNNING()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            Assert.That(() => MediaControlServer.SetSubtitleMode(true), Throws.InvalidOperationException);
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Sets 360 mode and get and compare with value")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetMode360 M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetMode360_RETURN_VALUE()
+        {
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                Assert.That(() => MediaControlServer.SetMode360(true), Throws.Nothing);
+                Assert.That(controller.IsMode360Enabled(), Is.EqualTo(true), "Should be same value.");
+
+                Assert.That(() => MediaControlServer.SetMode360(false), Throws.Nothing);
+                Assert.That(controller.IsMode360Enabled(), Is.EqualTo(false), "Should be same value.");
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetMode360 throws exception if server is not running")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetMode360 M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetMode360_THROWS_SERVER_IS_NOT_RUNNING()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            Assert.That(() => MediaControlServer.SetMode360(true), Throws.InvalidOperationException);
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Sets display mode and get and compare with value")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayMode M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayMode_RETURN_VALUE()
+        {
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                foreach (MediaControlDisplayMode mode in Enum.GetValues(typeof(MediaControlDisplayMode)))
+                {
+                    Assert.That(() => MediaControlServer.SetDisplayMode(mode), Throws.Nothing);
+                    Assert.That(controller.GetDisplayMode(), Is.EqualTo(mode), "Should be same value.");
+                }
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayMode throws exception if server is not running")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayMode M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayMode_THROWS_SERVER_IS_NOT_RUNNING()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            Assert.That(() => MediaControlServer.SetDisplayMode(MediaControlDisplayMode.LetterBox), Throws.InvalidOperationException);
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Sets display rotation and get and compare with value")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayRotation M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayRotation_RETURN_VALUE()
+        {
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                foreach (Rotation rotation in Enum.GetValues(typeof(Rotation)))
+                {
+                    Assert.That(() => MediaControlServer.SetDisplayRotation(rotation), Throws.Nothing);
+                    Assert.That(controller.GetDisplayRotation(), Is.EqualTo(rotation), "Should be same value.");
+                }
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayRotation throws exception if server is not running")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayRotation M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayRotation_THROWS_SERVER_IS_NOT_RUNNING()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            Assert.That(() => MediaControlServer.SetDisplayRotation(Rotation.Rotate180), Throws.InvalidOperationException);
+        }
+
+        [Test]
+        [Category("P1")]
         [Description("Sets playback capability and get it and compare with the value")]
         [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetPlaybackCapability M")]
         [Property("SPEC_URL", "-")]
@@ -631,7 +788,7 @@ namespace Tizen.Multimedia.Remoting.Tests
                     MediaControlCapabilitySupport.NotSupported);
 
                 Assert.That(controller.GetPlaybackCapability(MediaControlPlaybackCommand.FastForward),
-                    Is.EqualTo(MediaControlCapabilitySupport.NotSupported));
+                    Is.EqualTo(MediaControlCapabilitySupport.NotSupported), "Should be same value.");
             }
         }
 
@@ -642,7 +799,7 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("SPEC_URL", "-")]
         [Property("CRITERIA", "MEX")]
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
-        public void SetPlaybackCapability_THROWS_NOTHING()
+        public void SetPlaybackCapability_THROWS_IF_PARAM_IS_INVALID()
         {
             Assert.Throws<ArgumentException>(() => MediaControlServer.SetPlaybackCapability(
                 MediaControlPlaybackCommand.Play - 1, MediaControlCapabilitySupport.NotSupported));
@@ -685,7 +842,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 Assert.That(() => MediaControlServer.SetPlaybackCapabilities(capabilities), Throws.Nothing);
 
-                Assert.That(controller.GetPlaybackCapabilities(), Is.EqualTo(capabilities));
+                Assert.That(controller.GetPlaybackCapabilities(), Is.EqualTo(capabilities), "Should be same value.");
             }
         }
 
@@ -732,7 +889,8 @@ namespace Tizen.Multimedia.Remoting.Tests
                 var contentType = MediaControlContentType.Music;
                 MediaControlServer.SetPlaybackContentType(contentType);
 
-                Assert.That(controller.GetContentTypeOfCurrentPlayingMedia(), Is.EqualTo(contentType));
+                Assert.That(controller.GetContentTypeOfCurrentPlayingMedia(), Is.EqualTo(contentType),
+                    "Should be same value.");
             }
         }
 
@@ -765,10 +923,12 @@ namespace Tizen.Multimedia.Remoting.Tests
                         c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
 
                 MediaControlServer.SetRepeatModeCapability(MediaControlCapabilitySupport.NotSupported);
-                Assert.That(controller.GetRepeatModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.NotSupported));
+                Assert.That(controller.GetRepeatModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.NotSupported),
+                    "Should be same value.");
 
                 MediaControlServer.SetRepeatModeCapability(MediaControlCapabilitySupport.Supported);
-                Assert.That(controller.GetRepeatModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.Supported));
+                Assert.That(controller.GetRepeatModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.Supported),
+                    "Should be same value.");
             }
         }
 
@@ -803,10 +963,12 @@ namespace Tizen.Multimedia.Remoting.Tests
                         c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
 
                 MediaControlServer.SetShuffleModeCapability(MediaControlCapabilitySupport.NotSupported);
-                Assert.That(controller.GetShuffleModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.NotSupported));
+                Assert.That(controller.GetShuffleModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.NotSupported),
+                    "Should be same value.");
 
                 MediaControlServer.SetShuffleModeCapability(MediaControlCapabilitySupport.Supported);
-                Assert.That(controller.GetShuffleModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.Supported));
+                Assert.That(controller.GetShuffleModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.Supported),
+                    "Should be same value.");
             }
         }
 
@@ -817,7 +979,7 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("SPEC_URL", "-")]
         [Property("CRITERIA", "MEX")]
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
-        public void SetShuffleModeCapability_THROW_EXCEPTION()
+        public void SetShuffleModeCapability_THROWS_EXCEPTION()
         {
             Assert.Throws<ArgumentException>(() =>
                 MediaControlServer.SetShuffleModeCapability(MediaControlCapabilitySupport.Supported - 1));
@@ -828,6 +990,310 @@ namespace Tizen.Multimedia.Remoting.Tests
 
         [Test]
         [Category("P1")]
+        [Description("Sets display mode capability")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayModeCapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayModeCapability_RETURN_VALUE()
+        {
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                foreach (MediaControlDisplayMode mode in Enum.GetValues(typeof(MediaControlDisplayMode)))
+                {
+                    MediaControlServer.SetDisplayModeCapability(mode, MediaControlCapabilitySupport.Supported);
+                    Assert.That(controller.GetDisplayModeCapability().Contains(mode), "Should be same value.");
+                }
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayModeCapability throws exception if parameter is invalid")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayModeCapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayModeCapability_THROWS_IF_PARAM_IS_INVALID()
+        {
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayModeCapability(
+                MediaControlDisplayMode.LetterBox, MediaControlCapabilitySupport.Supported - 1));
+
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayModeCapability(
+                MediaControlDisplayMode.LetterBox, MediaControlCapabilitySupport.NotDecided));
+
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayModeCapability(
+                MediaControlDisplayMode.LetterBox - 1, MediaControlCapabilitySupport.Supported));
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayModeCapability throws exception if server is not running")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayModeCapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayModeCapability_THROWS_SERVER_IS_NOT_RUNNING()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            Assert.Throws<InvalidOperationException>(() => MediaControlServer.SetDisplayModeCapability(
+                MediaControlDisplayMode.LetterBox, MediaControlCapabilitySupport.Supported));
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Sets display mode capabilities")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayModeCapabilities M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayModeCapabilities_RETURN_VALUE()
+        {
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                var setModes = new List<MediaControlDisplayMode>()
+                {
+                    MediaControlDisplayMode.LetterBox, MediaControlDisplayMode.CroppedFull
+                };
+
+                var setModesDict = new Dictionary<MediaControlDisplayMode, MediaControlCapabilitySupport>();
+                foreach (var mode in setModes)
+                {
+                    setModesDict.Add(mode, MediaControlCapabilitySupport.Supported);
+                }
+
+                Assert.That(() => MediaControlServer.SetDisplayModeCapabilities(setModesDict), Throws.Nothing);
+
+                var supportedModes = controller.GetDisplayModeCapability();
+                Assert.That(supportedModes.Count(), Is.EqualTo(setModes.Count), "Should be same value.");
+
+                foreach (var mode in supportedModes)
+                {
+                    Assert.That(setModes.Contains(mode), "Should be same value");
+                }
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayModeCapabilities throws exception if parameter is invalid")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayModeCapabilities M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayModeCapabilities_THROWS_IF_PARAM_IS_INVALID()
+        {
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayModeCapabilities(
+                new Dictionary<MediaControlDisplayMode, MediaControlCapabilitySupport>()
+                {
+                    { MediaControlDisplayMode.LetterBox, MediaControlCapabilitySupport.Supported - 1 }
+                })
+            );
+
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayModeCapabilities(
+                new Dictionary<MediaControlDisplayMode, MediaControlCapabilitySupport>()
+                {
+                    { MediaControlDisplayMode.LetterBox, MediaControlCapabilitySupport.NotDecided }
+                })
+            );
+
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayModeCapabilities(
+                new Dictionary<MediaControlDisplayMode, MediaControlCapabilitySupport>()
+                {
+                    { MediaControlDisplayMode.LetterBox - 1, MediaControlCapabilitySupport.Supported }
+                })
+            );
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayModeCapabilities throws exception if server is not running")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayModeCapabilities M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayModeCapabilities_THROWS_SERVER_IS_NOT_RUNNING()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            Assert.Throws<InvalidOperationException>(() => MediaControlServer.SetDisplayModeCapabilities(
+                new Dictionary<MediaControlDisplayMode, MediaControlCapabilitySupport>()
+                {
+                    { MediaControlDisplayMode.LetterBox, MediaControlCapabilitySupport.Supported },
+                    { MediaControlDisplayMode.OriginSize, MediaControlCapabilitySupport.Supported },
+                    { MediaControlDisplayMode.FullScreen, MediaControlCapabilitySupport.Supported },
+                    { MediaControlDisplayMode.CroppedFull, MediaControlCapabilitySupport.Supported },
+                })
+            );
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Sets display rotation capability")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayRotationCapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayRotationCapability_RETURN_VALUE()
+        {
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                foreach (Rotation rotation in Enum.GetValues(typeof(Rotation)))
+                {
+                    MediaControlServer.SetDisplayRotationCapability(rotation, MediaControlCapabilitySupport.Supported);
+                    Assert.That(controller.GetDisplayRotationapability().Contains(rotation), "Should be same value.");
+                }
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayRotationCapability throws exception if parameter is invalid")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayRotationCapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayRotationCapability_THROWS_IF_PARAM_IS_INVALID()
+        {
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayRotationCapability(
+                Rotation.Rotate0, MediaControlCapabilitySupport.Supported - 1));
+
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayRotationCapability(
+                Rotation.Rotate0, MediaControlCapabilitySupport.NotDecided));
+
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayRotationCapability(
+                Rotation.Rotate0 - 1, MediaControlCapabilitySupport.Supported));
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayRotationCapability throws exception if server is not running")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayRotationCapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayRotationCapability_THROWS_SERVER_IS_NOT_RUNNING()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            Assert.Throws<InvalidOperationException>(() => MediaControlServer.SetDisplayRotationCapability(
+                Rotation.Rotate180, MediaControlCapabilitySupport.Supported));
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Sets display rotation capabilities")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayRotationCapabilities M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayRotationCapabilities_RETURN_VALUE()
+        {
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                var setRotations = new List<Rotation>()
+                {
+                    Rotation.Rotate0, Rotation.Rotate180
+                };
+
+                var setRotationsDict = new Dictionary<Rotation, MediaControlCapabilitySupport>();
+                foreach (var rotation in setRotations)
+                {
+                    setRotationsDict.Add(rotation, MediaControlCapabilitySupport.Supported);
+                }
+
+                Assert.That(() => MediaControlServer.SetDisplayRotationCapabilities(setRotationsDict), Throws.Nothing);
+
+                var supportedRotations = controller.GetDisplayRotationapability();
+                Assert.That(supportedRotations.Count(), Is.EqualTo(setRotations.Count), "Should be same value.");
+
+                foreach (var rotation in supportedRotations)
+                {
+                    Assert.That(setRotations.Contains(rotation), "Should be same value");
+                }
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayRotationCapabilities throws exception if parameter is invalid")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayRotationCapabilities M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayRotationCapabilities_THROWS_IF_PARAM_IS_INVALID()
+        {
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayRotationCapabilities(
+                new Dictionary<Rotation, MediaControlCapabilitySupport>()
+                {
+                    { Rotation.Rotate0, MediaControlCapabilitySupport.Supported - 1 }
+                })
+            );
+
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayRotationCapabilities(
+                new Dictionary<Rotation, MediaControlCapabilitySupport>()
+                {
+                    { Rotation.Rotate0, MediaControlCapabilitySupport.NotDecided }
+                })
+            );
+
+            Assert.Throws<ArgumentException>(() => MediaControlServer.SetDisplayRotationCapabilities(
+                new Dictionary<Rotation, MediaControlCapabilitySupport>()
+                {
+                    { Rotation.Rotate0 - 1, MediaControlCapabilitySupport.Supported }
+                })
+            );
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether SetDisplayRotationCapabilities throws exception if server is not running")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SetDisplayRotationCapabilities M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SetDisplayRotationCapabilities_THROWS_SERVER_IS_NOT_RUNNING()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            Assert.Throws<InvalidOperationException>(() => MediaControlServer.SetDisplayRotationCapabilities(
+                new Dictionary<Rotation, MediaControlCapabilitySupport>()
+                {
+                    { Rotation.Rotate0, MediaControlCapabilitySupport.Supported },
+                    { Rotation.Rotate90, MediaControlCapabilitySupport.Supported },
+                    { Rotation.Rotate180, MediaControlCapabilitySupport.Supported },
+                    { Rotation.Rotate270, MediaControlCapabilitySupport.Supported },
+                })
+            );
+        }
+
+        [Test]
+        [Category("P1")]
         [Description("Invoked when server sends custom command")]
         [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.CustomCommandReceived E")]
         [Property("SPEC_URL", "-")]
@@ -1017,5 +1483,137 @@ namespace Tizen.Multimedia.Remoting.Tests
                 Assert.That(await eventWaiter.IsRaisedAsync());
             }
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("Invoked when server sends subtile mode command")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.SubtitleModeCommandReceived E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task SubtitleModeCommandReceived_CHECK_EVENT()
+        {
+            using (var eventWaiter = EventAwaiter<SubtitleModeCommandReceivedEventArgs>.Create())
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                MediaControlServer.SubtitleModeCommandReceived += eventWaiter;
+
+                MediaControlServer.SetSubtitleModeCapability(MediaControlCapabilitySupport.Supported);
+
+                await Task.Run(() =>
+                {
+                    controller.RequestAsync(new SubtitleModeCommand(true));
+                });
+
+                var result = await eventWaiter.GetResultAsync();
+
+                Assert.That(result.Command.IsEnabled, Is.EqualTo(true), "Should be same value.");
+
+                MediaControlServer.SubtitleModeCommandReceived -= eventWaiter;
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Invoked when server sends 360 mode command")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.Mode360CommandReceived E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task Mode360CommandReceived_CHECK_EVENT()
+        {
+            using (var eventWaiter = EventAwaiter<Mode360CommandReceivedEventArgs>.Create())
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                MediaControlServer.Mode360CommandReceived += eventWaiter;
+
+                MediaControlServer.SetMode360Capability(MediaControlCapabilitySupport.Supported);
+
+                await Task.Run(() =>
+                {
+                    controller.RequestAsync(new Mode360Command(true));
+                });
+
+                var result = await eventWaiter.GetResultAsync();
+
+                Assert.That(result.Command.IsEnabled, Is.EqualTo(true), "Should be same value.");
+
+                MediaControlServer.Mode360CommandReceived -= eventWaiter;
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Invoked when server sends display mode command")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.DisplayModeCommandReceived E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task DisplayModeCommandReceived_CHECK_EVENT()
+        {
+            using (var eventWaiter = EventAwaiter<DisplayModeCommandReceivedEventArgs>.Create())
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                MediaControlServer.DisplayModeCommandReceived += eventWaiter;
+
+                MediaControlServer.SetDisplayModeCapability(MediaControlDisplayMode.LetterBox,
+                    MediaControlCapabilitySupport.Supported);
+
+                await Task.Run(() =>
+                {
+                    controller.RequestAsync(new DisplayModeCommand(MediaControlDisplayMode.LetterBox));
+                });
+
+                var result = await eventWaiter.GetResultAsync();
+
+                Assert.That(result.Command.Mode, Is.EqualTo(MediaControlDisplayMode.LetterBox),
+                    "Should be same value.");
+
+                MediaControlServer.DisplayModeCommandReceived -= eventWaiter;
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Invoked when server sends display rotation command")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaControlServer.DisplayRotationCommandReceived E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task DisplayRotationCommandReceived_CHECK_EVENT()
+        {
+            using (var eventWaiter = EventAwaiter<DisplayRotationCommandReceivedEventArgs>.Create())
+            using (var manager = new MediaControllerManager())
+            {
+                var controller = manager.GetActiveControllers().Single(
+                        c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+
+                MediaControlServer.DisplayRotationCommandReceived += eventWaiter;
+
+                MediaControlServer.SetDisplayRotationCapability(Rotation.Rotate180,
+                    MediaControlCapabilitySupport.Supported);
+
+                await Task.Run(() =>
+                {
+                    controller.RequestAsync(new DisplayRotationCommand(Rotation.Rotate180));
+                });
+
+                var result = await eventWaiter.GetResultAsync();
+
+                Assert.That(result.Command.Rotation, Is.EqualTo(Rotation.Rotate180),
+                    "Should be same value.");
+
+                MediaControlServer.DisplayRotationCommandReceived -= eventWaiter;
+            }
+        }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index 95be414..f3f7fe3
@@ -79,7 +79,7 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("SPEC_URL", "-")]
         [Property("CRITERIA", "PRO")]
         [Property("AUTHOR", "JungHo Kim, jhyo.kim@samsung.com")]
-        public void IsRunning_READ_ONLY()
+        public void IsRunning_READ_ONLY_WHEN_SERVER_IS_NOT_RUNNING()
         {
             Assert.That(MediaControlServer.IsRunning, Is.False);
         }
old mode 100755 (executable)
new mode 100644 (file)
index 713e651..ee2137d
@@ -41,7 +41,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         {
             var appId = "serverAppId";
 
-            Assert.That(() => new MediaControlServerStoppedEventArgs(appId).ServerAppId, Is.EqualTo(appId));
+            Assert.That(() => new MediaControlServerStoppedEventArgs(appId).ServerAppId, Is.EqualTo(appId),
+                "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index f670ed2..5c97bf1
@@ -146,7 +146,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 MediaControlServer.SetShuffleModeEnabled(value);
 
-                Assert.That((await eventAwaiter.GetResultAsync()).Enabled, Is.EqualTo(value));
+                Assert.That((await eventAwaiter.GetResultAsync()).Enabled, Is.EqualTo(value), "Should be same value");
             }
         }
 
@@ -167,7 +167,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 MediaControlServer.SetRepeatMode(value);
 
-                Assert.That((await eventAwaiter.GetResultAsync()).RepeatMode, Is.EqualTo(value));
+                Assert.That((await eventAwaiter.GetResultAsync()).RepeatMode, Is.EqualTo(value), "Should be same value");
             }
         }
 
@@ -184,7 +184,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             MediaControlServer.SetPlaybackState(state, 0);
 
-            Assert.That(_controller.GetPlaybackState(), Is.EqualTo(state));
+            Assert.That(_controller.GetPlaybackState(), Is.EqualTo(state), "Should be same value");
         }
 
         [Test]
@@ -200,7 +200,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             MediaControlServer.SetPlaybackState(MediaControlPlaybackState.Paused, position);
 
-            Assert.That(_controller.GetPlaybackPosition(), Is.EqualTo(position));
+            Assert.That(_controller.GetPlaybackPosition(), Is.EqualTo(position), "Should be same value");
         }
 
         [Test]
@@ -237,7 +237,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             MediaControlServer.SetShuffleModeEnabled(value);
 
-            Assert.That(_controller.IsShuffleModeEnabled(), Is.EqualTo(value));
+            Assert.That(_controller.IsShuffleModeEnabled(), Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -253,7 +253,7 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             MediaControlServer.SetRepeatMode(value);
 
-            Assert.That(_controller.GetRepeatMode(), Is.EqualTo(value));
+            Assert.That(_controller.GetRepeatMode(), Is.EqualTo(value), "Should be same value");
         }
 
         [Test]
@@ -294,7 +294,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             var ageRating = 12;
             MediaControlServer.SetAgeRating(ageRating);
 
-            Assert.That(_controller.GetAgeRatingOfCurrentPlayingMedia(), Is.EqualTo(ageRating));
+            Assert.That(_controller.GetAgeRatingOfCurrentPlayingMedia(), Is.EqualTo(ageRating), "Should be same value");
         }
 
         [Test]
@@ -309,7 +309,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             var contentType = MediaControlContentType.Music;
             MediaControlServer.SetPlaybackContentType(contentType);
 
-            Assert.That(_controller.GetContentTypeOfCurrentPlayingMedia(), Is.EqualTo(contentType));
+            Assert.That(_controller.GetContentTypeOfCurrentPlayingMedia(), Is.EqualTo(contentType), "Should be same value");
         }
 
         [Test]
@@ -324,7 +324,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             var iconPath = "test.jpg";
             MediaControlServer.SetIconPath(iconPath);
 
-            Assert.That(_controller.GetIconPath(), Is.EqualTo(iconPath));
+            Assert.That(_controller.GetIconPath(), Is.EqualTo(iconPath), "Should be same value");
         }
 
         [Test]
@@ -339,7 +339,218 @@ namespace Tizen.Multimedia.Remoting.Tests
             var index = "ID1";
             MediaControlServer.SetIndexOfCurrentPlayingMedia(index);
 
-            Assert.That(_controller.GetIndexOfCurrentPlayingMedia(), Is.EqualTo(index));
+            Assert.That(_controller.GetIndexOfCurrentPlayingMedia(), Is.EqualTo(index), "Should be same value");
+        }
+
+        [Test]
+        [Description("Sets subtile mode and get and compare with value")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.IsSubtitleModeEnabled M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void IsSubtitleModeEnabled_RETURN_VALUE()
+        {
+            Assert.That(() => MediaControlServer.SetSubtitleMode(true), Throws.Nothing);
+            Assert.That(_controller.IsSubtitleModeEnabled(), Is.EqualTo(true), "Should be same value.");
+
+            Assert.That(() => MediaControlServer.SetSubtitleMode(false), Throws.Nothing);
+            Assert.That(_controller.IsSubtitleModeEnabled(), Is.EqualTo(false), "Should be same value.");
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether IsSubtitleModeEnabled throws exception if manager has already benn disposed")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.IsSubtitleModeEnabled M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void IsSubtitleModeEnabled_THROWS_OBJECT_IS_DISPOSED()
+        {
+            _manager.Dispose();
+
+            Assert.Throws<ObjectDisposedException>(() => _controller.IsSubtitleModeEnabled());
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether IsSubtitleModeEnabled throws exception if server has already benn stopped")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.IsSubtitleModeEnabled M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task IsSubtitleModeEnabled_THROWS_SERVER_IS_ALREADY_STOPPED()
+        {
+            using (var eventWaiter = EventAwaiter<MediaControlServerStoppedEventArgs>.Create())
+            {
+                _manager.ServerStopped += eventWaiter;
+
+                MediaControlServer.Stop();
+
+                await eventWaiter.IsRaisedAsync();
+
+                Assert.Throws<InvalidOperationException>(() => _controller.IsSubtitleModeEnabled());
+
+                _manager.ServerStopped -= eventWaiter;
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Sets 360 mode and get and compare with value")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.IsMode360Enabled M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void IsMode360Enabled_RETURN_VALUE()
+        {
+            Assert.That(() => MediaControlServer.SetMode360(true), Throws.Nothing);
+            Assert.That(_controller.IsMode360Enabled(), Is.EqualTo(true), "Should be same value.");
+
+            Assert.That(() => MediaControlServer.SetMode360(false), Throws.Nothing);
+            Assert.That(_controller.IsMode360Enabled(), Is.EqualTo(false), "Should be same value.");
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether IsMode360Enabled throws exception if manager has already benn disposed")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.IsMode360Enabled M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void IsMode360Enabled_THROWS_OBJECT_IS_DISPOSED()
+        {
+            _manager.Dispose();
+
+            Assert.Throws<ObjectDisposedException>(() => _controller.IsMode360Enabled());
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether IsMode360Enabled throws exception if server has already benn stopped")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.IsMode360Enabled M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task IsMode360Enabled_THROWS_SERVER_IS_ALREADY_STOPPED()
+        {
+            using (var eventWaiter = EventAwaiter<MediaControlServerStoppedEventArgs>.Create())
+            {
+                _manager.ServerStopped += eventWaiter;
+
+                MediaControlServer.Stop();
+
+                await eventWaiter.IsRaisedAsync();
+
+                Assert.Throws<InvalidOperationException>(() => _controller.IsMode360Enabled());
+
+                _manager.ServerStopped -= eventWaiter;
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Sets display mode and get and compare with value")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayMode M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void GetDisplayMode_RETURN_VALUE()
+        {
+            foreach (MediaControlDisplayMode mode in Enum.GetValues(typeof(MediaControlDisplayMode)))
+            {
+                Assert.That(() => MediaControlServer.SetDisplayMode(mode), Throws.Nothing);
+                Assert.That(_controller.GetDisplayMode(), Is.EqualTo(mode), "Should be same value.");
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether GetDisplayMode throws exception if manager has already benn disposed")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayMode M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void GetDisplayMode_THROWS_OBJECT_IS_DISPOSED()
+        {
+            _manager.Dispose();
+
+            Assert.Throws<ObjectDisposedException>(() => _controller.GetDisplayMode());
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether GetDisplayMode throws exception if server has already benn stopped")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayMode M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task GetDisplayMode_THROWS_SERVER_IS_ALREADY_STOPPED()
+        {
+            using (var eventWaiter = EventAwaiter<MediaControlServerStoppedEventArgs>.Create())
+            {
+                _manager.ServerStopped += eventWaiter;
+
+                MediaControlServer.Stop();
+
+                await eventWaiter.IsRaisedAsync();
+
+                Assert.Throws<InvalidOperationException>(() => _controller.GetDisplayMode());
+
+                _manager.ServerStopped -= eventWaiter;
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Sets display rotation and get and compare with value")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayRotation M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void GetDisplayRotation_RETURN_VALUE()
+        {
+            foreach (Rotation rotation in Enum.GetValues(typeof(Rotation)))
+            {
+                Assert.That(() => MediaControlServer.SetDisplayRotation(rotation), Throws.Nothing);
+                Assert.That(_controller.GetDisplayRotation(), Is.EqualTo(rotation), "Should be same value.");
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether GetDisplayRotation throws exception if manager has already benn disposed")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayRotation M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void GetDisplayRotation_THROWS_OBJECT_IS_DISPOSED()
+        {
+            _manager.Dispose();
+
+            Assert.Throws<ObjectDisposedException>(() => _controller.GetDisplayRotation());
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether GetDisplayRotation throws exception if server has already benn stopped")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayRotation M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task GetDisplayRotation_THROWS_SERVER_IS_ALREADY_STOPPED()
+        {
+            using (var eventWaiter = EventAwaiter<MediaControlServerStoppedEventArgs>.Create())
+            {
+                _manager.ServerStopped += eventWaiter;
+
+                MediaControlServer.Stop();
+
+                await eventWaiter.IsRaisedAsync();
+
+                Assert.Throws<InvalidOperationException>(() => _controller.GetDisplayRotation());
+
+                _manager.ServerStopped -= eventWaiter;
+            }
         }
 
         [Test]
@@ -357,11 +568,11 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 var isSupported = MediaControlCapabilitySupport.NotSupported;
                 MediaControlServer.SetPlaybackCapability(capability, isSupported);
-                Assert.That(_controller.GetPlaybackCapability(capability), Is.EqualTo(isSupported));
+                Assert.That(_controller.GetPlaybackCapability(capability), Is.EqualTo(isSupported), "Should be same value");
 
                 isSupported = MediaControlCapabilitySupport.Supported;
                 MediaControlServer.SetPlaybackCapability(capability, isSupported);
-                Assert.That(_controller.GetPlaybackCapability(capability), Is.EqualTo(isSupported));
+                Assert.That(_controller.GetPlaybackCapability(capability), Is.EqualTo(isSupported), "Should be same value");
             }
         }
 
@@ -380,11 +591,11 @@ namespace Tizen.Multimedia.Remoting.Tests
 
                 var isSupported = MediaControlCapabilitySupport.NotSupported;
                 MediaControlServer.SetPlaybackCapability(capability, isSupported);
-                Assert.That(_controller.GetPlaybackCapability(capability), Is.EqualTo(isSupported));
+                Assert.That(_controller.GetPlaybackCapability(capability), Is.EqualTo(isSupported), "Should be same value");
 
                 isSupported = MediaControlCapabilitySupport.Supported;
                 MediaControlServer.SetPlaybackCapability(capability, isSupported);
-                Assert.That(_controller.GetPlaybackCapability(capability), Is.EqualTo(isSupported));
+                Assert.That(_controller.GetPlaybackCapability(capability), Is.EqualTo(isSupported), "Should be same value");
 
                 Assert.Throws<ArgumentException>(() => _controller.GetPlaybackCapability(MediaControlPlaybackCommand.Play - 1));
                 Assert.Throws<ArgumentException>(() => _controller.GetPlaybackCapability(MediaControlPlaybackCommand.Toggle + 1));
@@ -414,7 +625,143 @@ namespace Tizen.Multimedia.Remoting.Tests
 
             MediaControlServer.SetPlaybackCapabilities(capabilities);
 
-            Assert.That(_controller.GetPlaybackCapabilities(), Is.EqualTo(capabilities));
+            Assert.That(_controller.GetPlaybackCapabilities(), Is.EqualTo(capabilities), "Should be same value");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Gets display mode capabilities")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayModeCapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void GetDisplayModeCapability_RETURN_VALUE()
+        {
+            var setModes = new List<MediaControlDisplayMode>()
+            {
+                MediaControlDisplayMode.LetterBox, MediaControlDisplayMode.CroppedFull
+            };
+
+            var setModesDict = new Dictionary<MediaControlDisplayMode, MediaControlCapabilitySupport>();
+            foreach (var mode in setModes)
+            {
+                setModesDict.Add(mode, MediaControlCapabilitySupport.Supported);
+            }
+
+            Assert.That(() => MediaControlServer.SetDisplayModeCapabilities(setModesDict), Throws.Nothing);
+
+            var supportedModes = _controller.GetDisplayModeCapability();
+            Assert.That(supportedModes.Count(), Is.EqualTo(setModes.Count), "Should be same value.");
+
+            foreach (var mode in supportedModes)
+            {
+                Assert.That(setModes.Contains(mode), "Should be same value.");
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether GetDisplayModeCapability throws exception if parameter is invalid")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayModeCapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void GetDisplayModeCapability_OBJECT_IS_DISPOSED()
+        {
+            _manager.Dispose();
+
+            Assert.Throws<ObjectDisposedException>(() => _controller.GetDisplayModeCapability());
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether GetDisplayModeCapability throws exception if server has already benn stopped")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayModeCapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task GetDisplayModeCapability_THROWS_SERVER_IS_ALREADY_STOPPED()
+        {
+            using (var eventWaiter = EventAwaiter<MediaControlServerStoppedEventArgs>.Create())
+            {
+                _manager.ServerStopped += eventWaiter;
+
+                MediaControlServer.Stop();
+
+                await eventWaiter.IsRaisedAsync();
+
+                Assert.Throws<InvalidOperationException>(() => _controller.GetDisplayModeCapability());
+
+                _manager.ServerStopped -= eventWaiter;
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Gets display rotation capabilities")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayRotationapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void GetDisplayRotationapability_RETURN_VALUE()
+        {
+            var setRotations = new List<Rotation>()
+            {
+                Rotation.Rotate0, Rotation.Rotate180
+            };
+
+            var setRotationsDict = new Dictionary<Rotation, MediaControlCapabilitySupport>();
+            foreach (var rotation in setRotations)
+            {
+                setRotationsDict.Add(rotation, MediaControlCapabilitySupport.Supported);
+            }
+
+            Assert.That(() => MediaControlServer.SetDisplayRotationCapabilities(setRotationsDict), Throws.Nothing);
+
+            var supportedRotations = _controller.GetDisplayRotationapability();
+            Assert.That(supportedRotations.Count(), Is.EqualTo(setRotations.Count), "Should be same value.");
+
+            foreach (var rotation in supportedRotations)
+            {
+                Assert.That(setRotations.Contains(rotation), "Should be same value.");
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether GetDisplayRotationapability throws exception if parameter is invalid")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayRotationapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void GetDisplayRotationapability_OBJECT_IS_DISPOSED()
+        {
+            _manager.Dispose();
+
+            Assert.Throws<ObjectDisposedException>(() => _controller.GetDisplayRotationapability());
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Check whether GetDisplayRotationapability throws exception if server has already benn stopped")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.GetDisplayRotationapability M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MEX")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task GetDisplayRotationapability_THROWS_SERVER_IS_ALREADY_STOPPED()
+        {
+            using (var eventWaiter = EventAwaiter<MediaControlServerStoppedEventArgs>.Create())
+            {
+                _manager.ServerStopped += eventWaiter;
+
+                MediaControlServer.Stop();
+
+                await eventWaiter.IsRaisedAsync();
+
+                Assert.Throws<InvalidOperationException>(() => _controller.GetDisplayRotationapability());
+
+                _manager.ServerStopped -= eventWaiter;
+            }
         }
 
         [Test]
@@ -435,7 +782,7 @@ namespace Tizen.Multimedia.Remoting.Tests
                 var index = "Song2";
                 MediaControlServer.SetInfoOfCurrentPlayingMedia(playlistName, index);
 
-                Assert.That(_controller.GetPlaylistOfCurrentPlayingMedia().Name, Is.EqualTo(playlistName));
+                Assert.That(_controller.GetPlaylistOfCurrentPlayingMedia().Name, Is.EqualTo(playlistName), "Should be same value");
             };
         }
 
@@ -455,7 +802,8 @@ namespace Tizen.Multimedia.Remoting.Tests
             {
                 foreach (var playlist in _controller.GetPlaylists())
                 {
-                    Assert.IsTrue(playlist.Name.Equals(playlist1.Name) || playlist.Name.Equals(playlist2.Name));
+                    Assert.IsTrue(playlist.Name.Equals(playlist1.Name) || playlist.Name.Equals(playlist2.Name),
+                        "Should be same value");
                 }
             };
         }
@@ -470,10 +818,12 @@ namespace Tizen.Multimedia.Remoting.Tests
         public void GetRepeatModeCapability_RETURN_VALUE()
         {
             MediaControlServer.SetRepeatModeCapability(MediaControlCapabilitySupport.NotSupported);
-            Assert.That(_controller.GetRepeatModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.NotSupported));
+            Assert.That(_controller.GetRepeatModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.NotSupported),
+                "Should be same value");
 
             MediaControlServer.SetRepeatModeCapability(MediaControlCapabilitySupport.Supported);
-            Assert.That(_controller.GetRepeatModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.Supported));
+            Assert.That(_controller.GetRepeatModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.Supported),
+                "Should be same value");
         }
 
         [Test]
@@ -486,10 +836,12 @@ namespace Tizen.Multimedia.Remoting.Tests
         public void GetShuffleModeCapability_RETURN_VALUE()
         {
             MediaControlServer.SetShuffleModeCapability(MediaControlCapabilitySupport.NotSupported);
-            Assert.That(_controller.GetShuffleModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.NotSupported));
+            Assert.That(_controller.GetShuffleModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.NotSupported),
+                "Should be same value");
 
             MediaControlServer.SetShuffleModeCapability(MediaControlCapabilitySupport.Supported);
-            Assert.That(_controller.GetShuffleModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.Supported));
+            Assert.That(_controller.GetShuffleModeCapability(), Is.EqualTo(MediaControlCapabilitySupport.Supported),
+                "Should be same value");
         }
 
         [Test]
@@ -719,6 +1071,107 @@ namespace Tizen.Multimedia.Remoting.Tests
 
         [Test]
         [Category("P1")]
+        [Description("Invoked when the server set subtitle mode")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.SubtitleModeUpdated E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task SubtitleModeUpdated_CHECK_EVENT()
+        {
+            bool[] modes = new bool[] { true, false };
+
+            foreach (var mode in modes)
+            {
+                using (var eventWaiter = EventAwaiter<SubtitleModeUpdatedEventArgs>.Create())
+                {
+                    _controller.SubtitleModeUpdated += eventWaiter;
+
+                    MediaControlServer.SetSubtitleMode(mode);
+
+                    var args = await eventWaiter.GetResultAsync();
+                    Assert.IsTrue(args.IsEnabled.Equals(mode), "Should be same value");
+
+                    _controller.SubtitleModeUpdated -= eventWaiter;
+                }
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Invoked when the server set 360 mode")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.Mode360Updated E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task Mode360Updated_CHECK_EVENT()
+        {
+            bool[] modes = new bool[] { true, false };
+
+            foreach (var mode in modes)
+            {
+                using (var eventWaiter = EventAwaiter<Mode360UpdatedEventArgs>.Create())
+                {
+                    _controller.Mode360Updated += eventWaiter;
+
+                    MediaControlServer.SetMode360(mode);
+
+                    var args = await eventWaiter.GetResultAsync();
+                    Assert.IsTrue(args.IsEnabled.Equals(mode), "Should be same value");
+
+                    _controller.Mode360Updated -= eventWaiter;
+                }
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Invoked when the server set display mode")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.DisplayModeUpdated E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task DisplayModeUpdated_CHECK_EVENT()
+        {
+            using (var eventWaiter = EventAwaiter<DisplayModeUpdatedEventArgs>.Create())
+            {
+                _controller.DisplayModeUpdated += eventWaiter;
+
+                MediaControlServer.SetDisplayMode(MediaControlDisplayMode.LetterBox);
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.IsTrue(args.DisplayMode.Equals(MediaControlDisplayMode.LetterBox),
+                    "Should be same value");
+
+                _controller.DisplayModeUpdated -= eventWaiter;
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Invoked when the server set display rotation")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.DisplayRotationUpdated E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task DisplayRotationUpdated_CHECK_EVENT()
+        {
+            using (var eventWaiter = EventAwaiter<DisplayRotationUpdatedEventArgs>.Create())
+            {
+                _controller.DisplayRotationUpdated += eventWaiter;
+
+                MediaControlServer.SetDisplayRotation(Rotation.Rotate180);
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.IsTrue(args.Rotation.Equals(Rotation.Rotate180),
+                    "Should be same value");
+
+                _controller.DisplayRotationUpdated -= eventWaiter;
+            }
+        }
+
+
+        [Test]
+        [Category("P1")]
         [Description("Invoked when the server set repeat mode capability")]
         [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.RepeatModeCapabilityUpdated E")]
         [Property("SPEC_URL", "-")]
@@ -733,7 +1186,8 @@ namespace Tizen.Multimedia.Remoting.Tests
                 MediaControlServer.SetRepeatModeCapability(MediaControlCapabilitySupport.NotSupported);
 
                 var args = await eventWaiter.GetResultAsync();
-                Assert.IsTrue(args.Support.Equals(MediaControlCapabilitySupport.NotSupported));
+                Assert.IsTrue(args.Support.Equals(MediaControlCapabilitySupport.NotSupported),
+                    "Should be same value");
             }
         }
 
@@ -753,7 +1207,58 @@ namespace Tizen.Multimedia.Remoting.Tests
                 MediaControlServer.SetShuffleModeCapability(MediaControlCapabilitySupport.NotSupported);
 
                 var args = await eventWaiter.GetResultAsync();
-                Assert.IsTrue(args.Support.Equals(MediaControlCapabilitySupport.NotSupported));
+                Assert.IsTrue(args.Support.Equals(MediaControlCapabilitySupport.NotSupported),
+                    "Should be same value");
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Invoked when the server set display mode capability")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.DisplayModeCapabilityUpdated E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task DisplayModeCapabilityUpdated_CHECK_EVENT()
+        {
+            using (var eventWaiter = EventAwaiter<DisplayModeCapabilityUpdatedEventArgs>.Create())
+            {
+                _controller.DisplayModeCapabilityUpdated += eventWaiter;
+
+                MediaControlServer.SetDisplayModeCapability(MediaControlDisplayMode.LetterBox,
+                    MediaControlCapabilitySupport.Supported);
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.That(args.DisplayMode.Count, Is.EqualTo(1), "Should be same value");
+                Assert.IsTrue(args.DisplayMode.Contains(MediaControlDisplayMode.LetterBox),
+                    "Should be same value");
+
+                _controller.DisplayModeCapabilityUpdated -= eventWaiter;
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Invoked when the server set display rotation capability")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.MediaController.DisplayRotationCapabilityUpdated E")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "EVL")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task DisplayRotationCapabilityUpdated_CHECK_EVENT()
+        {
+            using (var eventWaiter = EventAwaiter<DisplayRotationCapabilityUpdatedEventArgs>.Create())
+            {
+                _controller.DisplayRotationCapabilityUpdated += eventWaiter;
+
+                MediaControlServer.SetDisplayRotationCapability(Rotation.Rotate180,
+                    MediaControlCapabilitySupport.Supported);
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.That(args.DisplayRotation.Count, Is.EqualTo(1), "Should be same value");
+                Assert.IsTrue(args.DisplayRotation.Contains(Rotation.Rotate180),
+                    "Should be same value");
+
+                _controller.DisplayRotationCapabilityUpdated -= eventWaiter;
             }
         }
     }
old mode 100755 (executable)
new mode 100644 (file)
index 4a984e8..cd72eaa
@@ -45,7 +45,7 @@ namespace Tizen.Multimedia.Remoting.Tests
                 try
                 {
                     Assert.That((await eventAwaiter.GetResultAsync()).Controller.ServerAppId,
-                        Is.EqualTo(Application.Current.ApplicationInfo.ApplicationId));
+                        Is.EqualTo(Application.Current.ApplicationInfo.ApplicationId), "Should be same value");
                 }
                 finally
                 {
@@ -72,7 +72,7 @@ namespace Tizen.Multimedia.Remoting.Tests
                 MediaControlServer.Stop();
 
                 Assert.That((await eventAwaiter.GetResultAsync()).ServerAppId,
-                    Is.EqualTo(Application.Current.ApplicationInfo.ApplicationId));
+                    Is.EqualTo(Application.Current.ApplicationInfo.ApplicationId), "Should be same value");
             }
         }
     }
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMode360Command.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMode360Command.cs
new file mode 100755 (executable)
index 0000000..0191044
--- /dev/null
@@ -0,0 +1,48 @@
+using NUnit.Framework;
+using System;
+using System.Linq;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.Mode360Command class")]
+    public class Mode360CommandTests
+    {
+        [Test]
+        [Category("P1")]
+        [Description("Create SubtitleModeCommand instance")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.Mode360Command.Mode360Command C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void Mode360Command_CHECK_CREATE_CONSTRUCTOR()
+        {
+            var command = new Mode360Command(false);
+            Assert.IsNotNull(command, "Object should not be null after initializing");
+            Assert.IsInstanceOf<Mode360Command>(command, "Should return Mode360Command instance");
+
+            var command2 = new Mode360Command(true);
+            Assert.IsNotNull(command2, "Object should not be null after initializing");
+            Assert.IsInstanceOf<Mode360Command>(command2, "Should return Mode360Command instance");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether IsEnabled property is type of bool or not.")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.Mode360Command.IsEnabled A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void IsEnabled_READ_ONLY()
+        {
+            var command = new Mode360Command(false);
+            Assert.IsInstanceOf<bool>(command.IsEnabled, "Should return Mode360Command instance");
+            Assert.That(command.IsEnabled, Is.EqualTo(false), "Should be same value.");
+
+            var command2 = new Mode360Command(true);
+            Assert.IsInstanceOf<bool>(command2.IsEnabled, "Should return Mode360Command instance");
+            Assert.That(command2.IsEnabled, Is.EqualTo(true), "Should be same value.");
+        }
+    }
+}
\ No newline at end of file
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMode360CommandReceivedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMode360CommandReceivedEventArgs.cs
new file mode 100644 (file)
index 0000000..c3cebd4
--- /dev/null
@@ -0,0 +1,68 @@
+using NUnit.Framework;
+using System.Linq;
+using System.Threading.Tasks;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.Mode360CommandReceivedEventArgs class")]
+    public class Mode360CommandReceivedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the 360 mode command is transfered to server using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.Mode360CommandReceivedEventArgs.Command A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task Command_CHECK_READ_ONLY()
+        {
+            MediaControlServer.SetMode360Capability(MediaControlCapabilitySupport.Supported);
+
+            bool[] boolCapabilities = new bool[] { true, false };
+
+            foreach (var mode in boolCapabilities)
+            {
+                using (var eventWaiter = EventAwaiter<Mode360CommandReceivedEventArgs>.Create())
+                {
+                    MediaControlServer.Mode360CommandReceived += eventWaiter;
+
+                    Task.Run(async () => await _controller.RequestAsync(new Mode360Command(mode)));
+
+                    var result = await eventWaiter.GetResultAsync();
+
+                    Assert.IsNotNull(result.Command, "Object should not be null after initializing");
+                    Assert.IsInstanceOf<Mode360Command>(result.Command, "Should return Mode360Command instance");
+                    Assert.That(result.Command.IsEnabled, Is.EqualTo(mode), "Should be same value");
+
+                    MediaControlServer.Mode360CommandReceived -= eventWaiter;
+                }
+            }
+        }
+    }
+}
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMode360UpdatedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSMode360UpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..6de905a
--- /dev/null
@@ -0,0 +1,71 @@
+using NUnit.Framework;
+using System.Linq;
+using System.Threading.Tasks;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.Mode360UpdatedEventArgs class")]
+    public class Mode360UpdatedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the 360 mode is transfered to controller using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.Mode360UpdatedEventArgs.IsEnabled A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task IsEnabled_CHECK_READ_ONLY()
+        {
+            using (var eventWaiter = EventAwaiter<Mode360UpdatedEventArgs>.Create())
+            {
+                _controller.Mode360Updated += eventWaiter;
+
+                MediaControlServer.SetMode360(true);
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.IsTrue(args.IsEnabled.Equals(true), "Should be same value");
+
+                _controller.Mode360Updated -= eventWaiter;
+            }
+
+            using (var eventWaiter = EventAwaiter<Mode360UpdatedEventArgs>.Create())
+            {
+                _controller.Mode360Updated += eventWaiter;
+
+                MediaControlServer.SetMode360(false);
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.IsTrue(args.IsEnabled.Equals(false), "Should be same value");
+
+                _controller.Mode360Updated -= eventWaiter;
+            }
+        }
+    }
+}
+
old mode 100755 (executable)
new mode 100644 (file)
index feb00f8..11eaa27
@@ -43,8 +43,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         {
             var args = new PlaybackActionCommandReceivedEventArgs(new PlaybackCommand(MediaControlPlaybackCommand.Play));
 
-            Assert.IsInstanceOf<PlaybackCommand>(args.Command);
-            Assert.That(() => args.Command.Action, Is.EqualTo(MediaControlPlaybackCommand.Play));
+            Assert.IsInstanceOf<PlaybackCommand>(args.Command, "Should return PlaybackCommand instance");
+            Assert.That(() => args.Command.Action, Is.EqualTo(MediaControlPlaybackCommand.Play), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index fcf10b5..be705ac
@@ -54,10 +54,11 @@ namespace Tizen.Multimedia.Remoting.Tests
                 {MediaControlPlaybackCommand.Play, MediaControlCapabilitySupport.Supported}
             });
 
-            Assert.IsInstanceOf<Dictionary<MediaControlPlaybackCommand, MediaControlCapabilitySupport>>(args.Support);
+            Assert.IsInstanceOf<Dictionary<MediaControlPlaybackCommand, MediaControlCapabilitySupport>>(args.Support,
+                "Should return Dictionary<MediaControlPlaybackCommand, MediaControlCapabilitySupport> instance");
 
             args.Support.TryGetValue(MediaControlPlaybackCommand.Play, out MediaControlCapabilitySupport isSupported);
-            Assert.That(() => isSupported, Is.EqualTo(MediaControlCapabilitySupport.Supported));
+            Assert.That(() => isSupported, Is.EqualTo(MediaControlCapabilitySupport.Supported), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index 50f7079..1ebee05
@@ -57,7 +57,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             var appId = "cilentAppId";
             var eventArgs = new PlaybackCommandReceivedEventArgs(appId, MediaControlPlaybackCommand.Stop);
 
-            Assert.That(eventArgs.ClientAppId, Is.EqualTo(appId));
+            Assert.That(eventArgs.ClientAppId, Is.EqualTo(appId), "Should be same value");
         }
 
         [Test]
@@ -72,7 +72,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             var command = MediaControlPlaybackCommand.Rewind;
             var eventArgs = new PlaybackCommandReceivedEventArgs("appId", command);
 
-            Assert.That(eventArgs.Command, Is.EqualTo(command));
+            Assert.That(eventArgs.Command, Is.EqualTo(command), "Should be same value");
         }
     }
 }
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index f397a77..a764186
@@ -57,8 +57,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Position_READ_ONLY()
         {
-            Assert.IsInstanceOf<ulong>(_command.Position);
-            Assert.That(() => _command.Position, Is.EqualTo(_position));
+            Assert.IsInstanceOf<ulong>(_command.Position, "Should return ulong instance");
+            Assert.That(() => _command.Position, Is.EqualTo(_position), "Should be same value");
         }
     }
 }
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 0ea6b53..d6858a3
@@ -43,8 +43,8 @@ namespace Tizen.Multimedia.Remoting.Tests
             var position = 10U;
             var args = new PlaybackPositionCommandReceivedEventArgs(new PlaybackPositionCommand(position));
 
-            Assert.IsInstanceOf<ulong>(args.Command.Position);
-            Assert.That(() => args.Command.Position, Is.EqualTo(position));
+            Assert.IsInstanceOf<ulong>(args.Command.Position, "Should return ulong instance");
+            Assert.That(() => args.Command.Position, Is.EqualTo(position), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index e056c34..fd72f49
@@ -56,7 +56,7 @@ namespace Tizen.Multimedia.Remoting.Tests
         {
             var state = MediaControlPlaybackState.Paused;
 
-            Assert.That(new PlaybackStateUpdatedEventArgs(state, 0).State, Is.EqualTo(state));
+            Assert.That(new PlaybackStateUpdatedEventArgs(state, 0).State, Is.EqualTo(state), "Should be same value");
         }
 
         [Test]
@@ -71,7 +71,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             var position = 987;
 
             Assert.That(new PlaybackStateUpdatedEventArgs(MediaControlPlaybackState.None, position).Position,
-                Is.EqualTo(position));
+                Is.EqualTo(position), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index bb8ed84..8bfe71d
@@ -110,8 +110,9 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Action_READ_ONLY()
         {
-            Assert.IsInstanceOf<MediaControlPlaybackCommand>(_command.Action);
-            Assert.That(_command.Action, Is.EqualTo(_action));
+            Assert.IsInstanceOf<MediaControlPlaybackCommand>(_command.Action,
+                "Should return MediaControlPlaybackCommand instance");
+            Assert.That(_command.Action, Is.EqualTo(_action), "Should be same value");
         }
 
         [Test]
@@ -123,8 +124,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Position_READ_ONLY()
         {
-            Assert.IsInstanceOf<ulong>(_command.Position);
-            Assert.That(_command.Position, Is.EqualTo(_position));
+            Assert.IsInstanceOf<ulong>(_command.Position, "Should return ulong instance");
+            Assert.That(_command.Position, Is.EqualTo(_position), "Should be same value");
         }
 
         [Test]
@@ -136,8 +137,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Index_READ_ONLY()
         {
-            Assert.IsInstanceOf<string>(_command.Index);
-            Assert.That(_command.Index, Is.EqualTo(_index));
+            Assert.IsInstanceOf<string>(_command.Index, "Should return string instance");
+            Assert.That(_command.Index, Is.EqualTo(_index), "Should be same value");
         }
 
         [Test]
@@ -149,8 +150,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Name_READ_ONLY()
         {
-            Assert.IsInstanceOf<string>(_command.Name);
-            Assert.That(_command.Name, Is.EqualTo(_playlistName));
+            Assert.IsInstanceOf<string>(_command.Name, "Should return string instance");
+            Assert.That(_command.Name, Is.EqualTo(_playlistName), "Should be same value");
         }
     }
 }
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index e94e914..f4adb8a
@@ -44,11 +44,11 @@ namespace Tizen.Multimedia.Remoting.Tests
             var args = new PlaylistCommandReceivedEventArgs(
                 new PlaylistCommand(MediaControlPlaybackCommand.Play, "MyFavor", "ID1", 10U));
 
-            Assert.IsInstanceOf<PlaylistCommand>(args.Command);
-            Assert.That(args.Command.Action, Is.EqualTo(MediaControlPlaybackCommand.Play));
-            Assert.That(args.Command.Position, Is.EqualTo(10U));
-            Assert.That(args.Command.Index, Is.EqualTo("ID1"));
-            Assert.That(args.Command.Name, Is.EqualTo("MyFavor"));
+            Assert.IsInstanceOf<PlaylistCommand>(args.Command, "Should return PlaylistCommand instance");
+            Assert.That(args.Command.Action, Is.EqualTo(MediaControlPlaybackCommand.Play), "Should be same value");
+            Assert.That(args.Command.Position, Is.EqualTo(10U), "Should be same value");
+            Assert.That(args.Command.Index, Is.EqualTo("ID1"), "Should be same value");
+            Assert.That(args.Command.Name, Is.EqualTo("MyFavor"), "Should be same value");
         }
     }
 }
index 97bc4ca..d315f3a 100644 (file)
@@ -66,8 +66,8 @@ namespace Tizen.Multimedia.Remoting.Tests
             var args = new PlaylistUpdatedEventArgs(MediaControlPlaylistMode.Updated, "test",
                 new MediaControlPlaylist("Song1"));
 
-            Assert.IsInstanceOf<MediaControlPlaylistMode>(args.Mode);
-            Assert.That(args.Mode, Is.EqualTo(MediaControlPlaylistMode.Updated));
+            Assert.IsInstanceOf<MediaControlPlaylistMode>(args.Mode, "Should return MediaControlPlaylistMode instance");
+            Assert.That(args.Mode, Is.EqualTo(MediaControlPlaylistMode.Updated), "Should be same value");
         }
 
         [Test]
@@ -82,8 +82,8 @@ namespace Tizen.Multimedia.Remoting.Tests
             var args = new PlaylistUpdatedEventArgs(MediaControlPlaylistMode.Updated, "MyFavor",
                 new MediaControlPlaylist("Song1"));
 
-            Assert.IsInstanceOf<string>(args.Name);
-            Assert.That(args.Name, Is.EqualTo("MyFavor"));
+            Assert.IsInstanceOf<string>(args.Name, "Should return string instance");
+            Assert.That(args.Name, Is.EqualTo("MyFavor"), "Should be same value");
         }
 
         [Test]
@@ -98,8 +98,8 @@ namespace Tizen.Multimedia.Remoting.Tests
             var args = new PlaylistUpdatedEventArgs(MediaControlPlaylistMode.Updated, "test",
                 new MediaControlPlaylist("Song1"));
 
-            Assert.IsInstanceOf<MediaControlPlaylist>(args.Playlist);
-            Assert.That(args.Playlist.Name, Is.EqualTo("Song1"));
+            Assert.IsInstanceOf<MediaControlPlaylist>(args.Playlist, "Should return MediaControlPlaylist instance");
+            Assert.That(args.Playlist.Name, Is.EqualTo("Song1"), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index 573dcad..f368c2b
@@ -43,8 +43,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         {
             var args = new RepeatModeCapabilityUpdatedEventArgs(MediaControlCapabilitySupport.Supported);
 
-            Assert.IsInstanceOf<MediaControlCapabilitySupport>(args.Support);
-            Assert.That(args.Support, Is.EqualTo(MediaControlCapabilitySupport.Supported));
+            Assert.IsInstanceOf<MediaControlCapabilitySupport>(args.Support, "Should return MediaControlCapabilitySupport instance");
+            Assert.That(args.Support, Is.EqualTo(MediaControlCapabilitySupport.Supported), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index 284b6e0..387b24d
@@ -70,8 +70,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Mode_READ_ONLY()
         {
-            Assert.IsInstanceOf<MediaControlRepeatMode>(_command.Mode);
-            Assert.That(_command.Mode, Is.EqualTo(MediaControlRepeatMode.Off));
+            Assert.IsInstanceOf<MediaControlRepeatMode>(_command.Mode, "Should return MediaControlRepeatMode instance");
+            Assert.That(_command.Mode, Is.EqualTo(MediaControlRepeatMode.Off), "Should be same value");
         }
     }
 }
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index b8e0412..d3a96cf
@@ -44,8 +44,8 @@ namespace Tizen.Multimedia.Remoting.Tests
             var args = new RepeatModeCommandReceivedEventArgs(
                 new RepeatModeCommand(MediaControlRepeatMode.Off));
 
-            Assert.IsInstanceOf<RepeatModeCommand>(args.Command);
-            Assert.That(args.Command.Mode, Is.EqualTo(MediaControlRepeatMode.Off));
+            Assert.IsInstanceOf<RepeatModeCommand>(args.Command, "Should return RepeatModeCommand instance");
+            Assert.That(args.Command.Mode, Is.EqualTo(MediaControlRepeatMode.Off), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index bb67d32..237cf40
@@ -42,7 +42,7 @@ namespace Tizen.Multimedia.Remoting.Tests
         {
             const MediaControlRepeatMode value = MediaControlRepeatMode.Off;
 
-            Assert.That(new RepeatModeUpdatedEventArgs(value).RepeatMode, Is.EqualTo(value));
+            Assert.That(new RepeatModeUpdatedEventArgs(value).RepeatMode, Is.EqualTo(value), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index 6589b4e..e51b095
@@ -120,13 +120,14 @@ namespace Tizen.Multimedia.Remoting.Tests
                 });
 
                 var args = await eventWaiter.GetResultAsync();
-                Assert.IsInstanceOf<IEnumerable<MediaControlSearchCondition>>(args.Command.Conditions);
+                Assert.IsInstanceOf<IEnumerable<MediaControlSearchCondition>>(args.Command.Conditions,
+                    "Should return IEnumerable<MediaControlSearchCondition> instance");
 
                 foreach (var iter in args.Command.Conditions)
                 {
-                    Assert.That(iter.ContentType, Is.EqualTo(MediaControlContentType.Music));
-                    Assert.That(iter.Category, Is.EqualTo(MediaControlSearchCategory.Artist));
-                    Assert.That(iter.Keyword, Is.EqualTo("GD"));
+                    Assert.That(iter.ContentType, Is.EqualTo(MediaControlContentType.Music), "Should be same value");
+                    Assert.That(iter.Category, Is.EqualTo(MediaControlSearchCategory.Artist), "Should be same value");
+                    Assert.That(iter.Keyword, Is.EqualTo("GD"), "Should be same value");
                 }
             }
         }
old mode 100755 (executable)
new mode 100644 (file)
index e92394e..c0711f8
@@ -57,9 +57,9 @@ namespace Tizen.Multimedia.Remoting.Tests
                 {
                     foreach (var iter in e.Command.Conditions)
                     {
-                        Assert.That(iter.ContentType, Is.EqualTo(MediaControlContentType.Music));
-                        Assert.That(iter.Category, Is.EqualTo(MediaControlSearchCategory.Artist));
-                        Assert.That(iter.Keyword, Is.EqualTo("GD"));
+                        Assert.That(iter.ContentType, Is.EqualTo(MediaControlContentType.Music), "Should be same value");
+                        Assert.That(iter.Category, Is.EqualTo(MediaControlSearchCategory.Artist), "Should be same value");
+                        Assert.That(iter.Keyword, Is.EqualTo("GD"), "Should be same value");
 
                         countdownEvent.Signal();
                     }
index 62e4d07..399f827 100644 (file)
@@ -34,7 +34,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             metadata.Season = season;
 
             AssertHelper.PropertyReadWrite<MediaControlMetadata>(nameof(MediaControlMetadata.Season));
-            Assert.That(metadata.Season.Number, Is.EqualTo(season.Number));
+            Assert.That(metadata.Season.Number, Is.EqualTo(season.Number), "Should be same value");
         }
 
         [Test]
@@ -52,7 +52,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             metadata.Season = season;
 
             AssertHelper.PropertyReadWrite<MediaControlMetadata>(nameof(MediaControlMetadata.Season));
-            Assert.That(metadata.Season.Title, Is.EqualTo(season.Title));
+            Assert.That(metadata.Season.Title, Is.EqualTo(season.Title), "Should be same value");
         }
     }
 }
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 4c770a3..1119e1b
@@ -45,7 +45,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             var args = new ShuffleModeCapabilityUpdatedEventArgs(MediaControlCapabilitySupport.Supported);
 
             Assert.IsInstanceOf<MediaControlCapabilitySupport>(args.Support);
-            Assert.That(args.Support, Is.EqualTo(MediaControlCapabilitySupport.Supported));
+            Assert.That(args.Support, Is.EqualTo(MediaControlCapabilitySupport.Supported), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index 40dbe45..c468879
@@ -61,12 +61,12 @@ namespace Tizen.Multimedia.Remoting.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public void Enabled_READ_ONLY()
         {
-            Assert.IsInstanceOf<bool>(_command.Enabled);
-            Assert.That(_command.Enabled, Is.EqualTo(true));
+            Assert.IsInstanceOf<bool>(_command.Enabled, "Should return bool instance");
+            Assert.That(_command.Enabled, Is.EqualTo(true), "Should be same value");
 
             var command = new ShuffleModeCommand(false);
-            Assert.IsInstanceOf<bool>(command.Enabled);
-            Assert.That(command.Enabled, Is.EqualTo(false));
+            Assert.IsInstanceOf<bool>(command.Enabled, "Should return bool instance");
+            Assert.That(command.Enabled, Is.EqualTo(false), "Should be same value");
         }
     }
 }
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 4af4a50..d40742b
@@ -46,7 +46,7 @@ namespace Tizen.Multimedia.Remoting.Tests
             var args = new ShuffleModeCommandReceivedEventArgs(new ShuffleModeCommand(false));
 
             Assert.IsInstanceOf<ShuffleModeCommand>(args.Command);
-            Assert.That(args.Command.Enabled, Is.EqualTo(false));
+            Assert.That(args.Command.Enabled, Is.EqualTo(false), "Should be same value");
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index af5acd7..6432795
@@ -30,7 +30,8 @@ namespace Tizen.Multimedia.Remoting.Tests
         {
             const bool enabled = false;
 
-            Assert.That(new ShuffleModeUpdatedEventArgs(enabled).Enabled, Is.EqualTo(enabled));
+            Assert.That(new ShuffleModeUpdatedEventArgs(enabled).Enabled, Is.EqualTo(enabled),
+                "Should be same value");
         }
     }
 }
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSubtitleModeCommand.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSubtitleModeCommand.cs
new file mode 100755 (executable)
index 0000000..1a787c9
--- /dev/null
@@ -0,0 +1,48 @@
+using NUnit.Framework;
+using System;
+using System.Linq;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.SubtitleModeCommand class")]
+    public class SubtitleModeCommandTests
+    {
+        [Test]
+        [Category("P1")]
+        [Description("Create SubtitleModeCommand instance")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.SubtitleModeCommand.SubtitleModeCommand C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void SubtitleModeCommand_CHECK_CREATE_CONSTRUCTOR()
+        {
+            var command = new SubtitleModeCommand(false);
+            Assert.IsNotNull(command, "Object should not be null after initializing");
+            Assert.IsInstanceOf<SubtitleModeCommand>(command, "Should return SubtitleModeCommand instance");
+
+            command = new SubtitleModeCommand(true);
+            Assert.IsNotNull(command, "Object should not be null after initializing");
+            Assert.IsInstanceOf<SubtitleModeCommand>(command, "Should return SubtitleModeCommand instance");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether IsEnabled property is type of bool or not.")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.SubtitleModeCommand.IsEnabled A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public void IsEnabled_READ_ONLY()
+        {
+            var command = new SubtitleModeCommand(false);
+            Assert.IsInstanceOf<bool>(command.IsEnabled, "Should return SubtitleModeCommand instance");
+            Assert.That(command.IsEnabled, Is.EqualTo(false), "Should be same value.");
+
+            command = new SubtitleModeCommand(true);
+            Assert.IsInstanceOf<bool>(command.IsEnabled, "Should return SubtitleModeCommand instance");
+            Assert.That(command.IsEnabled, Is.EqualTo(true), "Should be same value.");
+        }
+    }
+}
\ No newline at end of file
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSubtitleModeCommandReceivedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSubtitleModeCommandReceivedEventArgs.cs
new file mode 100644 (file)
index 0000000..93ceda1
--- /dev/null
@@ -0,0 +1,70 @@
+using NUnit.Framework;
+using System.Linq;
+using System.Threading.Tasks;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.SubtitleModeCommandReceivedEventArgs class")]
+    public class SubtitleModeCommandReceivedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the subtitle mode command is transfered to server using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.SubtitleModeCommandReceivedEventArgs.Command A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task Command_CHECK_READ_ONLY()
+        {
+            MediaControlServer.SetSubtitleModeCapability(MediaControlCapabilitySupport.Supported);
+
+            bool[] boolCapabilities = new bool[] { true, false };
+
+            foreach (var mode in boolCapabilities)
+            {
+                using (var eventWaiter = EventAwaiter<SubtitleModeCommandReceivedEventArgs>.Create())
+                {
+                    MediaControlServer.SubtitleModeCommandReceived += eventWaiter;
+
+                    Task.Run(async () => await _controller.RequestAsync(new SubtitleModeCommand(mode)));
+
+                    var result = await eventWaiter.GetResultAsync();
+
+                    Assert.IsNotNull(result.Command, "Object should not be null after initializing");
+                    Assert.IsInstanceOf<SubtitleModeCommand>(result.Command,
+                        "Should return SubtitleModeCommand instance");
+                    Assert.That(result.Command.IsEnabled, Is.EqualTo(mode), "Should be same value");
+
+                    MediaControlServer.SubtitleModeCommandReceived -= eventWaiter;
+                }
+            }
+        }
+    }
+}
+
diff --git a/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSubtitleModeUpdatedEventArgs.cs b/tct-suite-vs/Tizen.MediaController.Tests/testcase/TSSubtitleModeUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..ff592e4
--- /dev/null
@@ -0,0 +1,72 @@
+using NUnit.Framework;
+using System.Linq;
+using System.Threading.Tasks;
+using Tizen.Applications;
+
+namespace Tizen.Multimedia.Remoting.Tests
+{
+    [TestFixture]
+    [Description("Testing Tizen.Multimedia.Remoting.SubtitleModeUpdatedEventArgs class")]
+    public class SubtitleModeUpdatedEventArgsTests
+    {
+        private MediaController _controller;
+        private MediaControllerManager _manager;
+
+        [SetUp]
+        public void SetUp()
+        {
+            MediaControlServer.Start();
+
+            _manager = new MediaControllerManager();
+            _controller = _manager.GetActiveControllers().Single(
+                    c => c.ServerAppId == Application.Current.ApplicationInfo.ApplicationId);
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            if (MediaControlServer.IsRunning)
+            {
+                MediaControlServer.Stop();
+            }
+
+            _manager.Dispose();
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check whether the 360 mode is transfered to controller using EventArgs class")]
+        [Property("SPEC", "Tizen.Multimedia.Remoting.SubtitleModeUpdatedEventArgs.IsEnabled A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
+        public async Task IsEnabled_CHECK_READ_ONLY()
+        {
+            MediaControlServer.SetSubtitleModeCapability(MediaControlCapabilitySupport.Supported);
+
+            using (var eventWaiter = EventAwaiter<SubtitleModeUpdatedEventArgs>.Create())
+            {
+                _controller.SubtitleModeUpdated += eventWaiter;
+
+                MediaControlServer.SetSubtitleMode(true);
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.IsTrue(args.IsEnabled.Equals(true), "Should be same value.");
+
+                _controller.SubtitleModeUpdated -= eventWaiter;
+            }
+
+            using (var eventWaiter = EventAwaiter<SubtitleModeUpdatedEventArgs>.Create())
+            {
+                _controller.SubtitleModeUpdated += eventWaiter;
+
+                MediaControlServer.SetSubtitleMode(false);
+
+                var args = await eventWaiter.GetResultAsync();
+                Assert.IsTrue(args.IsEnabled.Equals(false), "Should be same value.");
+
+                _controller.SubtitleModeUpdated -= eventWaiter;
+            }
+        }
+    }
+}