From 5013d6eafa1e00fd90eacccac8526668ec25bb20 Mon Sep 17 00:00:00 2001 From: Haesu Gwon Date: Wed, 5 Oct 2022 10:55:46 +0900 Subject: [PATCH] [Camera][TCSACR-498] Add new APIs for CameraDeviceManager and ExtraPreview Change-Id: I7aa0b1bcdc0dd88b1b3f217e30ca415b0b908391 --- .../Tizen.Camera.Tests/testcase/TSCamera.cs | 33 +++ .../testcase/TSCameraCapabilities.cs | 14 + .../testcase/TSCameraDeviceInformation.cs | 124 +++++++++ .../testcase/TSCameraDeviceManager.cs | 152 +++++++++++ .../testcase/TSCameraSettings.cs | 294 +++++++++++++++++++++ .../testcase/TSExtraPreviewEventArgs.cs | 84 ++++++ .../testcase/TSExtraPreviewStreamInfo.cs | 103 ++++++++ .../TSCameraDeviceConnectionChangedEventArgs.cs | 88 ++++++ .../testcase/Camera/TSCameraDeviceManager.cs | 48 ++++ 9 files changed, 940 insertions(+) create mode 100644 tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDeviceInformation.cs create mode 100644 tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDeviceManager.cs create mode 100644 tct-suite-vs/Tizen.Camera.Tests/testcase/TSExtraPreviewEventArgs.cs create mode 100644 tct-suite-vs/Tizen.Camera.Tests/testcase/TSExtraPreviewStreamInfo.cs create mode 100755 tct-suite-vs/Tizen.Multimedia.Manual.Tests/testcase/Camera/TSCameraDeviceConnectionChangedEventArgs.cs create mode 100755 tct-suite-vs/Tizen.Multimedia.Manual.Tests/testcase/Camera/TSCameraDeviceManager.cs diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCamera.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCamera.cs index 72e5163..7ac6e9a 100644 --- a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCamera.cs +++ b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCamera.cs @@ -1370,6 +1370,39 @@ namespace Tizen.Multimedia.Tests [Test] [Category("P1")] + [Description("Check whether ExtraPreview event is invoked or not.")] + [Property("SPEC", "Tizen.Multimedia.Camera.ExtraPreview E")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public async Task ExtraPreview_CHECK_EVENT() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported."); + } + + using (var eventWaiter = EventAwaiter.Create()) + { + TestCamera.ExtraPreview += eventWaiter; + + try + { + TestCamera.StartPreview(); + + var eventArgs = await eventWaiter.GetResultAsync(); + + Assert.IsNotNull(eventArgs.Preview, "Should not null"); + } + finally + { + TestCamera.ExtraPreview -= eventWaiter; + } + } + } + + [Test] + [Category("P1")] [Description("Test Camera Handle.")] [Property("SPEC", "Tizen.Multimedia.Camera.Handle A")] [Property("SPEC_URL", "-")] diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraCapabilities.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraCapabilities.cs index fd6eff1..4adfc40 100644 --- a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraCapabilities.cs +++ b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraCapabilities.cs @@ -89,6 +89,20 @@ namespace Tizen.Multimedia.Tests [Test] [Category("P1")] + [Description("Check whether IsExtraPreviewSupported returns expected value or not.")] + [Property("SPEC", "Tizen.Multimedia.CameraCapabilities.IsExtraPreviewSupported A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void IsExtraPreviewSupported_PROPERTY_READ_ONLY() + { + var result = TestCamera.Capabilities.IsExtraPreviewSupported; + Assert.IsNotNull(result, "The IsExtraPreviewSupported value should not be null."); + Assert.IsInstanceOf(result, "The result should be of type boolean."); + } + + [Test] + [Category("P1")] [Description("Test MediaPacketPreviewCallback supported property.")] [Property("SPEC", "Tizen.Multimedia.CameraCapabilities.IsMediaPacketPreviewCallbackSupported A")] [Property("SPEC_URL", "-")] diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDeviceInformation.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDeviceInformation.cs new file mode 100644 index 0000000..ed190df --- /dev/null +++ b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDeviceInformation.cs @@ -0,0 +1,124 @@ +// Copyright 2022 by Samsung Electronics, Inc., +// +// This software is the confidential and proprietary information +// of Samsung Electronics, Inc. ("Confidential Information"). You +// shall not disclose such Confidential Information and shall use +// it only in accordance with the terms of the license agreement +// you entered into with Samsung. + +using NUnit.Framework; +using System; +using System.Linq; + +namespace Tizen.Multimedia.Tests +{ + [TestFixture] + [Description("Tests Tizen.Multimedia.CameraDeviceInformation class")] + public class CameraDeviceInformationTests : TestBase + { + private CameraDeviceManager _cameraDeviceManager; + + [SetUp] + public void Init() + { + try + { + _cameraDeviceManager = new CameraDeviceManager(); + } + catch (NotSupportedException) + { + Assert.Pass("CameraDeviceManager is not supported"); + } + } + + [TearDown] + public void Destroy() + { + _cameraDeviceManager?.Dispose(); + } + + [Test] + [Category("P1")] + [Description("Check whether Type returns expected value or not.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceInformation.Type A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void Type_READ_ONLY() + { + var info = _cameraDeviceManager.SupportedDevices.First(); + Assert.IsInstanceOf(info.Type, + "Should return CameraDeviceType instance"); + } + + [Test] + [Category("P1")] + [Description("Check whether Device returns expected value or not.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceInformation.Device A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void Device_READ_ONLY() + { + var info = _cameraDeviceManager.SupportedDevices.First(); + Assert.IsInstanceOf(info.Device, + "Should return CameraDevice instance"); + } + + [Test] + [Category("P1")] + [Description("Check whether Name returns expected value or not.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceInformation.Name A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void Name_READ_ONLY() + { + var info = _cameraDeviceManager.SupportedDevices.First(); + Assert.IsNotNull(info.Name, "Should not null"); + Assert.IsInstanceOf(info.Name, "Should return string instance"); + } + + [Test] + [Category("P1")] + [Description("Check whether Id returns expected value or not.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceInformation.Id A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void Id_READ_ONLY() + { + var info = _cameraDeviceManager.SupportedDevices.First(); + Assert.IsNotNull(info.Id, "Should not null"); + Assert.IsInstanceOf(info.Id, "Should return CameraDevice instance"); + } + + [Test] + [Category("P1")] + [Description("Check whether NumberOfExtraStream returns expected value or not.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceInformation.NumberOfExtraStream A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void NumberOfExtraStream_READ_ONLY() + { + var info = _cameraDeviceManager.SupportedDevices.First(); + Assert.IsInstanceOf(info.NumberOfExtraStream, "Should return int instance"); + } + + [Test] + [Category("P1")] + [Description("Check whether ToString returns expected value or not.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceInformation.ToString M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void ToString_CHECK_VALUE() + { + var info = _cameraDeviceManager.SupportedDevices.First(); + + Assert.AreEqual($"Type:{info.Type.ToString()}, Device:{info.Device.ToString()}, Name:{info.Name}, Id:{info.Id}, NumberOfExtraStream:{info.NumberOfExtraStream}", + info.ToString(), "Should be same string"); + } + } +} diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDeviceManager.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDeviceManager.cs new file mode 100644 index 0000000..aacfd07 --- /dev/null +++ b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDeviceManager.cs @@ -0,0 +1,152 @@ +// Copyright 2022 by Samsung Electronics, Inc., +// +// This software is the confidential and proprietary information +// of Samsung Electronics, Inc. ("Confidential Information"). You +// shall not disclose such Confidential Information and shall use +// it only in accordance with the terms of the license agreement +// you entered into with Samsung. + +using NUnit.Framework; +using System; + +namespace Tizen.Multimedia.Tests +{ + [TestFixture] + [Description("Tests Tizen.Multimedia.CameraDeviceManager class")] + public class CameraDeviceManagerTests : TestBase + { + private CameraDeviceManager _cameraDeviceManager; + + [SetUp] + public void Init() + { + try + { + _cameraDeviceManager = new CameraDeviceManager(); + } + catch (NotSupportedException) + { + Assert.Pass("CameraDeviceManager is not supported"); + } + } + + [TearDown] + public void Destroy() + { + _cameraDeviceManager?.Dispose(); + } + + [Test] + [Category("P1")] + [Description("Object should not be null after initializing")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceManager.CameraDeviceManager C")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "CONSTR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void CameraDeviceManager_INIT() + { + try + { + var cameraDeviceManager = new CameraDeviceManager(); + Assert.IsInstanceOf(cameraDeviceManager, + "Should return CameraDeviceManager instance"); + } + catch (NotSupportedException) + { + Assert.Pass("CameraDeviceManager is not supported"); + } + } + + [Test] + [Category("P1")] + [Description("Check whether IsExternalCameraConnected returns expected value or not.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceManager.IsExternalCameraConnected A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void IsExternalCameraConnected_READ_ONLY() + { + var isConnected = _cameraDeviceManager.IsExternalCameraConnected; + Assert.IsInstanceOf(isConnected, + "Should return IsExternalCameraConnected instance"); + } + + [Test] + [Category("P2")] + [Description("Check whether IsExternalCameraConnected throws exception when it's already disposed.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceManager.IsExternalCameraConnected A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PEX")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void IsExternalCameraConnected_THROWS_IF_ALREADY_DISPOSED() + { + _cameraDeviceManager.Dispose(); + + Assert.That(() => _cameraDeviceManager.IsExternalCameraConnected, Throws.TypeOf(), + "Should return ObjectDisposedException"); + } + + [Test] + [Category("P1")] + [Description("Check whether SupportedDevices returns expected value or not.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceManager.SupportedDevices A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void SupportedDevices_READ_ONLY() + { + Assert.That(() => _cameraDeviceManager.SupportedDevices, Throws.Nothing, + "Should not throw exception"); + } + + [Test] + [Category("P2")] + [Description("Check whether SupportedDevices throws exception when it's already disposed.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceManager.SupportedDevices A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PEX")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void SupportedDevices_THROWS_IF_ALREADY_DISPOSED() + { + _cameraDeviceManager.Dispose(); + + Assert.That(() => _cameraDeviceManager.SupportedDevices, Throws.TypeOf(), + "Should return ObjectDisposedException"); + } + + [Test] + [Category("P2")] + [Description("Check whether DeviceConnectionChanged throws exception when it's already disposed.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceManager.DeviceConnectionChanged E")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void DeviceConnectionChanged_CHECK_EVENT() + { + _cameraDeviceManager.Dispose(); + + try + { + _cameraDeviceManager.DeviceConnectionChanged += (s, e) => + Log.Error("Tizen.Camera.Tests", "Should not print this"); + } + catch (ObjectDisposedException) + { + Assert.Pass("Proper exeption was occurred."); + } + } + + [Test] + [Category("P1")] + [Description("Test Dispose whether throws exception or not.")] + [Property("SPEC", " Tizen.Multimedia.CameraDeviceManager.Dispose M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void Dispose_CHECK_RETURN() + { + Assert.That(() => _cameraDeviceManager.Dispose(), Throws.Nothing, + "Should not throw exception"); + } + } +} diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraSettings.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraSettings.cs index 66d5de9..a8236bd 100644 --- a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraSettings.cs +++ b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraSettings.cs @@ -10,6 +10,7 @@ using NUnit.Framework; using System; using System.Linq; using System.Collections; +using System.Threading.Tasks; namespace Tizen.Multimedia.Tests { @@ -1952,5 +1953,298 @@ namespace Tizen.Multimedia.Tests Assert.Throws(() => { var resolution = TestCamera.Settings.CaptureResolution; }, "Should throws proper exception"); } + + [Test] + [Category("P1")] + [Description("Test GetExtraPreviewStreamInfo whether throws exception or not.")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.GetExtraPreviewStreamInfo M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void GetExtraPreviewStreamInfo_NO_EXCEPTION() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.StartPreview(); + + var info = new ExtraPreviewStreamInfo(0, CameraPixelFormat.I420, new Size(640, 480), 15); + + Assert.That(() => TestCamera.Settings.SetExtraPreviewStreamInfo(info), Throws.Nothing, + "Should not throw exception"); + + Assert.That(TestCamera.Settings.GetExtraPreviewStreamInfo(0), Is.EqualTo(info), + "Should be same"); + } + + [Test] + [Category("P2")] + [Description("Test GetExtraPreviewStreamInfo whether throws exception if camera is already disposed")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.GetExtraPreviewStreamInfo M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MEX")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void GetExtraPreviewStreamInfo_THROWS_IF_ALREADY_DISPOSED() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.Dispose(); + + Assert.That(() => TestCamera.Settings.GetExtraPreviewStreamInfo(0), Throws.TypeOf(), + "Should throw ObjectDisposedException"); + } + + [Test] + [Category("P1")] + [Description("Test SetExtraPreviewStreamInfo whether throws exception or not.")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.SetExtraPreviewStreamInfo M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void SetExtraPreviewStreamInfo_NO_EXCEPTION() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.StartPreview(); + + var info = new ExtraPreviewStreamInfo(0, CameraPixelFormat.I420, new Size(640, 480), 15); + + Assert.That(() => TestCamera.Settings.SetExtraPreviewStreamInfo(info), Throws.Nothing, + "Should not throw exception"); + + Assert.That(TestCamera.Settings.GetExtraPreviewStreamInfo(0), Is.EqualTo(info), + "Should be same"); + } + + [Test] + [Category("P2")] + [Description("Test SetExtraPreviewStreamInfo whether throws exception if camera is already disposed")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.SetExtraPreviewStreamInfo M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MEX")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void SetExtraPreviewStreamInfo_THROWS_IF_ALREADY_DISPOSED() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.Dispose(); + + var info = new ExtraPreviewStreamInfo(0, CameraPixelFormat.I420, new Size(640, 480), 15); + + Assert.That(() => TestCamera.Settings.SetExtraPreviewStreamInfo(info), Throws.TypeOf(), + "Should throw ObjectDisposedException"); + } + + [Test] + [Category("P1")] + [Description("Test GetExtraPreviewBitrate whether throws exception or not.")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.GetExtraPreviewBitrate M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void GetExtraPreviewBitrate_NO_EXCEPTION() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + Assert.That(() => TestCamera.Settings.SetExtraPreviewBitrate(0, 30), Throws.Nothing, + "Should not throw exception"); + + Assert.That(TestCamera.Settings.GetExtraPreviewBitrate(0), Is.EqualTo(30), + "Should be same"); + } + + [Test] + [Category("P2")] + [Description("Test GetExtraPreviewBitrate whether throws exception if camera is already disposed")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.GetExtraPreviewBitrate M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MEX")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void GetExtraPreviewBitrate_THROWS_IF_ALREADY_DISPOSED() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.Dispose(); + + Assert.That(() => TestCamera.Settings.GetExtraPreviewBitrate(0), Throws.TypeOf(), + "Should throw ObjectDisposedException"); + } + + [Test] + [Category("P1")] + [Description("Test SetExtraPreviewBitrate whether throws exception or not.")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.SetExtraPreviewBitrate M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void SetExtraPreviewBitrate_NO_EXCEPTION() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + Assert.That(() => TestCamera.Settings.SetExtraPreviewBitrate(0, 30), Throws.Nothing, + "Should not throw exception"); + + Assert.That(TestCamera.Settings.GetExtraPreviewBitrate(0), Is.EqualTo(30), + "Should be same"); + } + + [Test] + [Category("P2")] + [Description("Test SetExtraPreviewBitrate whether throws exception if camera is already disposed")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.SetExtraPreviewBitrate M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void SetExtraPreviewBitrate_THROWS_IF_ALREADY_DISPOSED() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.Dispose(); + + Assert.That(() => TestCamera.Settings.SetExtraPreviewBitrate(0, 30), Throws.TypeOf(), + "Should throw ObjectDisposedException"); + } + + [Test] + [Category("P1")] + [Description("Test GetExtraPreviewGopInterval whether throws exception or not.")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.GetExtraPreviewGopInterval M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void GetExtraPreviewGopInterval_NO_EXCEPTION() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.Settings.SetExtraPreviewGopInterval(0, 2000); + + Assert.That(() => TestCamera.Settings.GetExtraPreviewGopInterval(0), Is.EqualTo(2000), + "Should not throw exception"); + } + + [Test] + [Category("P2")] + [Description("Test GetExtraPreviewGopInterval whether throws exception if camera is already disposed")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.GetExtraPreviewGopInterval M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MEX")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void GetExtraPreviewGopInterval_THROWS_IF_ALREADY_DISPOSED() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.Dispose(); + + Assert.That(() => TestCamera.Settings.GetExtraPreviewGopInterval(0), Throws.TypeOf(), + "Should throw ObjectDisposedException"); + } + + [Test] + [Category("P1")] + [Description("Test SetExtraPreviewGopInterval whether throws exception or not.")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.SetExtraPreviewGopInterval M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void SetExtraPreviewGopInterval_NO_EXCEPTION() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + Assert.That(() => TestCamera.Settings.SetExtraPreviewGopInterval(0, 2000), Throws.Nothing, + "Should not throw exception"); + + Assert.That(() => TestCamera.Settings.GetExtraPreviewGopInterval(0), Is.EqualTo(2000), + "Should return same value"); + } + + [Test] + [Category("P2")] + [Description("Test SetExtraPreviewGopInterval whether throws exception if camera is already disposed")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.SetExtraPreviewGopInterval M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void SetExtraPreviewGopInterval_THROWS_IF_ALREADY_DISPOSED() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.Dispose(); + + Assert.That(() => TestCamera.Settings.SetExtraPreviewGopInterval(0, 30), Throws.TypeOf(), + "Should throw ObjectDisposedException"); + } + + [Test] + [Category("P1")] + [Description("Test GetExtraPreviewRotation whether throws exception or not.")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.GetExtraPreviewRotation M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void GetExtraPreviewRotation_NO_EXCEPTION() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + Assert.That(() => TestCamera.Settings.GetExtraPreviewRotation(0), Throws.Nothing, + "Should not throw exception"); + } + + [Test] + [Category("P2")] + [Description("Test GetExtraPreviewRotation whether throws exception if camera is already disposed")] + [Property("SPEC", "Tizen.Multimedia.CameraSettings.GetExtraPreviewRotation M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MEX")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void GetExtraPreviewRotation_THROWS_IF_ALREADY_DISPOSED() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + TestCamera.Dispose(); + + Assert.That(() => TestCamera.Settings.GetExtraPreviewRotation(0), Throws.TypeOf(), + "Should throw ObjectDisposedException"); + } } } diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSExtraPreviewEventArgs.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSExtraPreviewEventArgs.cs new file mode 100644 index 0000000..9cfa60b --- /dev/null +++ b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSExtraPreviewEventArgs.cs @@ -0,0 +1,84 @@ +// Copyright 2022 by Samsung Electronics, Inc., +// +// This software is the confidential and proprietary information +// of Samsung Electronics, Inc. ("Confidential Information"). You +// shall not disclose such Confidential Information and shall use +// it only in accordance with the terms of the license agreement +// you entered into with Samsung. + +using NUnit.Framework; +using System.Threading.Tasks; + +namespace Tizen.Multimedia.Tests +{ + [TestFixture] + [Description("Tests Tizen.Multimedia.ExtraPreviewEventArgs class")] + public class ExtraPreviewEventArgsTests : TestBase + { + [Test] + [Category("P1")] + [Description("Check whether Preview returns expected value or not.")] + [Property("SPEC", "Tizen.Multimedia.ExtraPreviewEventArgs.Preview A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public async Task Preview_READ_ONLY() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + using (var eventWaiter = EventAwaiter.Create()) + { + TestCamera.ExtraPreview += eventWaiter; + + try + { + TestCamera.StartPreview(); + + var eventArgs = await eventWaiter.GetResultAsync(); + + Assert.IsInstanceOf(eventArgs.Preview, "Should return PreviewFrame instance"); + } + finally + { + TestCamera.ExtraPreview -= eventWaiter; + } + } + } + + [Test] + [Category("P1")] + [Description("Check whether StreamId returns expected value or not.")] + [Property("SPEC", "Tizen.Multimedia.ExtraPreviewEventArgs.StreamId A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public async Task StreamId_READ_ONLY() + { + if (TestCamera.Capabilities.IsExtraPreviewSupported == false) + { + Assert.Pass("ExtraPreview feature is not supported"); + } + + using (var eventWaiter = EventAwaiter.Create()) + { + TestCamera.ExtraPreview += eventWaiter; + + try + { + TestCamera.StartPreview(); + + var eventArgs = await eventWaiter.GetResultAsync(); + + Assert.IsInstanceOf(eventArgs.StreamId, "Should return int instance"); + } + finally + { + TestCamera.ExtraPreview -= eventWaiter; + } + } + } + } +} diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/TSExtraPreviewStreamInfo.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSExtraPreviewStreamInfo.cs new file mode 100644 index 0000000..38af1d2 --- /dev/null +++ b/tct-suite-vs/Tizen.Camera.Tests/testcase/TSExtraPreviewStreamInfo.cs @@ -0,0 +1,103 @@ +// Copyright 2022 by Samsung Electronics, Inc., +// +// This software is the confidential and proprietary information +// of Samsung Electronics, Inc. ("Confidential Information"). You +// shall not disclose such Confidential Information and shall use +// it only in accordance with the terms of the license agreement +// you entered into with Samsung. + +using NUnit.Framework; + +namespace Tizen.Multimedia.Tests +{ + [TestFixture] + [Description("Tests Tizen.Multimedia.ExtraPreviewStreamInfo class")] + public class ExtraPreviewStreamInfoTests : TestBase + { + [Test] + [Category("P1")] + [Description("Create the ExtraPreviewStreamInfo instance and check whether instance is created property or not.")] + [Property("SPEC", "Tizen.Multimedia.ExtraPreviewStreamInfo.ExtraPreviewStreamInfo C")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "CONSTR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void ExtraPreviewStreamInfo_INIT() + { + var info = new ExtraPreviewStreamInfo(0, CameraPixelFormat.I420, new Size(640, 480), 30); + Assert.IsNotNull(info, "ExtraPreviewStreamInfo should not be null."); + Assert.IsInstanceOf(info, "Should return ExtraPreviewStreamInfo instance."); + } + + [Test] + [Category("P1")] + [Description("Check whether StreamId returns expected value or not.")] + [Property("SPEC", "Tizen.Multimedia.ExtraPreviewStreamInfo.StreamId A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void StreamId_READ_ONLY() + { + var info = new ExtraPreviewStreamInfo(0, CameraPixelFormat.I420, new Size(640, 480), 30); + + Assert.That(info.StreamId, Is.EqualTo(0), "Should be same"); + } + + [Test] + [Category("P1")] + [Description("Check whether Format returns expected value or not.")] + [Property("SPEC", "Tizen.Multimedia.ExtraPreviewStreamInfo.Format A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void Format_READ_ONLY() + { + var info = new ExtraPreviewStreamInfo(0, CameraPixelFormat.I420, new Size(640, 480), 30); + + Assert.That(info.Format, Is.EqualTo(CameraPixelFormat.I420), "Should be same"); + } + + [Test] + [Category("P1")] + [Description("Check whether Size returns expected value or not.")] + [Property("SPEC", "Tizen.Multimedia.ExtraPreviewStreamInfo.Size A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void Size_READ_ONLY() + { + var info = new ExtraPreviewStreamInfo(0, CameraPixelFormat.I420, new Size(640, 480), 30); + + Assert.That(info.Size.Width, Is.EqualTo(640), "Should be same"); + Assert.That(info.Size.Height, Is.EqualTo(480), "Should be same"); + } + + [Test] + [Category("P1")] + [Description("Check whether Fps returns expected value or not.")] + [Property("SPEC", "Tizen.Multimedia.ExtraPreviewStreamInfo.Fps A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void Fps_READ_ONLY() + { + var info = new ExtraPreviewStreamInfo(0, CameraPixelFormat.I420, new Size(640, 480), 30); + + Assert.That(info.Fps, Is.EqualTo(30), "Should be same"); + } + + [Test] + [Category("P1")] + [Description("Check whether ToString returns expected value or not.")] + [Property("SPEC", "Tizen.Multimedia.ExtraPreviewStreamInfo.ToString M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "MR")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + public void ToString_CHECK_VALUE() + { + var info = new ExtraPreviewStreamInfo(0, CameraPixelFormat.I420, new Size(640, 480), 30); + + Assert.That($"StreamId:{0}, Format:{CameraPixelFormat.I420}, Resolution:{640}x{480}, Fps:{30}", + Is.EqualTo(info.ToString()), "Should be same"); + } + } +} diff --git a/tct-suite-vs/Tizen.Multimedia.Manual.Tests/testcase/Camera/TSCameraDeviceConnectionChangedEventArgs.cs b/tct-suite-vs/Tizen.Multimedia.Manual.Tests/testcase/Camera/TSCameraDeviceConnectionChangedEventArgs.cs new file mode 100755 index 0000000..df86552 --- /dev/null +++ b/tct-suite-vs/Tizen.Multimedia.Manual.Tests/testcase/Camera/TSCameraDeviceConnectionChangedEventArgs.cs @@ -0,0 +1,88 @@ +using System.Reflection; +using System.Security.Cryptography; +using NUnit.Framework; +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace Tizen.Multimedia.Tests +{ + [TestFixture] + [Description("Testing CameraDeviceConnectionChangedEventArgs class")] + public class CameraDeviceConnectionChangedEventArgsTests : CameraTestBase + { + [Test] + [Category("P1")] + [Description("MANUAL TEST : Check CameraDeviceInformation property of CameraDeviceConnectionChangedEventArgs.")] + [Property("SPEC", "Tizen.Multimedia.CameraDeviceConnectionChangedEventArgs.CameraDeviceInformation A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + [Precondition(1, "Removable external camera device should be connected.")] + [Step(1, "Click run TC")] + [Step(2, "Disconnect camera device.")] + [Step(3, "If CameraDeviceInformation is created, test will be passed.")] + [Postcondition(1, "NA")] + public async Task CameraDeviceInformation_CHECK_EVENT() + { + CameraDeviceManager cameraDeviceManager = null; + + try + { + cameraDeviceManager = new CameraDeviceManager(); + } + catch (NotSupportedException) + { + await NotSupportedHelper.DisplayNotSupportedLabel("CameraDeviceManager"); + Assert.Pass("CameraDeviceManager is not supported"); + } + + cameraDeviceManager.DeviceConnectionChanged += (s, e) => + { + Assert.IsInstanceOf(e.CameraDeviceInformation, + "The result should be of type CameraDeviceInformation."); + + ManualTest.Confirm(); + }; + + await ManualTest.WaitForConfirm(); + } + + [Test] + [Category("P1")] + [Description("MANUAL TEST : Check IsConnected property of CameraDeviceConnectionChangedEventArgs.")] + [Property("SPEC", "Tizen.Multimedia.CameraDeviceConnectionChangedEventArgs.IsConnected A")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "PRO")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + [Precondition(1, "Removable external camera device should be connected.")] + [Step(1, "Click run TC")] + [Step(2, "Disconnect camera device.")] + [Step(3, "If CameraDeviceInformation is created, test will be passed.")] + [Postcondition(1, "NA")] + public async Task IsConnected_CHECK_EVENT() + { + CameraDeviceManager cameraDeviceManager = null; + + try + { + cameraDeviceManager = new CameraDeviceManager(); + } + catch (NotSupportedException) + { + await NotSupportedHelper.DisplayNotSupportedLabel("CameraDeviceManager"); + Assert.Pass("CameraDeviceManager is not supported"); + } + + cameraDeviceManager.DeviceConnectionChanged += (s, e) => + { + if (e.IsConnected == false) + { + ManualTest.Confirm(); + } + }; + + await ManualTest.WaitForConfirm(); + } + } +} diff --git a/tct-suite-vs/Tizen.Multimedia.Manual.Tests/testcase/Camera/TSCameraDeviceManager.cs b/tct-suite-vs/Tizen.Multimedia.Manual.Tests/testcase/Camera/TSCameraDeviceManager.cs new file mode 100755 index 0000000..535d4e5 --- /dev/null +++ b/tct-suite-vs/Tizen.Multimedia.Manual.Tests/testcase/Camera/TSCameraDeviceManager.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Security.Cryptography; +using NUnit.Framework; +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace Tizen.Multimedia.Tests +{ + [TestFixture] + [Description("Testing CameraDeviceManager class")] + public class CameraDeviceManagerTests : CameraTestBase + { + [Test] + [Category("P1")] + [Description("MANUAL TEST : Check whether DeviceConnectionChanged event is invoked or not.")] + [Property("SPEC", "Tizen.Multimedia.CameraDeviceManager.DeviceConnectionChanged M")] + [Property("SPEC_URL", "-")] + [Property("CRITERIA", "EVL")] + [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")] + [Precondition(1, "Removable external camera device should be connected.")] + [Step(1, "Click run TC")] + [Step(2, "Disconnect camera device.")] + [Step(3, "If DeviceConnectionChanged event is invoked, test will be passed.")] + [Postcondition(1, "NA")] + public async Task DeviceConnectionChanged_CHECK_EVENT() + { + CameraDeviceManager cameraDeviceManager = null; + + try + { + cameraDeviceManager = new CameraDeviceManager(); + } + catch (NotSupportedException) + { + await NotSupportedHelper.DisplayNotSupportedLabel("CameraDeviceManager"); + Assert.Pass("CameraDeviceManager is not supported"); + } + + cameraDeviceManager.DeviceConnectionChanged += (s, e) => + { + ManualTest.Confirm(); + }; + + await ManualTest.WaitForConfirm(); + } + } +} -- 2.7.4