[Camera][Non-ACR] refactoring 99/174099/1
authorHaesu Gwon <haesu.gwon@samsung.com>
Tue, 27 Mar 2018 05:17:35 +0000 (14:17 +0900)
committerLee Sanghoon <shooney.lee@samsung.com>
Wed, 28 Mar 2018 05:47:13 +0000 (05:47 +0000)
Change-Id: Ib5a8b8eb61df707ce826fb519c6883bb3f09f535
Signed-off-by: Haesu Gwon <haesu.gwon@samsung.com>
(cherry picked from commit d2f5e1a04e9c90f6295a4c063832b952246b0a28)

21 files changed:
tct-suite-vs/Tizen.Camera.Tests/Tizen.Camera.Tests.csproj
tct-suite-vs/Tizen.Camera.Tests/testcase/TSCamera.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraCapabilities.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraCapturingEventArgs.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDeviceStateChangedEventArgs.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraDisplaySettings.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraSettings.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSCameraStateChangedEventArgs.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSDoublePlane.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.Camera.Tests/testcase/TSEncodedPlane.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.Camera.Tests/testcase/TSHdrCaptureProgressEventArgs.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSLocation.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSMediaPacketPreviewEventArgs.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSPreviewEventArgs.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSPreviewFrame.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSSinglePlane.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.Camera.Tests/testcase/TSStillImage.cs
tct-suite-vs/Tizen.Camera.Tests/testcase/TSTriplePlane.cs [changed mode: 0755->0644]
tct-suite-vs/Tizen.Camera.Tests/testcase/support/CameraTestSupport.cs [deleted file]
tct-suite-vs/Tizen.Camera.Tests/testcase/support/Features.cs [new file with mode: 0755]
tct-suite-vs/Tizen.Camera.Tests/testcase/support/TestBase.cs [new file with mode: 0755]

index 5cb9eb0..f159eed 100755 (executable)
@@ -34,6 +34,7 @@
   <!-- Include Nuget Package for Tizen Project building -->
   <ItemGroup>
     <ProjectReference Include="..\Template\AutoTemplate\AutoTemplate.csproj" />
+    <ProjectReference Include="..\Tizen.Multimedia.Support.Library\Tizen.Multimedia.Support.Library.csproj" />
   </ItemGroup>
 
 </Project>
index 20c88aa..18a8718 100755 (executable)
@@ -12,149 +12,13 @@ using System.Linq;
 using System.Collections;
 using System.Threading;
 using System.Threading.Tasks;
-using Tizen.System;
 
 namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.Camera class")]
-    public static class CameraTests
+    public class CameraTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _hdrFlag = false;
-        private static bool _previewFlag = false;
-        private static bool _mediaPreviewFlag = false;
-        private static bool _capturingFlag = false;
-        private static bool _captureCompletedFlag = false;
-        private static bool _stateFlag = false;
-        private static bool _deviceStateFlag = false;
-        private static bool _isCameraSupported = true;
-
-        [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-                _camera.Settings.PreviewPixelFormat = _camera.Capabilities.SupportedPreviewPixelFormats.FirstOrDefault();
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _hdrFlag = false;
-            _previewFlag = false;
-            _mediaPreviewFlag = false;
-            _capturingFlag = false;
-            _captureCompletedFlag = false;
-            _stateFlag = false;
-            _deviceStateFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        private static bool CheckSecondaryCameraSupport()
-        {
-            Information.TryGetValue("http://tizen.org/feature/camera.front", out bool isSecondaryCameraSupported);
-
-            return isSecondaryCameraSupported;
-        }
-
-        public static void PreviewCallback(object sender, PreviewEventArgs e)
-        {
-            _previewFlag = true;
-        }
-
-        public static void CapturingCallback(object sender, CameraCapturingEventArgs e)
-        {
-            Assert.AreEqual((int)CameraState.Capturing, (int)_camera.State, "Camera should be in capturing state.");
-            _capturingFlag = true;
-        }
-
-        public static void CaptureCompletedCallback(object sender, EventArgs e)
-        {
-            Assert.AreEqual((int)CameraState.Captured, (int)_camera.State, "Camera should be in captured state.");
-            _captureCompletedFlag = true;
-        }
-
-        public static void HdrCallback(object sender, HdrCaptureProgressEventArgs e)
-        {
-            if (e.Percent > 0)
-                _hdrFlag = true;
-        }
-
-        public static void StateChangedCallback(object sender, CameraStateChangedEventArgs e)
-        {
-            if (e.Previous == CameraState.Created && e.Current == CameraState.Preview)
-            {
-                _stateFlag = true;
-            }
-        }
-
-        public static void DeviceStateChangedCallback(object sender, CameraDeviceStateChangedEventArgs e)
-        {
-            Log.Info(LogTag, "First DeviceStateChangedCallback is occured. : " + e.State.ToString());
-            if (e.Device == CameraDevice.Rear && e.State == CameraDeviceState.Working)
-                _deviceStateFlag = true;
-        }
-
-        public static void MediaPacketPreviewCallback(object sender, MediaPacketPreviewEventArgs e)
-        {
-            _mediaPreviewFlag = true;
-            e.Packet.Dispose();
-        }
-
-        public static void ErrorCallback(object sender, CameraErrorOccurredEventArgs e)
-        {
-            Log.Info(LogTag, "[Enter]");
-        }
-
-        public static void InterruptCallback(object sender, CameraInterruptedEventArgs e)
-        {
-            Log.Info(LogTag, "[Enter]");
-        }
-
-        public static void InterruptStartedCallback(object sender, CameraInterruptStartedEventArgs e)
-        {
-            Log.Info(LogTag, "[Enter]");
-        }
-
         [Test]
         [Category("P1")]
         [Description("Test : Camera Constructor for rear camera - Object should not be null after initializing")]
@@ -164,13 +28,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek ellur, vivek.ellur@samsung.com")]
         public static void Camera_Rear_INIT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "Object should not be null after initializing");
-
-            /* TESTCODE */
-            Assert.IsInstanceOf<Camera>(_camera, "Should return camera instance");
+            Assert.IsInstanceOf<Camera>(TestCamera, "Should return camera instance");
         }
 
         [Test]
@@ -182,17 +40,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek ellur, vivek.ellur@samsung.com")]
         public static void Camera_front_INIT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             // Some profiles don't support secondary camera.
-            if (!CheckSecondaryCameraSupport())
+            if (IsSupportedSecondaryCamera() == false)
             {
                 Assert.Pass("Secondary Camera is not supported.");
             }
 
-            /* TESTCODE */
             using (Camera camera = new Camera(CameraDevice.Front))
             {
                 Assert.IsNotNull(camera, "Object should not be null after initializing");
@@ -209,45 +62,24 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task GetDeviceState_ENUM_ALL()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            /* TESTCODE
-            * Check NotOpened State.
-            */
-            CameraDeviceState state = CameraDeviceState.NotOpened;
-
-            // Some profiles don't support secondary camera.
-            if (CheckSecondaryCameraSupport())
+            // Check NotOpened State for secondary camera.
+            if (IsSupportedSecondaryCamera())
             {
-                state = Camera.GetDeviceState(CameraDevice.Front);
-                Assert.AreEqual((int)CameraDeviceState.NotOpened, (int)state, "Front camera should be in NotOpened state.");
+                Assert.That(Camera.GetDeviceState(CameraDevice.Front), Is.EqualTo(CameraDeviceState.NotOpened));
             }
 
-            /* TESTCODE
-             * Check NotOpened State.
-             */
-            state = Camera.GetDeviceState(CameraDevice.Rear);
-            Log.Info(LogTag, "state " + state.ToString());
-            Assert.AreEqual((int)CameraDeviceState.NotOpened, (int)state, "Rear camera should be in NotOpened state.");
+            // Check NotOpened State.
+            Assert.That(Camera.GetDeviceState(CameraDevice.Rear), Is.EqualTo(CameraDeviceState.NotOpened));
 
             /* Opened state cannot be tested.
              * DeviceState is internally translated from NotOpened state to Working state after calling StartPreview method.
              */
 
-            /* TESTCODE
-             * Check Working State.
-             */
-            _camera.StartPreview();
+            // Check Working State.
+            TestCamera.StartPreview();
             await Task.Delay(500);
 
-            state = Camera.GetDeviceState(CameraDevice.Rear);
-            Log.Info(LogTag, "state " + state.ToString() + (int)state);
-            Assert.AreEqual((int)CameraDeviceState.Working, (int)state, "Rear camera should be in Working state.");
-
-            _camera.StopPreview();
+            Assert.That(Camera.GetDeviceState(CameraDevice.Rear), Is.EqualTo(CameraDeviceState.Working));
         }
 
         [Test]
@@ -259,10 +91,6 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void GetDeviceState_THROWS_IF_PARAM_IS_INVALID()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             Assert.Throws<ArgumentException>(() => Camera.GetDeviceState((CameraDevice)2));
         }
 
@@ -275,21 +103,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ChangeDevice_ENUM_DEVICE_REAR()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            // Some profiles don't support secondary camera.
-            if (!CheckSecondaryCameraSupport())
+            if (IsSupportedSecondaryCamera() == false)
             {
                 Assert.Pass("Secondary Camera is not supported.");
             }
 
             using (Camera camera = new Camera(CameraDevice.Front))
             {
-                /* TESTCODE */
                 camera.ChangeDevice(CameraDevice.Rear);
-                Assert.AreEqual((int)camera.State, (int)CameraState.Created, "Rear camera should be in created state.");
+                Assert.That(camera.State, Is.EqualTo(CameraState.Created));
             }
         }
 
@@ -302,19 +124,14 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ChangeDevice_ENUM_DEVICE_FRONT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            // Some profiles don't support secondary camera.
-            if (!CheckSecondaryCameraSupport())
+            if (IsSupportedSecondaryCamera() == false)
             {
                 Assert.Pass("Secondary Camera is not supported.");
             }
 
             using (Camera camera = new Camera(CameraDevice.Front))
             {
-                Assert.AreEqual((int)camera.State, (int)CameraState.Created, "Front camera should be in created state.");
+                Assert.That(camera.State, Is.EqualTo(CameraState.Created));
             }
         }
 
@@ -327,14 +144,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void ChangeDevice_THROWS_IF_PARAM_IS_INVALID()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE
-             * Set invalid parameter(2) to ChangeDevice for invoking ArgumentException
-             */
-            Assert.Throws<ArgumentException>(() => _camera.ChangeDevice((CameraDevice)2));
+            Assert.Throws<ArgumentException>(() => TestCamera.ChangeDevice((CameraDevice)2));
         }
 
         [Test]
@@ -346,17 +156,17 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task StopPreview_CHECK_STATE()
         {
-            Log.Info(LogTag, "[Enter]");
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
+            {
+                TestCamera.Preview += eventWaiter;
 
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
+                TestCamera.StartPreview();
 
-            _camera.StartPreview();
-            await Task.Delay(500);
+                await eventWaiter.IsRaisedAsync();
+            }
 
-            /* TESTCODE */
-            _camera.StopPreview();
-            Assert.AreEqual((int)CameraState.Created, (int)_camera.State, "The camera should be in created state.");
+            TestCamera.StopPreview();
+            Assert.That(TestCamera.State, Is.EqualTo(CameraState.Created));
         }
 
         [Test]
@@ -369,41 +179,33 @@ namespace Tizen.Multimedia.Tests
         [Property("COVPARAM", "int, int, CancellationToken")]
         public static async Task StartCapture_CHANGE_STATUS()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.StartPreview();
-
-            bool isContinuousCaptureSupported = false;
-            isContinuousCaptureSupported = _camera.Capabilities.IsContinuousCaptureSupported;
-
-            CancellationTokenSource tokenSource = new CancellationTokenSource();
+            TestCamera.StartPreview();
 
-            try
-            {
-                _camera.StartCapture(10, 100, tokenSource.Token);
-                await Task.Delay(500);
-            }
-            catch (NotSupportedException)
+            using (var tokenSource = new CancellationTokenSource())
             {
-                if (isContinuousCaptureSupported)
-                    Assert.Fail("Continuous capture is failed.");
-                else
-                    Assert.Pass("Continuous capture feature is not supported.");
-            }
-            catch (Exception ex)
-            {
-                Assert.Fail("Continuous capture is failed. Msg : " + ex.ToString());
-            }
+                try
+                {
+                    TestCamera.StartCapture(10, 100, tokenSource.Token);
+                    await Task.Delay(1000);
+                }
+                catch (NotSupportedException)
+                {
+                    if (TestCamera.Capabilities.IsContinuousCaptureSupported)
+                        Assert.Fail("Continuous capture is failed.");
+                    else
+                        Assert.Pass("Continuous capture feature is not supported.");
+                }
+                catch (Exception ex)
+                {
+                    Assert.Fail("Continuous capture is failed. Msg : " + ex.ToString());
+                }
 
-            /* TESTCODE */
-            tokenSource.Cancel();
-            await Task.Delay(500);
+                /* TESTCODE */
+                tokenSource.Cancel();
+                await Task.Delay(500);
 
-            Assert.AreEqual((int)CameraState.Captured, (int)_camera.State, "The camera should be in captured state.");
-            tokenSource.Dispose();
+                Assert.That(TestCamera.State, Is.EqualTo(CameraState.Captured));
+            }
         }
 
         [Test]
@@ -416,57 +218,46 @@ namespace Tizen.Multimedia.Tests
         [Property("COVPARAM", "int, int, CancellationToken")]
         public static async Task StartCapture_INVALID_OP_EXCEPTION()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.StartPreview();
+            TestCamera.StartPreview();
 
-            bool isContinuousCaptureSupported = false;
-            isContinuousCaptureSupported = _camera.Capabilities.IsContinuousCaptureSupported;
-
-            CancellationTokenSource tokenSource = new CancellationTokenSource();
-
-            try
-            {
-                _camera.StartCapture(3, 100, tokenSource.Token);
-                await Task.Delay(2000);
-            }
-            catch (NotSupportedException)
-            {
-                if (isContinuousCaptureSupported)
-                    Assert.Fail("Continuous capture is failed.");
-                else
-                    Assert.Pass("Continuous capture feature is not supported.");
-            }
-            catch (Exception ex)
+            using (var tokenSource = new CancellationTokenSource())
             {
-                Assert.Fail("Continuous capture is failed. Msg : " + ex.ToString());
-            }
+                try
+                {
+                    TestCamera.StartCapture(3, 100, tokenSource.Token);
+                    await Task.Delay(1000);
+                }
+                catch (NotSupportedException)
+                {
+                    if (TestCamera.Capabilities.IsContinuousCaptureSupported)
+                        Assert.Fail("Continuous capture is failed.");
+                    else
+                        Assert.Pass("Continuous capture feature is not supported.");
+                }
+                catch (Exception ex)
+                {
+                    Assert.Fail("Continuous capture is failed. Msg : " + ex.ToString());
+                }
 
-            /* TESTCODE */
-            try
-            {
-                tokenSource.Cancel();
-            }
-            catch (AggregateException ex)
-            {
-                ex.Handle((x) =>
+                /* TESTCODE */
+                try
+                {
+                    tokenSource.Cancel();
+                }
+                catch (AggregateException ex)
                 {
-                    if (x is InvalidOperationException)
+                    ex.Handle((x) =>
                     {
-                        Assert.Pass("Proper exception is occured.");
-                        return true;
-                    }
-
-                    Assert.Fail("Proper exception is not occured.");
-                    return false;
-                });
-            }
-            finally
-            {
-                tokenSource.Dispose();
+                        if (x is InvalidOperationException)
+                        {
+                            Assert.Pass("Proper exception is occured.");
+                            return true;
+                        }
+
+                        Assert.Fail("Proper exception is not occured.");
+                        return false;
+                    });
+                }
             }
         }
 
@@ -479,22 +270,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void StopFaceDetection_NO_EXCEPTION()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.StartPreview();
-
-            bool isSupportedFaceDetection = _camera.Capabilities.IsFaceDetectionSupported;
+            TestCamera.StartPreview();
 
             try
             {
-                _camera.StartFaceDetection();
+                TestCamera.StartFaceDetection();
             }
             catch (NotSupportedException)
             {
-                if (isSupportedFaceDetection)
+                if (TestCamera.Capabilities.IsFaceDetectionSupported)
                     Assert.Fail("Face Detection feature is supported. But StartFaceDetection returns NotSupportedException.");
                 else
                     Assert.Pass("Face Detection feature is not supported.");
@@ -503,7 +287,7 @@ namespace Tizen.Multimedia.Tests
             /* TESTCODE */
             try
             {
-                _camera.StopFaceDetection();
+                TestCamera.StopFaceDetection();
             }
             catch
             {
@@ -520,28 +304,23 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void StopFocusing_NO_EXCEPTION()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
             bool isAfModeSupported = false;
-            IList afModes = _camera.Capabilities.SupportedAutoFocusModes.ToList();
+            IList afModes = TestCamera.Capabilities.SupportedAutoFocusModes.ToList();
             foreach (CameraAutoFocusMode afMode in afModes)
             {
                 if (afMode != CameraAutoFocusMode.None)
                 {
-                    _camera.Settings.AutoFocusMode = afMode;
+                    TestCamera.Settings.AutoFocusMode = afMode;
                     isAfModeSupported = true;
                     break;
                 }
             }
 
-            _camera.StartPreview();
+            TestCamera.StartPreview();
 
             try
             {
-                _camera.StartFocusing(true);
+                TestCamera.StartFocusing(true);
             }
             catch (NotSupportedException)
             {
@@ -554,7 +333,7 @@ namespace Tizen.Multimedia.Tests
             /* TESTCODE */
             try
             {
-                _camera.StopFocusing();
+                TestCamera.StopFocusing();
             }
             catch
             {
@@ -571,24 +350,19 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task State_GET_ENUM_ALL()
         {
-            Log.Info(LogTag, "[Enter]");
+            Assert.That(TestCamera.State, Is.EqualTo(CameraState.Created));
 
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-            _camera.Capturing += CapturingCallback;
-            _camera.CaptureCompleted += CaptureCompletedCallback;
+            TestCamera.StartPreview();
+            Assert.That(TestCamera.State, Is.EqualTo(CameraState.Preview));
 
-            /* TESTCODE */
-            Assert.AreEqual((int)CameraState.Created, (int)_camera.State, "Camera should be in created state.");
+            using (var eventWaiter = EventAwaiter<EventArgs>.Create())
+            {
+                TestCamera.CaptureCompleted += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            Assert.AreEqual((int)CameraState.Preview, (int)_camera.State, "Camera should be in preview state.");
+                TestCamera.StartCapture();
 
-            /* TESTCODE */
-            _camera.StartCapture();
-            await Task.Delay(1000);
-            Assert.IsTrue(_capturingFlag && _captureCompletedFlag, "Capturing and CaptureCompleted callback should be invoked.");
+                Assert.That(await eventWaiter.IsRaisedAsync());
+            }
         }
 
         [Test]
@@ -600,17 +374,18 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task DisplayReuseHint_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
+            {
+                TestCamera.Preview += eventWaiter;
 
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-            _camera.StartPreview();
-            await Task.Delay(500);
+                TestCamera.StartPreview();
 
-            /* TESTCODE */
-            _camera.DisplayReuseHint = true;
-            Assert.IsNotNull(_camera.DisplayReuseHint, "display reuse hint should not be null.");
-            Assert.IsTrue(_camera.DisplayReuseHint, "display reuse hint is not same as set value.");
+                await eventWaiter.IsRaisedAsync();
+            }
+
+            TestCamera.DisplayReuseHint = true;
+            Assert.IsNotNull(TestCamera.DisplayReuseHint, "display reuse hint should not be null.");
+            Assert.IsTrue(TestCamera.DisplayReuseHint, "display reuse hint is not same as set value.");
         }
 
         [Test]
@@ -622,32 +397,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void Display_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE
-             * Test Overlay Display Type.
-             */
-            try
-            {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-            }
-            catch (NotSupportedException)
-            {
-                Assert.Pass("Overlay display type is not supported.");
-            }
-            catch
-            {
-                Assert.Fail("Set display for overlay type is failed.");
-            }
-
             /* TESTCODE
              * Test Surface Display Type.
+             * Overlay type is tested always in TestBase.SetUpBase()
              */
             try
             {
-                CameraTestSupport.SetDisplaySurface(_camera);
+                TestCamera.Display = new Display(new MediaView(CreateWindow()));
             }
             catch (NotSupportedException)
             {
@@ -668,12 +424,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Settings_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Settings;
+            var result = TestCamera.Settings;
             Assert.IsNotNull(result, "setting should not be null");
             Assert.IsInstanceOf<CameraSettings>(result, "The object should be of type CameraSettings.");
         }
@@ -687,12 +438,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Capabilities_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities;
+            var result = TestCamera.Capabilities;
             Assert.IsNotNull(result, "feature should not be null");
             Assert.IsInstanceOf<CameraCapabilities>(result, "The object should be of type CameraCapabilities.");
         }
@@ -706,12 +452,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void DisplaySettings_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.DisplaySettings;
+            var result = TestCamera.DisplaySettings;
             Assert.IsNotNull(result, "DisplaySettings should not be null");
             Assert.IsInstanceOf<CameraDisplaySettings>(result, "The object should be of type DisplaySettings.");
         }
@@ -725,12 +466,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Direction_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            CameraFacingDirection direction = _camera.Direction;
+            CameraFacingDirection direction = TestCamera.Direction;
             Assert.IsNotNull(direction, "Camera direction should not be null.");
             Assert.IsInstanceOf<CameraFacingDirection>(direction, "The object should be of type CameraFacingDirection.");
         }
@@ -744,11 +480,6 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void GetFlashState_NO_EXCEPTION()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             try
             {
                 CameraFlashState state = Camera.GetFlashState(CameraDevice.Rear);
@@ -770,12 +501,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void CameraCount_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.CameraCount;
+            var result = TestCamera.CameraCount;
             Assert.IsInstanceOf<int>(result, "The value should be of type int.");
             Assert.IsTrue(result > 0, "Wrong CameraCount value for Camera");
         }
@@ -789,27 +515,21 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task HdrCaptureProgress_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool hdrCaptureSupport = _camera.Capabilities.IsHdrCaptureSupported;
-
-            /* TESTCODE */
-            if (hdrCaptureSupport)
+            if (TestCamera.Capabilities.IsHdrCaptureSupported == false)
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.StartPreview();
+                Assert.Pass("HDR feature is not supported.");
+            }
 
-                _camera.Capturing += CapturingCallback;
-                _camera.CaptureCompleted += CaptureCompletedCallback;
-                _camera.Settings.HdrMode = CameraHdrMode.Enable;
-                _camera.HdrCaptureProgress += HdrCallback;
+            using (var eventWaiter = EventAwaiter<HdrCaptureProgressEventArgs>.Create())
+            {
+                TestCamera.Settings.HdrMode = CameraHdrMode.Enable;
+                TestCamera.HdrCaptureProgress += eventWaiter;
 
-                _camera.StartCapture();
-                await Task.Delay(2000);
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-                Assert.IsTrue(_hdrFlag, "HDR progress should be bigger than 0.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Percent, Is.GreaterThan(0), "HDR progress should be bigger than 0.");
             }
         }
 
@@ -822,27 +542,17 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Capturing_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
-            CameraTestSupport.SetDisplayOverlay(_camera);
+            using (var eventWaiter = EventAwaiter<CameraCapturingEventArgs>.Create())
+            {
+                TestCamera.Settings.ImageQuality = 100;
+                TestCamera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
+                TestCamera.Capturing += eventWaiter;
 
-            _camera.Capturing += CapturingCallback;
-            _camera.CaptureCompleted += CaptureCompletedCallback;
-            _camera.Settings.ImageQuality = 100;
-            _camera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            _camera.StartCapture();
-            await Task.Delay(2000);
-            Assert.IsTrue(_capturingFlag, "Callback should be occurred.");
-
-            /* POSTCONDITION */
-            _camera.Capturing -= CapturingCallback;
-            _camera.CaptureCompleted -= CaptureCompletedCallback;
+                Assert.That(await eventWaiter.IsRaisedAsync());
+            }
         }
 
         [Test]
@@ -854,27 +564,17 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task CaptureCompleted_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
-            CameraTestSupport.SetDisplayOverlay(_camera);
+            using (var eventWaiter = EventAwaiter<EventArgs>.Create())
+            {
+                TestCamera.Settings.ImageQuality = 100;
+                TestCamera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
+                TestCamera.CaptureCompleted += eventWaiter;
 
-            _camera.Capturing += CapturingCallback;
-            _camera.CaptureCompleted += CaptureCompletedCallback;
-            _camera.Settings.ImageQuality = 100;
-            _camera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            _camera.StartCapture();
-            await Task.Delay(2000);
-            Assert.IsTrue(_captureCompletedFlag, "Callback should be occurred.");
-
-            /* POSTCONDITION */
-            _camera.Capturing -= CapturingCallback;
-            _camera.CaptureCompleted -= CaptureCompletedCallback;
+                Assert.That(await eventWaiter.IsRaisedAsync());
+            }
         }
 
         [Test]
@@ -886,23 +586,14 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task StateChanged_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            // PRECONDITION
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.StateChanged += StateChangedCallback;
+            using (var eventWaiter = EventAwaiter<CameraStateChangedEventArgs>.Create())
+            {
+                TestCamera.StateChanged += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
-            Assert.IsTrue(_stateFlag, "Preview Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.StateChanged -= StateChangedCallback;
+                Assert.That(await eventWaiter.IsRaisedAsync());
+            }
         }
 
         [Test]
@@ -914,20 +605,14 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task DeviceStateChanged_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            /* TESTCODE */
-            Camera.DeviceStateChanged += DeviceStateChangedCallback;
-            _camera.StartPreview();
-            await Task.Delay(500);
+            using (var eventWaiter = EventAwaiter<CameraDeviceStateChangedEventArgs>.Create())
+            {
+                Camera.DeviceStateChanged += eventWaiter;
 
-            Assert.IsTrue(_deviceStateFlag, "The device state flag should be true.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            Camera.DeviceStateChanged -= DeviceStateChangedCallback;
+                Assert.That(await eventWaiter.IsRaisedAsync());
+            }
         }
 
         [Test]
@@ -939,24 +624,17 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void Interrupted_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            /* PRECONDITION */
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
-
-            /* TESTCODE */
-            try
+            using (var eventWaiter = EventAwaiter<CameraInterruptedEventArgs>.Create())
             {
-                _camera.Interrupted += InterruptCallback;
-            }
-            catch (Exception e)
-            {
-                Assert.Fail("Exception is occured. msg : " + e.ToString());
+                try
+                {
+                    TestCamera.Interrupted += eventWaiter;
+                }
+                catch (Exception ex)
+                {
+                    Assert.Fail("Exception is occured. msg : " + ex.ToString());
+                }
             }
-
-            /* POSTCONDITION */
-            _camera.Interrupted -= InterruptCallback;
         }
 
         [Test]
@@ -968,24 +646,17 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void InterruptStarted_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            /* PRECONDITION */
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
-
-            /* TESTCODE */
-            try
-            {
-                _camera.InterruptStarted += InterruptStartedCallback;
-            }
-            catch (Exception e)
+            using (var eventWaiter = EventAwaiter<CameraInterruptStartedEventArgs>.Create())
             {
-                Assert.Fail("Exception is occured. msg : " + e.ToString());
+                try
+                {
+                    TestCamera.InterruptStarted += (s, e) => { };
+                }
+                catch (Exception ex)
+                {
+                    Assert.Fail("Exception is occured. msg : " + ex.ToString());
+                }
             }
-
-            /* POSTCONDITION */
-            _camera.InterruptStarted -= InterruptStartedCallback;
         }
 
         [Test]
@@ -997,24 +668,17 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void ErrorOccurred_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            /* PRECONDITION */
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
-
-            /* TESTCODE */
-            try
+            using (var eventWaiter = EventAwaiter<CameraErrorOccurredEventArgs>.Create())
             {
-                _camera.ErrorOccurred += ErrorCallback;
-            }
-            catch (Exception e)
-            {
-                Assert.Fail("Exception is occured. msg : " + e.ToString());
+                try
+                {
+                    TestCamera.ErrorOccurred += (s, e) => { };
+                }
+                catch (Exception ex)
+                {
+                    Assert.Fail("Exception is occured. msg : " + ex.ToString());
+                }
             }
-
-            /* POSTCONDITION */
-            _camera.ErrorOccurred -= ErrorCallback;
         }
 
         [Test]
@@ -1026,22 +690,14 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Preview_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            /* PRECONDITION */
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.Preview += PreviewCallback;
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
+            {
+                TestCamera.Preview += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
-            Assert.IsTrue(_previewFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.Preview -= PreviewCallback;
+                Assert.That(await eventWaiter.IsRaisedAsync());
+            }
         }
 
         [Test]
@@ -1053,34 +709,21 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task MediaPacketPreview_CHECK_EVENT()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            /* PRECONDITION */
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            bool isMediaPacketPreviewCallbackSupported = _camera.Capabilities.IsMediaPacketPreviewCallbackSupported;
-
-            try
+            if (TestCamera.Capabilities.IsMediaPacketPreviewCallbackSupported == false)
             {
-                _camera.MediaPacketPreview += MediaPacketPreviewCallback;
+                Assert.Pass("MediaPacketPreviewCallback feature is not supported.");
             }
-            catch (NotSupportedException)
+
+            using (var eventWaiter = EventAwaiter<MediaPacketPreviewEventArgs>.Create())
             {
-                if (isMediaPacketPreviewCallbackSupported)
-                    Assert.Fail("MediaPacketPreviewCallback feature is supported. But MediaPacketPreviewCallback returns NotSupportedException.");
-                else
-                    Assert.Pass("MediaPacketPreviewCallback feature is not supported.");
-            }
+                TestCamera.MediaPacketPreview += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
-            Assert.IsTrue(_mediaPreviewFlag, "MediaPacketPreview callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.MediaPacketPreview -= MediaPacketPreviewCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsNotNull(eventArgs.Packet);
+                eventArgs.Packet.Dispose();
+            }
         }
 
         [Test]
@@ -1092,13 +735,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void Handle_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
-
-            /* TESTCODE */
-            Assert.IsNotNull(_camera.Handle, "Failed to get Camera Handle.");
+            Assert.IsNotNull(TestCamera.Handle, "Failed to get Camera Handle.");
         }
 
         [Test]
@@ -1110,26 +747,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void Dispose_CHECK_STATE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera instance for testing.");
+            TestCamera.Dispose();
 
-            /* TESTCODE */
-            _camera.Dispose();
-
-            try
-            {
-                IntPtr handle = _camera.Handle;
-            }
-            catch (ObjectDisposedException)
-            {
-                Assert.Pass("Proper exception has been occured.");
-            }
-            catch (Exception e)
-            {
-                Assert.Fail("Camera instance dispose is failed." + e.ToString());
-            }
+            Assert.Throws<ObjectDisposedException>(() => { IntPtr handle = TestCamera.Handle; });
         }
     }
 }
index 858cf4f..0059d38 100755 (executable)
@@ -7,7 +7,6 @@
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
 using System.Linq;
 using System.Collections;
 
@@ -15,62 +14,8 @@ namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.CameraCapabilities class")]
-    public class CameraCapabilitiesTests
+    public class CameraCapabilitiesTests : TestBase
     {
-        private static Camera _camera = null;
-        public const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _isCameraSupported = true;
-
-        [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
         [Test]
         [Category("P1")]
         [Description("Check whether IsContinuousCaptureSupported returns null or not.")]
@@ -80,12 +25,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsContinuousCaptureSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsContinuousCaptureSupported;
+            var result = TestCamera.Capabilities.IsContinuousCaptureSupported;
             Assert.IsNotNull(result, "The IsContinuousCaptureSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -99,12 +39,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void IsExposureSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsExposureSupported;
+            var result = TestCamera.Capabilities.IsExposureSupported;
             Assert.IsNotNull(result, "The IsExposureSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -118,12 +53,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsFaceDetectionSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsFaceDetectionSupported;
+            var result = TestCamera.Capabilities.IsFaceDetectionSupported;
             Assert.IsNotNull(result, "The IsFaceDetectionSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -137,12 +67,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsZeroShutterLagSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsZeroShutterLagSupported;
+            var result = TestCamera.Capabilities.IsZeroShutterLagSupported;
             Assert.IsNotNull(result, "The IsZeroShutterLagSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -156,12 +81,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsZoomSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsZoomSupported;
+            var result = TestCamera.Capabilities.IsZoomSupported;
             Assert.IsNotNull(result, "The IsZoomSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -175,12 +95,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsMediaPacketPreviewCallbackSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsMediaPacketPreviewCallbackSupported;
+            var result = TestCamera.Capabilities.IsMediaPacketPreviewCallbackSupported;
             Assert.IsNotNull(result, "The IsMediaPacketPreviewCallbackSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -194,12 +109,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void IsPanSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsPanSupported;
+            var result = TestCamera.Capabilities.IsPanSupported;
             Assert.IsNotNull(result, "The IsPanSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -213,12 +123,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void IsTiltSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsTiltSupported;
+            var result = TestCamera.Capabilities.IsTiltSupported;
             Assert.IsNotNull(result, "The IsTiltSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -232,12 +137,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsHdrCaptureSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsHdrCaptureSupported;
+            var result = TestCamera.Capabilities.IsHdrCaptureSupported;
             Assert.IsNotNull(result, "The IsHdrCaptureSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -251,12 +151,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsAntiShakeSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsAntiShakeSupported;
+            var result = TestCamera.Capabilities.IsAntiShakeSupported;
             Assert.IsNotNull(result, "The IsAntiShakeSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -270,12 +165,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsVideoStabilizationSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsVideoStabilizationSupported;
+            var result = TestCamera.Capabilities.IsVideoStabilizationSupported;
             Assert.IsNotNull(result, "The IsVideoStabilizationSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -289,12 +179,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsAutoContrastSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsAutoContrastSupported;
+            var result = TestCamera.Capabilities.IsAutoContrastSupported;
             Assert.IsNotNull(result, "The IsAutoContrastSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -308,12 +193,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void IsBrigtnessSupported_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Capabilities.IsBrigtnessSupported;
+            var result = TestCamera.Capabilities.IsBrigtnessSupported;
             Assert.IsNotNull(result, "The IsBrigtnessSupported value should not be null.");
             Assert.IsInstanceOf<bool>(result, "The result should be of type boolean.");
         }
@@ -327,12 +207,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedPreviewResolutions_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedPreviewResolutions.ToList();
+            IList result = TestCamera.Capabilities.SupportedPreviewResolutions.ToList();
             Assert.IsNotNull(result, "The preview resolutions should not be null.");
             Assert.IsNotEmpty(result, "The preview resultions should not be empty.");
             Assert.Greater(result.Count, 0, "The preview resolution count should be greater than 0");
@@ -347,12 +222,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedCaptureResolutions_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedCaptureResolutions.ToList();
+            IList result = TestCamera.Capabilities.SupportedCaptureResolutions.ToList();
             Assert.IsNotNull(result, "The capture resolutions should not be null.");
             Assert.IsNotEmpty(result, "The capture resultions should not be empty.");
             Assert.Greater(result.Count, 0, "The capture resolution count should be greater than 0");
@@ -367,12 +237,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedCapturePixelFormats_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedCapturePixelFormats.ToList();
+            IList result = TestCamera.Capabilities.SupportedCapturePixelFormats.ToList();
             Assert.IsNotNull(result, "The CaptureFormats should not be null.");
             Assert.IsNotEmpty(result, "The CaptureFormats should not be empty.");
             Assert.Greater(result.Count, 0, "The CaptureFormats count should be greater than 0");
@@ -387,12 +252,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedPreviewPixelFormats_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
+            IList result = TestCamera.Capabilities.SupportedPreviewPixelFormats.ToList();
             Assert.IsNotNull(result, "The PreviewFormats should not be null.");
             Assert.IsNotEmpty(result, "The PreviewFormats should not be empty.");
             Assert.Greater(result.Count, 0, "The PreviewFormats count should be greater than 0");
@@ -407,12 +267,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedPreviewFps_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedPreviewFps.ToList();
+            IList result = TestCamera.Capabilities.SupportedPreviewFps.ToList();
             Assert.IsNotNull(result, "The Fps should not be null.");
             Assert.IsNotEmpty(result, "The Fps should not be empty.");
             Assert.Greater(result.Count, 0, "The Fps count should be greater than 0");
@@ -428,21 +283,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void GetSupportedPreviewFpsByResolution_INT_RETURN_TYPE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedPreviewResolutions.ToList();
-            foreach(Size resolution in result)
-            {
-                IList Fps = _camera.Capabilities.GetSupportedPreviewFpsByResolution(resolution.Width, resolution.Height).ToList();
-                foreach (CameraFps fps in Fps)
-                {
-                    Log.Info(LogTag, "Width " + resolution.Width.ToString() + " Height " + resolution.Height.ToString() + ", Supported fps " + fps.ToString());
-                }
-            }
-
+            IList result = TestCamera.Capabilities.SupportedPreviewResolutions.ToList();
             Assert.IsNotNull(result, "The FpsByResolution should not be null.");
             Assert.IsNotEmpty(result, "The FpsByResolution should not be empty.");
             Assert.Greater(result.Count, 0, "The FpsByResolution count should be greater than 0");
@@ -458,13 +299,8 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void GetSupportedPreviewFpsByResolution_SIZE_RETURN_TYPE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            Size res = _camera.Settings.RecommendedPreviewResolution;
-            IList result = _camera.Capabilities.GetSupportedPreviewFpsByResolution(res).ToList();
+            Size res = TestCamera.Settings.RecommendedPreviewResolution;
+            IList result = TestCamera.Capabilities.GetSupportedPreviewFpsByResolution(res).ToList();
 
             Assert.IsNotNull(result, "The FpsByResolution should not be null.");
             Assert.IsNotEmpty(result, "The FpsByResolution should not be empty.");
@@ -480,12 +316,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedAutoFocusModes_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedAutoFocusModes.ToList();
+            IList result = TestCamera.Capabilities.SupportedAutoFocusModes.ToList();
             Assert.IsNotNull(result, "The AfMode should not be null.");
             Assert.IsNotEmpty(result, "The AfMode should not be empty.");
             Assert.Greater(result.Count, 0, "The AfMode count should be greater than 0");
@@ -500,12 +331,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedExposureModes_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedExposureModes.ToList();
+            IList result = TestCamera.Capabilities.SupportedExposureModes.ToList();
             Assert.IsNotNull(result, "The ExposureMode should not be null.");
             Assert.IsNotEmpty(result, "The ExposureMode should not be empty.");
             Assert.Greater(result.Count, 0, "The ExposureMode count should be greater than 0");
@@ -520,12 +346,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedIsoLevels_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedIsoLevels.ToList();
+            IList result = TestCamera.Capabilities.SupportedIsoLevels.ToList();
             Assert.IsNotNull(result, "The IsoLevel should not be null.");
             Assert.IsNotEmpty(result, "The IsoLevel should not be empty.");
             Assert.Greater(result.Count, 0, "The IsoLevel count should be greater than 0");
@@ -540,12 +361,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedTheaterModes_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedTheaterModes.ToList();
+            IList result = TestCamera.Capabilities.SupportedTheaterModes.ToList();
             Assert.IsNotNull(result, "The TheaterMode should not be null.");
             Assert.IsNotEmpty(result, "The TheaterMode should not be empty.");
             Assert.Greater(result.Count, 0, "The TheaterMode count should be greater than 0");
@@ -560,12 +376,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedWhiteBalances_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedWhiteBalances.ToList();
+            IList result = TestCamera.Capabilities.SupportedWhiteBalances.ToList();
             Assert.IsNotNull(result, "The Whitebalance should not be null.");
             Assert.IsNotEmpty(result, "The Whitebalance should not be empty.");
             Assert.Greater(result.Count, 0, "The Whitebalance count should be greater than 0");
@@ -580,12 +391,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedFlashModes_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedFlashModes.ToList();
+            IList result = TestCamera.Capabilities.SupportedFlashModes.ToList();
             Assert.IsNotNull(result, "The FlashMode should not be null.");
             Assert.IsNotEmpty(result, "The FlashMode should not be empty.");
             Assert.Greater(result.Count, 0, "The FlashMode count should be greater than 0");
@@ -600,12 +406,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedSceneModes_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedSceneModes.ToList();
+            IList result = TestCamera.Capabilities.SupportedSceneModes.ToList();
             Assert.IsNotNull(result, "The SceneMode should not be null.");
             Assert.IsNotEmpty(result, "The SceneMode should not be empty.");
             Assert.Greater(result.Count, 0, "The SceneMode count should be greater than 0");
@@ -620,12 +421,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedEffects_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedEffects.ToList();
+            IList result = TestCamera.Capabilities.SupportedEffects.ToList();
             Assert.IsNotNull(result, "The Effect should not be null.");
             Assert.IsNotEmpty(result, "The Effect should not be empty.");
             Assert.Greater(result.Count, 0, "The Effect count should be greater than 0");
@@ -640,12 +436,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedStreamRotations_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedStreamRotations.ToList();
+            IList result = TestCamera.Capabilities.SupportedStreamRotations.ToList();
             Assert.IsNotNull(result, "The StreamRotation should not be null.");
             Assert.IsNotEmpty(result, "The StreamRotation should not be empty.");
             Assert.Greater(result.Count, 0, "The StreamRotation count should be greater than 0");
@@ -660,12 +451,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedStreamFlips_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList result = _camera.Capabilities.SupportedStreamFlips.ToList();
+            IList result = TestCamera.Capabilities.SupportedStreamFlips.ToList();
             Assert.IsNotNull(result, "The StreamFlip should not be null.");
             Assert.IsNotEmpty(result, "The StreamFlip should not be empty.");
             Assert.Greater(result.Count, 0, "The StreamFlip count should be greater than 0");
@@ -680,20 +466,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SupportedPtzTypes_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            if (_camera.Capabilities.IsPanSupported)
-            {
-                IList result = _camera.Capabilities.SupportedPtzTypes.ToList();
-                Assert.IsNotNull(result, "The PtzType should not be null.");
-            }
-            else
+            if (TestCamera.Capabilities.IsPanSupported == false)
             {
                 Assert.Pass("Ptz feature is not supported.");
             }
+
+            IList result = TestCamera.Capabilities.SupportedPtzTypes.ToList();
+            Assert.IsNotNull(result, "The PtzType should not be null.");
         }
     }
 }
index 5f60cc1..f14ed2e 100755 (executable)
@@ -7,84 +7,21 @@
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
 using System.Threading.Tasks;
 
 namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.CapturingEventArgs class")]
-    public class CameraCapturingEventArgsTests
+    public class CameraCapturingEventArgsTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _capturingFlag = false;
-        private static bool _isCameraSupported = true;
-
         [SetUp]
-        public static void Init()
+        public static void SetUp()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _capturingFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
+            TestCamera.Settings.ImageQuality = 100;
+            TestCamera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
         }
 
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void CapturingCallback(object sender, CameraCapturingEventArgs e)
-        {
-            if (e.MainImage != null)
-            {
-                // PostView & Thumbnail can be null
-                if (e.MainImage.Data.Length > 0 || e.PostView.Data.Length > 0 || e.Thumbnail.Data.Length > 0)
-                    _capturingFlag = true;
-            }
-        }
-
-        public static void CaptureCompleted(object sender, EventArgs e)
-        {
-        }
 
         [Test]
         [Category("P1")]
@@ -95,27 +32,16 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task MainImage_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.Capturing += CapturingCallback;
-            _camera.CaptureCompleted += CaptureCompleted;
-            _camera.Settings.ImageQuality = 100;
-            _camera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
-
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
+            using (var eventWaiter = EventAwaiter<CameraCapturingEventArgs>.Create())
+            {
+                TestCamera.Capturing += eventWaiter;
 
-            _camera.StartCapture();
-            await Task.Delay(2000);
-            Assert.IsTrue(_capturingFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-            /* POSTCONDITION */
-            _camera.Capturing -= CapturingCallback;
-            _camera.CaptureCompleted -= CaptureCompleted;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.MainImage.Data.Length, Is.GreaterThan(0));
+            }
         }
 
         [Test]
@@ -127,27 +53,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task PostView_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.Capturing += CapturingCallback;
-            _camera.CaptureCompleted += CaptureCompleted;
-            _camera.Settings.ImageQuality = 100;
-            _camera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
-
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
+            using (var eventWaiter = EventAwaiter<CameraCapturingEventArgs>.Create())
+            {
+                TestCamera.Capturing += eventWaiter;
 
-            _camera.StartCapture();
-            await Task.Delay(2000);
-            Assert.IsTrue(_capturingFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-            /* POSTCONDITION */
-            _camera.Capturing -= CapturingCallback;
-            _camera.CaptureCompleted -= CaptureCompleted;
+                Assert.That(await eventWaiter.IsRaisedAsync());
+            }
         }
 
         [Test]
@@ -159,25 +73,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Thumbnail_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.Capturing += CapturingCallback;
-            _camera.CaptureCompleted += CaptureCompleted;
-
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
+            using (var eventWaiter = EventAwaiter<CameraCapturingEventArgs>.Create())
+            {
+                TestCamera.Capturing += eventWaiter;
 
-            _camera.StartCapture();
-            await Task.Delay(2000);
-            Assert.IsTrue(_capturingFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-            /* POSTCONDITION */
-            _camera.Capturing -= CapturingCallback;
-            _camera.CaptureCompleted -= CaptureCompleted;
+                Assert.That(await eventWaiter.IsRaisedAsync());
+            }
         }
     }
 }
index a404e80..037f4ec 100755 (executable)
@@ -7,86 +7,15 @@
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
 using System.Threading.Tasks;
 
 namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.CameraDeviceStateChangedEventArgs class")]
-    public class CameraDeviceStateChangedEventArgsTests
+    public class CameraDeviceStateChangedEventArgsTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _deviceStateFlag = false;
-        private static bool _deviceStateFlag2 = false;
-        private static bool _isCameraSupported = true;
-
-        [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _deviceStateFlag = false;
-            _deviceStateFlag2 = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void DeviceStateChangedCallback(object sender, CameraDeviceStateChangedEventArgs e)
-        {
-            Log.Info(LogTag, "First DeviceStateChangedCallback is occured. : " + e.State.ToString());
-            if (e.Device == CameraDevice.Rear && e.State == CameraDeviceState.Working)
-                _deviceStateFlag = true;
-        }
-
-        public static void DeviceStateChangedCallback2(object sender, CameraDeviceStateChangedEventArgs e)
-        {
-            Log.Info(LogTag, "Second DeviceStateChangedCallback is occured. : " + e.State.ToString());
-            if (e.Device == CameraDevice.Rear && e.State == CameraDeviceState.Working)
-                _deviceStateFlag2 = true;
-        }
+        public static void DeviceStateChangedCallback(object sender, CameraDeviceStateChangedEventArgs e) { }
 
         [Test]
         [Category("P1")]
@@ -97,26 +26,18 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task Device_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            /* TESTCODE
-             * Check whether DeviceStateChangedEvent is occured correctly or not.
-             * Check whether proper eventHandler is removed or not.
-             */
             Camera.DeviceStateChanged += DeviceStateChangedCallback;
-            Camera.DeviceStateChanged += DeviceStateChangedCallback2;
-            Camera.DeviceStateChanged -= DeviceStateChangedCallback;
 
-            _camera.StartPreview();
-            await Task.Delay(500);
+            using (var eventWaiter = EventAwaiter<CameraDeviceStateChangedEventArgs>.Create())
+            {
+                Camera.DeviceStateChanged += eventWaiter;
+                Camera.DeviceStateChanged -= DeviceStateChangedCallback;
 
-            Assert.IsTrue(_deviceStateFlag2, "The device state flag should be true.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            Camera.DeviceStateChanged -= DeviceStateChangedCallback2;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Device, Is.EqualTo(CameraDevice.Rear));
+            }
         }
 
         [Test]
@@ -128,21 +49,14 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task State_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            /* TESTCODE */
-            Camera.DeviceStateChanged += DeviceStateChangedCallback;
-
-            _camera.StartPreview();
-            await Task.Delay(500);
+            using (var eventWaiter = EventAwaiter<CameraDeviceStateChangedEventArgs>.Create())
+            {
+                Camera.DeviceStateChanged += eventWaiter;
 
-            Assert.IsTrue(_deviceStateFlag, "The device state flag should be true.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            Camera.DeviceStateChanged -= DeviceStateChangedCallback;
+                Assert.That(await eventWaiter.IsRaisedAsync());
+            }
         }
     }
 }
\ No newline at end of file
index 20fd584..6d0f2f4 100755 (executable)
@@ -13,62 +13,8 @@ namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.CameraDisplaySettings class")]
-    public class CameraDisplaySettingsTests
+    public class CameraDisplaySettingsTests : TestBase
     {
-        private static Camera _camera = null;
-        public const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _isCameraSupported = true;
-
-        [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
         [Test]
         [Category("P1")]
         [Description("Test Rotation property of CameraDisplaySettings class.")]
@@ -78,19 +24,11 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Rotation_PROPERTY_ENUM_ALL()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera for testing.");
-
-            /* TESTCODE */
             foreach (Rotation rotation in Enum.GetValues(typeof(Rotation)))
             {
-                Log.Info(LogTag, "Testing camera rotation type : " + rotation);
-
-                _camera.DisplaySettings.Rotation = rotation;
-                Assert.IsNotNull(_camera.DisplaySettings.Rotation, "display rotation should not be null.");
-                Assert.AreEqual(rotation, _camera.DisplaySettings.Rotation, "display rotation is not same as set value.");
+                TestCamera.DisplaySettings.Rotation = rotation;
+                Assert.IsNotNull(TestCamera.DisplaySettings.Rotation, "display rotation should not be null.");
+                Assert.AreEqual(rotation, TestCamera.DisplaySettings.Rotation, "display rotation is not same as set value.");
             }
         }
 
@@ -103,19 +41,11 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Flip_PROPERTY_ENUM_ALL()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera for testing.");
-
-            /* TESTCODE */
             foreach (Flips flip in Enum.GetValues(typeof(Flips)))
             {
-                Log.Info(LogTag, "Testing camera flip type : " + flip);
-
-                _camera.DisplaySettings.Flip = flip;
-                Assert.IsNotNull(_camera.DisplaySettings.Flip, "Capture flip should not be null.");
-                Assert.AreEqual(flip, _camera.DisplaySettings.Flip, "camera flip is not same as set value.");
+                TestCamera.DisplaySettings.Flip = flip;
+                Assert.IsNotNull(TestCamera.DisplaySettings.Flip, "Capture flip should not be null.");
+                Assert.AreEqual(flip, TestCamera.DisplaySettings.Flip, "camera flip is not same as set value.");
             }
         }
 
@@ -128,19 +58,10 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Mode_PROPERTY_ENUM_ALL()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera for testing.");
-
-            /* TESTCODE */
             foreach (CameraDisplayMode mode in Enum.GetValues(typeof(CameraDisplayMode)))
             {
-                Log.Info(LogTag, "Testing display mode type : " + mode);
-
-                _camera.DisplaySettings.Mode = mode;
-                Assert.IsNotNull(_camera.DisplaySettings.Mode, "display mode should not be null.");
-                Assert.AreEqual(mode, _camera.DisplaySettings.Mode, "display mode not same as set value.");
+                TestCamera.DisplaySettings.Mode = mode;
+                Assert.That(TestCamera.DisplaySettings.Mode, Is.EqualTo(mode));
             }
         }
 
@@ -153,15 +74,8 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Visible_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            Assert.IsNotNull(_camera, "PRECONDITION: Failed to get Camera for testing.");
-
-            /* TESTCODE */
-            _camera.DisplaySettings.Visible = true;
-            Assert.IsNotNull(_camera.DisplaySettings.Visible, "display visible should not be null.");
-            Assert.IsTrue(_camera.DisplaySettings.Visible, "display visible is not same as set value.");
+            TestCamera.DisplaySettings.Visible = true;
+            Assert.IsTrue(TestCamera.DisplaySettings.Visible, "display visible is not same as set value.");
         }
 
         [Test]
@@ -173,20 +87,14 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void RoiArea_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            _camera.DisplaySettings.Mode = CameraDisplayMode.CustomROI;
+            TestCamera.DisplaySettings.Mode = CameraDisplayMode.CustomROI;
             Rectangle area = new Rectangle(100, 100, 360, 480);
 
-            /* TESTCODE */
-            _camera.DisplaySettings.RoiArea = area;
-            Assert.IsNotNull(_camera.DisplaySettings.RoiArea, "The displayroi should not be null.");
-            Assert.IsInstanceOf<Rectangle>(_camera.DisplaySettings.RoiArea, "The DisplayRoiArea is not same as set value.");
-            Assert.AreEqual(area.X, _camera.DisplaySettings.RoiArea.X, "The DisplayRoiArea should be same as set value.");
-            Assert.AreEqual(area.Y, _camera.DisplaySettings.RoiArea.Y, "The DisplayRoiArea should be same as set value.");
-            Assert.AreEqual(area.Width, _camera.DisplaySettings.RoiArea.Width, "The DisplayRoiArea should be same as set value.");
-            Assert.AreEqual(area.Height, _camera.DisplaySettings.RoiArea.Height, "The DisplayRoiArea should be same as set value.");
+            TestCamera.DisplaySettings.RoiArea = area;
+            Assert.That(TestCamera.DisplaySettings.RoiArea.X, Is.EqualTo(area.X));
+            Assert.That(TestCamera.DisplaySettings.RoiArea.Y, Is.EqualTo(area.Y));
+            Assert.That(TestCamera.DisplaySettings.RoiArea.Width, Is.EqualTo(area.Width));
+            Assert.That(TestCamera.DisplaySettings.RoiArea.Height, Is.EqualTo(area.Height));
         }
     }
 }
index 0f18246..b29239b 100755 (executable)
@@ -15,62 +15,8 @@ namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.CameraSettings class")]
-    public class CameraSettingsTests
+    public class CameraSettingsTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _isCameraSupported = true;
-
-        [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
         [Test]
         [Category("P1")]
         [Description("Test SetAutoFocusArea method.")]
@@ -81,17 +27,13 @@ namespace Tizen.Multimedia.Tests
         [Property("COVPARAM", "int, int")]
         public static void SetAutoFocusArea_INT_NO_EXCEPTION()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             bool isAutoFocusModeSupported = false;
-            IList afModes = _camera.Capabilities.SupportedAutoFocusModes.ToList();
+            IList afModes = TestCamera.Capabilities.SupportedAutoFocusModes.ToList();
             foreach (CameraAutoFocusMode afMode in afModes)
             {
                 if (afMode != CameraAutoFocusMode.None)
                 {
-                    _camera.Settings.AutoFocusMode = afMode;
+                    TestCamera.Settings.AutoFocusMode = afMode;
                     isAutoFocusModeSupported = true;
                     break;
                 }
@@ -100,7 +42,7 @@ namespace Tizen.Multimedia.Tests
             /* TESTCODE */
             try
             {
-                _camera.Settings.SetAutoFocusArea(1, 1);
+                TestCamera.Settings.SetAutoFocusArea(1, 1);
             }
             catch (InvalidOperationException)
             {
@@ -125,17 +67,13 @@ namespace Tizen.Multimedia.Tests
         [Property("COVPARAM", "Point")]
         public static void SetAutoFocusArea_POINT_NO_EXCEPTION()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             bool isAutoFocusModeSupported = false;
-            IList afModes = _camera.Capabilities.SupportedAutoFocusModes.ToList();
+            IList afModes = TestCamera.Capabilities.SupportedAutoFocusModes.ToList();
             foreach (CameraAutoFocusMode afMode in afModes)
             {
                 if (afMode != CameraAutoFocusMode.None)
                 {
-                    _camera.Settings.AutoFocusMode = afMode;
+                    TestCamera.Settings.AutoFocusMode = afMode;
                     isAutoFocusModeSupported = true;
                     break;
                 }
@@ -145,7 +83,7 @@ namespace Tizen.Multimedia.Tests
             try
             {
                 Point autoFocusArea = new Point(1, 1);
-                _camera.Settings.SetAutoFocusArea(autoFocusArea);
+                TestCamera.Settings.SetAutoFocusArea(autoFocusArea);
             }
             catch (InvalidOperationException)
             {
@@ -169,17 +107,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ClearFocusArea_NO_EXCEPTION()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             bool isAutoFocusModeSupported = false;
-            IList afModes = _camera.Capabilities.SupportedAutoFocusModes.ToList();
+            IList afModes = TestCamera.Capabilities.SupportedAutoFocusModes.ToList();
             foreach (CameraAutoFocusMode afMode in afModes)
             {
                 if (afMode != CameraAutoFocusMode.None)
                 {
-                    _camera.Settings.AutoFocusMode = afMode;
+                    TestCamera.Settings.AutoFocusMode = afMode;
                     isAutoFocusModeSupported = true;
                     break;
                 }
@@ -187,7 +121,7 @@ namespace Tizen.Multimedia.Tests
 
             try
             {
-                _camera.Settings.SetAutoFocusArea(1, 1);
+                TestCamera.Settings.SetAutoFocusArea(1, 1);
             }
             catch (InvalidOperationException)
             {
@@ -204,7 +138,7 @@ namespace Tizen.Multimedia.Tests
             /* TESTCODE */
             try
             {
-                _camera.Settings.ClearFocusArea();
+                TestCamera.Settings.ClearFocusArea();
             }
             catch
             {
@@ -221,26 +155,22 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SetPan_ENUM_ALL()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                Range range = _camera.Settings.PanRange;
+                Range range = TestCamera.Settings.PanRange;
 
                 /* TESTCODE
                  * Test Absolute Pan Type.
                  */
                 int val = 1;
-                _camera.Settings.SetPan(CameraPtzMoveType.Absoulute, val);
-                Assert.AreEqual(val, _camera.Settings.GetPan(), "Pan should be same as set value");
+                TestCamera.Settings.SetPan(CameraPtzMoveType.Absoulute, val);
+                Assert.AreEqual(val, TestCamera.Settings.GetPan(), "Pan should be same as set value");
 
                 /* TESTCODE
                  * Test Relative Pan Type.
                  */
-                _camera.Settings.SetPan(CameraPtzMoveType.Relative, val);
-                Assert.AreEqual(val, _camera.Settings.GetPan(), "Pan should be same as set value");
+                TestCamera.Settings.SetPan(CameraPtzMoveType.Relative, val);
+                Assert.AreEqual(val, TestCamera.Settings.GetPan(), "Pan should be same as set value");
             }
             catch (NotSupportedException)
             {
@@ -257,17 +187,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void GetPan_RETURN_TYPE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                Range range = _camera.Settings.PanRange;
+                Range range = TestCamera.Settings.PanRange;
 
                 int step = 1;
-                _camera.Settings.SetPan(CameraPtzMoveType.Absoulute, step);
-                var res = _camera.Settings.GetPan();
+                TestCamera.Settings.SetPan(CameraPtzMoveType.Absoulute, step);
+                var res = TestCamera.Settings.GetPan();
                 Assert.IsNotNull(res, "The result should not be null.");
                 Assert.AreEqual(res, step, "The pan step is not same as set value.");
             }
@@ -286,20 +212,16 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SetTilt_ENUM_ALL()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                Range range = _camera.Settings.TiltRange;
+                Range range = TestCamera.Settings.TiltRange;
 
                 int val = 1;
-                _camera.Settings.SetTilt(CameraPtzMoveType.Absoulute, val);
-                Assert.AreEqual(val, _camera.Settings.GetTilt(), "Tilt should be same as set value");
+                TestCamera.Settings.SetTilt(CameraPtzMoveType.Absoulute, val);
+                Assert.AreEqual(val, TestCamera.Settings.GetTilt(), "Tilt should be same as set value");
 
-                _camera.Settings.SetTilt(CameraPtzMoveType.Relative, val);
-                Assert.AreEqual(val, _camera.Settings.GetTilt(), "Tilt should be same as set value");
+                TestCamera.Settings.SetTilt(CameraPtzMoveType.Relative, val);
+                Assert.AreEqual(val, TestCamera.Settings.GetTilt(), "Tilt should be same as set value");
             }
             catch (NotSupportedException)
             {
@@ -316,17 +238,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void GetTilt_RETURN_TYPE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                Range range = _camera.Settings.TiltRange;
+                Range range = TestCamera.Settings.TiltRange;
 
                 int step = 1;
-                _camera.Settings.SetTilt(CameraPtzMoveType.Absoulute, step);
-                var res = _camera.Settings.GetTilt();
+                TestCamera.Settings.SetTilt(CameraPtzMoveType.Absoulute, step);
+                var res = TestCamera.Settings.GetTilt();
                 Assert.IsNotNull(res, "The result should not be null.");
                 Assert.AreEqual(res, step, "The tilt step is not same as set value.");
             }
@@ -345,17 +263,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void RemoveGeoTag_NO_EXCEPTION()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             Location loc = new Location(1, 1, 1);
-            _camera.Settings.GeoTag = loc;
+            TestCamera.Settings.GeoTag = loc;
 
             /* TESTCODE */
             try
             {
-                _camera.Settings.RemoveGeoTag();
+                TestCamera.Settings.RemoveGeoTag();
             }
             catch
             {
@@ -372,14 +286,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void DisableShutterSound_NO_EXCEPTION()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             try
             {
-                _camera.Settings.DisableShutterSound(true);
+                TestCamera.Settings.DisableShutterSound(true);
             }
             catch (Exception)
             {
@@ -396,19 +305,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void PreviewFps_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList supportedFps = _camera.Capabilities.SupportedPreviewFps.ToList();
+            IList supportedFps = TestCamera.Capabilities.SupportedPreviewFps.ToList();
             foreach (CameraFps fps in supportedFps)
             {
-                Log.Info(LogTag, "Testing fps type : " + fps);
-
-                _camera.Settings.PreviewFps = fps;
-                Assert.IsNotNull(_camera.Settings.PreviewFps, "Preview fps should not be null.");
-                Assert.AreEqual(fps, _camera.Settings.PreviewFps, "Preview fps should be same as set value.");
+                TestCamera.Settings.PreviewFps = fps;
+                Assert.IsNotNull(TestCamera.Settings.PreviewFps, "Preview fps should not be null.");
+                Assert.AreEqual(fps, TestCamera.Settings.PreviewFps, "Preview fps should be same as set value.");
             }
         }
 
@@ -421,16 +323,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ImageQuality_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             int quality = 98;
 
             /* TESTCODE */
-            _camera.Settings.ImageQuality = quality;
-            Assert.AreNotEqual(0, _camera.Settings.ImageQuality, "The image quality should not be zero.");
-            Assert.AreEqual(quality, _camera.Settings.ImageQuality, "The imagequality values is not same as set value.");
+            TestCamera.Settings.ImageQuality = quality;
+            Assert.AreNotEqual(0, TestCamera.Settings.ImageQuality, "The image quality should not be zero.");
+            Assert.AreEqual(quality, TestCamera.Settings.ImageQuality, "The imagequality values is not same as set value.");
         }
 
         [Test]
@@ -442,14 +340,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ImageQuality_PROPERTY_BELOW_MIN()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             try
             {
-                _camera.Settings.ImageQuality = 0;
+                TestCamera.Settings.ImageQuality = 0;
             }
             catch (Exception e)
             {
@@ -466,14 +359,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ImageQuality_PROPERTY_ABOVE_MAX()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             try
             {
-                _camera.Settings.ImageQuality = 101;
+                TestCamera.Settings.ImageQuality = 101;
             }
             catch (Exception e)
             {
@@ -490,28 +378,23 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void EncodedPreviewBitrate_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             int val = 16;
             bool encodedPreviewSupport = false;
 
             /* TESTCODE */
-            IList formats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
+            IList formats = TestCamera.Capabilities.SupportedPreviewPixelFormats.ToList();
             foreach (CameraPixelFormat format in formats)
             {
-                Log.Info(LogTag, "format  = " + format.ToString());
                 if (format == CameraPixelFormat.H264)
                     encodedPreviewSupport = true;
             }
 
             if (encodedPreviewSupport)
             {
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.H264;
-                _camera.Settings.EncodedPreviewBitrate = val;
-                Assert.AreNotEqual(0, _camera.Settings.EncodedPreviewBitrate, "The bit rate should not be zero.");
-                Assert.AreEqual(val, _camera.Settings.EncodedPreviewBitrate, "The bitrate value is not same as set value.");
+                TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.H264;
+                TestCamera.Settings.EncodedPreviewBitrate = val;
+                Assert.AreNotEqual(0, TestCamera.Settings.EncodedPreviewBitrate, "The bit rate should not be zero.");
+                Assert.AreEqual(val, TestCamera.Settings.EncodedPreviewBitrate, "The bitrate value is not same as set value.");
             }
             else
             {
@@ -528,28 +411,23 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void EncodedPreviewGopInterval_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             int gop = 4;
             bool encodedPreviewSupport = false;
 
             /* TESTCODE */
-            IList formats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
+            IList formats = TestCamera.Capabilities.SupportedPreviewPixelFormats.ToList();
             foreach (CameraPixelFormat format in formats)
             {
-                Log.Info(LogTag, "format  = " + format.ToString());
                 if (format == CameraPixelFormat.H264)
                     encodedPreviewSupport = true;
             }
 
             if (encodedPreviewSupport == true)
             {
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.H264;
-                _camera.Settings.EncodedPreviewGopInterval = gop;
-                Assert.AreNotEqual(0, _camera.Settings.EncodedPreviewGopInterval, "The gop interval should not be zero.");
-                Assert.AreEqual(gop, _camera.Settings.EncodedPreviewGopInterval, "The gop interval is not same as set value.");
+                TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.H264;
+                TestCamera.Settings.EncodedPreviewGopInterval = gop;
+                Assert.AreNotEqual(0, TestCamera.Settings.EncodedPreviewGopInterval, "The gop interval should not be zero.");
+                Assert.AreEqual(gop, TestCamera.Settings.EncodedPreviewGopInterval, "The gop interval is not same as set value.");
             }
             else
             {
@@ -566,14 +444,10 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ZoomLevel_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             int level = 0;
             try
             {
-                Range r = _camera.Settings.ZoomRange;
+                Range r = TestCamera.Settings.ZoomRange;
                 level = r.Min + 1;
             }
             catch (NotSupportedException)
@@ -582,9 +456,9 @@ namespace Tizen.Multimedia.Tests
             }
 
             /* TESTCODE */
-            _camera.Settings.ZoomLevel = level;
-            Assert.AreNotEqual(0, _camera.Settings.ZoomLevel, "The zoom level should not be zero.");
-            Assert.AreEqual(level, _camera.Settings.ZoomLevel, "The zoomlevel is not same as set value.");
+            TestCamera.Settings.ZoomLevel = level;
+            Assert.AreNotEqual(0, TestCamera.Settings.ZoomLevel, "The zoom level should not be zero.");
+            Assert.AreEqual(level, TestCamera.Settings.ZoomLevel, "The zoomlevel is not same as set value.");
         }
 
         [Test]
@@ -596,14 +470,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ZoomRange_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             try
             {
-                var result = _camera.Settings.ZoomRange;
+                var result = TestCamera.Settings.ZoomRange;
                 Assert.IsNotNull(result, "The zoom range should not be null.");
                 Assert.IsInstanceOf<Range>(result, "The zoomrange should be of Range type.");
             }
@@ -622,13 +491,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ExposureRange_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                var result = _camera.Settings.ExposureRange;
+                var result = TestCamera.Settings.ExposureRange;
                 Assert.IsNotNull(result, "The exposure range should not be null.");
                 Assert.IsInstanceOf<Range>(result, "The exposure range should be of Range type.");
             }
@@ -647,14 +512,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void BrightnessRange_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             try
             {
-                var result = _camera.Settings.BrightnessRange;
+                var result = TestCamera.Settings.BrightnessRange;
                 Assert.IsNotNull(result, "The brightness range should not be null.");
                 Assert.IsInstanceOf<Range>(result, "The brightness range should be of Range type.");
             }
@@ -673,13 +533,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ContrastRange_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                var result = _camera.Settings.ContrastRange;
+                var result = TestCamera.Settings.ContrastRange;
                 Assert.IsNotNull(result, "The contrast range should not be null.");
                 Assert.IsInstanceOf<Range>(result, "The contrast range should be of Range type.");
             }
@@ -698,13 +554,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void PanRange_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                var result = _camera.Settings.PanRange;
+                var result = TestCamera.Settings.PanRange;
                 Assert.IsNotNull(result, "The pan range should not be null.");
                 Assert.IsInstanceOf<Range>(result, "The pan range should be of Range type.");
             }
@@ -723,13 +575,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void TiltRange_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                var result = _camera.Settings.TiltRange;
+                var result = TestCamera.Settings.TiltRange;
                 Assert.IsNotNull(result, "The tilt range should not be null.");
                 Assert.IsInstanceOf<Range>(result, "The tilt range should be of Range type.");
             }
@@ -748,19 +596,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void AutoFocusMode_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList supportedModes = _camera.Capabilities.SupportedAutoFocusModes.ToList();
+            IList supportedModes = TestCamera.Capabilities.SupportedAutoFocusModes.ToList();
             foreach (CameraAutoFocusMode mode in supportedModes)
             {
-                Log.Info(LogTag, "Testing autfocus mode type : " + mode);
-
-                _camera.Settings.AutoFocusMode = mode;
-                Assert.IsNotNull(_camera.Settings.AutoFocusMode, "Afmode should not be null.");
-                Assert.AreEqual(mode, _camera.Settings.AutoFocusMode, "Afmode should be same as set value.");
+                TestCamera.Settings.AutoFocusMode = mode;
+                Assert.IsNotNull(TestCamera.Settings.AutoFocusMode, "Afmode should not be null.");
+                Assert.AreEqual(mode, TestCamera.Settings.AutoFocusMode, "Afmode should be same as set value.");
             }
         }
 
@@ -773,19 +614,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ExposureMode_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList supportedModes = _camera.Capabilities.SupportedExposureModes.ToList();
+            IList supportedModes = TestCamera.Capabilities.SupportedExposureModes.ToList();
             foreach (CameraExposureMode mode in supportedModes)
             {
-                Log.Info(LogTag, "Testing exposure mode type : " + mode);
-
-                _camera.Settings.ExposureMode = mode;
-                Assert.IsNotNull(_camera.Settings.ExposureMode, "ExposureMode should not be null.");
-                Assert.AreEqual(mode, _camera.Settings.ExposureMode, "ExposureMode should be same as set value.");
+                TestCamera.Settings.ExposureMode = mode;
+                Assert.IsNotNull(TestCamera.Settings.ExposureMode, "ExposureMode should not be null.");
+                Assert.AreEqual(mode, TestCamera.Settings.ExposureMode, "ExposureMode should be same as set value.");
             }
         }
 
@@ -798,17 +632,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Exposure_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                Range range = _camera.Settings.ExposureRange;
+                Range range = TestCamera.Settings.ExposureRange;
 
-                _camera.Settings.Exposure = range.Max;
-                Assert.AreNotEqual(0, _camera.Settings.Exposure, "The exposure should not be zero.");
-                Assert.AreEqual(range.Max, _camera.Settings.Exposure, "The exposure value is not same as set value.");
+                TestCamera.Settings.Exposure = range.Max;
+                Assert.AreNotEqual(0, TestCamera.Settings.Exposure, "The exposure should not be zero.");
+                Assert.AreEqual(range.Max, TestCamera.Settings.Exposure, "The exposure value is not same as set value.");
             }
             catch (NotSupportedException)
             {
@@ -825,21 +655,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void IsoLevel_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList supportedIso = _camera.Capabilities.SupportedIsoLevels.ToList();
-            Log.Info(LogTag, "supported iso count " + supportedIso.Count);
+            IList supportedIso = TestCamera.Capabilities.SupportedIsoLevels.ToList();
             foreach (CameraIsoLevel iso in supportedIso)
             {
-                Log.Info(LogTag, "Testing isolevel type : " + iso);
-                Log.Info(LogTag, "testing isolevel value : " + (int)iso);
-
-                _camera.Settings.IsoLevel = iso;
-                Assert.IsNotNull(_camera.Settings.IsoLevel, "Isolevel should not be null.");
-                Assert.AreEqual(iso, _camera.Settings.IsoLevel, "Isolevel should be same as set value.");
+                TestCamera.Settings.IsoLevel = iso;
+                Assert.IsNotNull(TestCamera.Settings.IsoLevel, "Isolevel should not be null.");
+                Assert.AreEqual(iso, TestCamera.Settings.IsoLevel, "Isolevel should be same as set value.");
             }
         }
 
@@ -852,19 +673,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void TheaterMode_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList supportedModes = _camera.Capabilities.SupportedTheaterModes.ToList();
+            IList supportedModes = TestCamera.Capabilities.SupportedTheaterModes.ToList();
             foreach (CameraTheaterMode mode in supportedModes)
             {
-                Log.Info(LogTag, "Testing Theater mode type : " + mode);
-
-                _camera.Settings.TheaterMode = mode;
-                Assert.IsNotNull(_camera.Settings.TheaterMode, "Theatermode should not be null.");
-                Assert.AreEqual(mode, _camera.Settings.TheaterMode, "Theater mode should be same as set value.");
+                TestCamera.Settings.TheaterMode = mode;
+                Assert.IsNotNull(TestCamera.Settings.TheaterMode, "Theatermode should not be null.");
+                Assert.AreEqual(mode, TestCamera.Settings.TheaterMode, "Theater mode should be same as set value.");
             }
         }
 
@@ -877,18 +691,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Brightness_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             try
             {
-                Range brightnessRange = _camera.Settings.BrightnessRange;
+                Range brightnessRange = TestCamera.Settings.BrightnessRange;
 
-                _camera.Settings.Brightness = brightnessRange.Max;
-                Assert.AreNotEqual(0, _camera.Settings.Brightness, "The brightness should not be zero.");
-                Assert.AreEqual(brightnessRange.Max, _camera.Settings.Brightness, "The brightness value is not same as set value.");
+                TestCamera.Settings.Brightness = brightnessRange.Max;
+                Assert.AreNotEqual(0, TestCamera.Settings.Brightness, "The brightness should not be zero.");
+                Assert.AreEqual(brightnessRange.Max, TestCamera.Settings.Brightness, "The brightness value is not same as set value.");
             }
             catch (NotSupportedException)
             {
@@ -905,17 +714,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Contrast_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                Range range = _camera.Settings.ContrastRange;
+                Range range = TestCamera.Settings.ContrastRange;
 
-                _camera.Settings.Contrast = range.Max;
-                Assert.AreNotEqual(0, _camera.Settings.Contrast, "The contrast should not be zero.");
-                Assert.AreEqual(range.Max, _camera.Settings.Contrast, "The contrast value is not same as set value.");
+                TestCamera.Settings.Contrast = range.Max;
+                Assert.AreNotEqual(0, TestCamera.Settings.Contrast, "The contrast should not be zero.");
+                Assert.AreEqual(range.Max, TestCamera.Settings.Contrast, "The contrast value is not same as set value.");
             }
             catch (NotSupportedException)
             {
@@ -932,19 +737,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void WhiteBalance_PROPERTY_GET_ENUM_CAMERAWHITEBALANCE_NONE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList supportedWhitebalance = _camera.Capabilities.SupportedWhiteBalances.ToList();
+            IList supportedWhitebalance = TestCamera.Capabilities.SupportedWhiteBalances.ToList();
             foreach (CameraWhiteBalance val in supportedWhitebalance)
             {
-                Log.Info(LogTag, "Testing whitebalance type : " + val);
-
-                _camera.Settings.WhiteBalance = val;
-                Assert.IsNotNull(_camera.Settings.WhiteBalance, "Whitebalance should not be null.");
-                Assert.AreEqual(val, _camera.Settings.WhiteBalance, "whitebalance should be same as set value.");
+                TestCamera.Settings.WhiteBalance = val;
+                Assert.IsNotNull(TestCamera.Settings.WhiteBalance, "Whitebalance should not be null.");
+                Assert.AreEqual(val, TestCamera.Settings.WhiteBalance, "whitebalance should be same as set value.");
             }
         }
 
@@ -957,19 +755,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Effect_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList effectModes = _camera.Capabilities.SupportedEffects.ToList();
+            IList effectModes = TestCamera.Capabilities.SupportedEffects.ToList();
             foreach (CameraEffectMode mode in effectModes)
             {
-                Log.Info(LogTag, "Testing effectmode type : " + mode);
-
-                _camera.Settings.Effect = mode;
-                Assert.IsNotNull(_camera.Settings.Effect, "Effect should not be null.");
-                Assert.AreEqual(mode, _camera.Settings.Effect, "Effect should be same as set value.");
+                TestCamera.Settings.Effect = mode;
+                Assert.IsNotNull(TestCamera.Settings.Effect, "Effect should not be null.");
+                Assert.AreEqual(mode, TestCamera.Settings.Effect, "Effect should be same as set value.");
             }
         }
 
@@ -982,19 +773,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SceneMode__PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList supportedModes = _camera.Capabilities.SupportedSceneModes.ToList();
+            IList supportedModes = TestCamera.Capabilities.SupportedSceneModes.ToList();
             foreach (CameraSceneMode mode in supportedModes)
             {
-                Log.Info(LogTag, "Testing scenemode type : " + mode);
-
-                _camera.Settings.SceneMode = mode;
-                Assert.IsNotNull(_camera.Settings.SceneMode, "Scenemode should not be null.");
-                Assert.AreEqual(mode, _camera.Settings.SceneMode, "Scenemode should be same as set value.");
+                TestCamera.Settings.SceneMode = mode;
+                Assert.IsNotNull(TestCamera.Settings.SceneMode, "Scenemode should not be null.");
+                Assert.AreEqual(mode, TestCamera.Settings.SceneMode, "Scenemode should be same as set value.");
             }
         }
 
@@ -1007,21 +791,13 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void EnableTag_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
+            // Enable tag.
+            TestCamera.Settings.EnableTag = true;
+            Assert.IsTrue(TestCamera.Settings.EnableTag, "Enabletag is not same as set value");
 
-            /* TEST CODE
-             * Enable tag.
-             */
-            _camera.Settings.EnableTag = true;
-            Assert.IsTrue(_camera.Settings.EnableTag, "Enabletag is not same as set value");
-
-            /* TEST CODE
-             * Disable tag.
-             */
-            _camera.Settings.EnableTag = false;
-            Assert.IsFalse(_camera.Settings.EnableTag, "Enabletag is not same as set value");
+            // Disable tag.
+            TestCamera.Settings.EnableTag = false;
+            Assert.IsFalse(TestCamera.Settings.EnableTag, "Enabletag is not same as set value");
         }
 
         [Test]
@@ -1033,15 +809,10 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void ImageDescriptionTag_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TEST CODE */
             string des = "Photo";
-            _camera.Settings.ImageDescriptionTag = des;
-            Assert.IsNotNull(_camera.Settings.ImageDescriptionTag, "image description should not be null.");
-            Assert.AreEqual(des, _camera.Settings.ImageDescriptionTag, "ImageDescription is not same as set value");
+            TestCamera.Settings.ImageDescriptionTag = des;
+            Assert.IsNotNull(TestCamera.Settings.ImageDescriptionTag, "image description should not be null.");
+            Assert.AreEqual(des, TestCamera.Settings.ImageDescriptionTag, "ImageDescription is not same as set value");
         }
 
         [Test]
@@ -1053,15 +824,10 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void SoftwareTag_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TEST CODE */
             string des = "Photo";
-            _camera.Settings.SoftwareTag = des;
-            Assert.IsNotNull(_camera.Settings.SoftwareTag, "TagSoftware should not be null.");
-            Assert.AreEqual(des, _camera.Settings.SoftwareTag, "TagSoftware is not same as set value");
+            TestCamera.Settings.SoftwareTag = des;
+            Assert.IsNotNull(TestCamera.Settings.SoftwareTag, "TagSoftware should not be null.");
+            Assert.AreEqual(des, TestCamera.Settings.SoftwareTag, "TagSoftware is not same as set value");
         }
 
         [Test]
@@ -1073,21 +839,17 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void GeoTag_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             double latitude = 1.0;
             double longitude = 1.0;
             double altitude = 1.0;
 
             /* TEST CODE */
             Location loc = new Location(latitude, longitude, altitude);
-            _camera.Settings.GeoTag = loc;
-            Assert.IsNotNull(_camera.Settings.GeoTag, "GeoTag should not be null.");
-            Assert.AreEqual(loc.Latitude, _camera.Settings.GeoTag.Latitude, "GeoTag is not same as set value");
-            Assert.AreEqual(loc.Longitude, _camera.Settings.GeoTag.Longitude, "GeoTag is not same as set value");
-            Assert.AreEqual(loc.Altitude, _camera.Settings.GeoTag.Altitude, "GeoTag is not same as set value");
+            TestCamera.Settings.GeoTag = loc;
+            Assert.IsNotNull(TestCamera.Settings.GeoTag, "GeoTag should not be null.");
+            Assert.AreEqual(loc.Latitude, TestCamera.Settings.GeoTag.Latitude, "GeoTag is not same as set value");
+            Assert.AreEqual(loc.Longitude, TestCamera.Settings.GeoTag.Longitude, "GeoTag is not same as set value");
+            Assert.AreEqual(loc.Altitude, TestCamera.Settings.GeoTag.Altitude, "GeoTag is not same as set value");
         }
 
         [Test]
@@ -1099,14 +861,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void OrientationTag_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            _camera.Settings.OrientationTag = CameraTagOrientation.TopLeft;
-            Assert.IsNotNull(_camera.Settings.OrientationTag, "Tag orientation should not be null.");
-            Assert.AreEqual(CameraTagOrientation.TopLeft, _camera.Settings.OrientationTag, "Tag orientation should be same as set value.");
+            TestCamera.Settings.OrientationTag = CameraTagOrientation.TopLeft;
+            Assert.IsNotNull(TestCamera.Settings.OrientationTag, "Tag orientation should not be null.");
+            Assert.AreEqual(CameraTagOrientation.TopLeft, TestCamera.Settings.OrientationTag, "Tag orientation should be same as set value.");
         }
 
         [Test]
@@ -1118,21 +875,14 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void FlashMode_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            IList supportedModes = _camera.Capabilities.SupportedFlashModes.ToList();
+            IList supportedModes = TestCamera.Capabilities.SupportedFlashModes.ToList();
             foreach (CameraFlashMode mode in supportedModes)
             {
-                Log.Info(LogTag, "Testing flash mode type : " + mode);
-
                 try
                 {
-                    _camera.Settings.FlashMode = mode;
-                    Assert.IsNotNull(_camera.Settings.FlashMode, "Flashmode should not be null.");
-                    Assert.AreEqual(mode, _camera.Settings.FlashMode, "Flashmode should be same as set value.");
+                    TestCamera.Settings.FlashMode = mode;
+                    Assert.IsNotNull(TestCamera.Settings.FlashMode, "Flashmode should not be null.");
+                    Assert.AreEqual(mode, TestCamera.Settings.FlashMode, "Flashmode should be same as set value.");
                 }
                 catch (NotSupportedException)
                 {
@@ -1150,12 +900,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void LensOrientation_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Settings.LensOrientation;
+            var result = TestCamera.Settings.LensOrientation;
             Assert.IsNotNull(result, "Orientation should not be null.");
             Assert.IsInstanceOf<int>(result, "Orientation should be of type int.");
         }
@@ -1169,18 +914,11 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void StreamRotation_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            foreach (var rotation in _camera.Capabilities.SupportedStreamRotations)
+            foreach (var rotation in TestCamera.Capabilities.SupportedStreamRotations)
             {
-                Log.Info(LogTag, "Testing stream rotation type : " + rotation);
-
-                _camera.Settings.StreamRotation = rotation;
-                Assert.IsNotNull(_camera.Settings.StreamRotation, "StreamRotation should not be null.");
-                Assert.AreEqual(rotation, _camera.Settings.StreamRotation, "StreamRotation should be same as set value.");
+                TestCamera.Settings.StreamRotation = rotation;
+                Assert.IsNotNull(TestCamera.Settings.StreamRotation, "StreamRotation should not be null.");
+                Assert.AreEqual(rotation, TestCamera.Settings.StreamRotation, "StreamRotation should be same as set value.");
             }
         }
 
@@ -1193,18 +931,11 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void StreamFlip__PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            foreach (var flip in _camera.Capabilities.SupportedStreamFlips)
+            foreach (var flip in TestCamera.Capabilities.SupportedStreamFlips)
             {
-                Log.Info(LogTag, "Testing flip type : " + flip);
-
-                _camera.Settings.StreamFlip = flip;
-                Assert.IsNotNull(_camera.Settings.StreamFlip, "StreamFlip should not be null.");
-                Assert.AreEqual(flip, _camera.Settings.StreamFlip, "StreamFlip should be same as set value.");
+                TestCamera.Settings.StreamFlip = flip;
+                Assert.IsNotNull(TestCamera.Settings.StreamFlip, "StreamFlip should not be null.");
+                Assert.AreEqual(flip, TestCamera.Settings.StreamFlip, "StreamFlip should be same as set value.");
             }
         }
 
@@ -1217,16 +948,11 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void HdrMode__PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            if (_camera.Capabilities.IsHdrCaptureSupported)
+            if (TestCamera.Capabilities.IsHdrCaptureSupported)
             {
-                _camera.Settings.HdrMode = CameraHdrMode.Enable;
-                Assert.IsNotNull(_camera.Settings.HdrMode, "HdrMode should not be null.");
-                Assert.AreEqual(CameraHdrMode.Enable, _camera.Settings.HdrMode, "HdrMode should be same as set value.");
+                TestCamera.Settings.HdrMode = CameraHdrMode.Enable;
+                Assert.IsNotNull(TestCamera.Settings.HdrMode, "HdrMode should not be null.");
+                Assert.AreEqual(CameraHdrMode.Enable, TestCamera.Settings.HdrMode, "HdrMode should be same as set value.");
             }
             else
             {
@@ -1243,23 +969,19 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void AntiShake_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            if (_camera.Capabilities.IsAntiShakeSupported)
+            if (TestCamera.Capabilities.IsAntiShakeSupported)
             {
                 /* TEST CODE
                  * Enable Antishake.
                  */
-                _camera.Settings.AntiShake = true;
-                Assert.IsTrue(_camera.Settings.AntiShake, "Antishake is not same as set value");
+                TestCamera.Settings.AntiShake = true;
+                Assert.IsTrue(TestCamera.Settings.AntiShake, "Antishake is not same as set value");
 
                 /* TEST CODE
                  * Disable Antishake.
                  */
-                _camera.Settings.AntiShake = false;
-                Assert.IsTrue(_camera.Settings.AntiShake, "Antishake is not same as set value");
+                TestCamera.Settings.AntiShake = false;
+                Assert.IsTrue(TestCamera.Settings.AntiShake, "Antishake is not same as set value");
             }
             else
             {
@@ -1276,23 +998,19 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void VideoStabilization_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            if (_camera.Capabilities.IsVideoStabilizationSupported)
+            if (TestCamera.Capabilities.IsVideoStabilizationSupported)
             {
                 /* TEST CODE
                  * Enable VideoStabilization.
                  */
-                _camera.Settings.VideoStabilization = true;
-                Assert.IsTrue(_camera.Settings.VideoStabilization, "VideoStabilization is not same as set value");
+                TestCamera.Settings.VideoStabilization = true;
+                Assert.IsTrue(TestCamera.Settings.VideoStabilization, "VideoStabilization is not same as set value");
 
                 /* TEST CODE
                  * Disable VideoStabilization.
                  */
-                _camera.Settings.VideoStabilization = false;
-                Assert.IsTrue(_camera.Settings.VideoStabilization, "VideoStabilization is not same as set value");
+                TestCamera.Settings.VideoStabilization = false;
+                Assert.IsTrue(TestCamera.Settings.VideoStabilization, "VideoStabilization is not same as set value");
             }
             else
             {
@@ -1309,23 +1027,19 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void AutoContrast_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            if (_camera.Capabilities.IsAutoContrastSupported)
+            if (TestCamera.Capabilities.IsAutoContrastSupported)
             {
                 /* TEST CODE
                  * Enable autocontrast.
                  */
-                _camera.Settings.AutoContrast = true;
-                Assert.IsTrue(_camera.Settings.AutoContrast, "AutoContrast is not same as set value");
+                TestCamera.Settings.AutoContrast = true;
+                Assert.IsTrue(TestCamera.Settings.AutoContrast, "AutoContrast is not same as set value");
 
                 /* TEST CODE
                  * Disable autocontrast.
                  */
-                _camera.Settings.AutoContrast = false;
-                Assert.IsTrue(_camera.Settings.AutoContrast, "AutoContrast is not same as set value");
+                TestCamera.Settings.AutoContrast = false;
+                Assert.IsTrue(TestCamera.Settings.AutoContrast, "AutoContrast is not same as set value");
             }
             else
             {
@@ -1342,13 +1056,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void PtzType_PROPERTY_SET_ENUM_ALL()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
             try
             {
-                _camera.Settings.PtzType = CameraPtzType.Mechanical;
+                TestCamera.Settings.PtzType = CameraPtzType.Mechanical;
             }
             catch (NotSupportedException)
             {
@@ -1357,7 +1067,7 @@ namespace Tizen.Multimedia.Tests
 
             try
             {
-                _camera.Settings.PtzType = CameraPtzType.Electronic;
+                TestCamera.Settings.PtzType = CameraPtzType.Electronic;
             }
             catch (NotSupportedException)
             {
@@ -1374,17 +1084,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void CapturePixelFormat_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             CameraPixelFormat test;
-            IList supportedFormats = _camera.Capabilities.SupportedCapturePixelFormats.ToList();
+            IList supportedFormats = TestCamera.Capabilities.SupportedCapturePixelFormats.ToList();
             foreach (CameraPixelFormat format in supportedFormats)
             {
-                _camera.Settings.CapturePixelFormat = format;
-                test = _camera.Settings.CapturePixelFormat;
+                TestCamera.Settings.CapturePixelFormat = format;
+                test = TestCamera.Settings.CapturePixelFormat;
                 Assert.IsNotNull(test, "Capture format should not be null.");
                 Assert.AreEqual(format, test, "Capture format should be same as set value.");
             }
@@ -1399,17 +1104,12 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void PreviewPixelFormat_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             CameraPixelFormat test;
-            IList supportedFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
+            IList supportedFormats = TestCamera.Capabilities.SupportedPreviewPixelFormats.ToList();
             foreach (CameraPixelFormat format in supportedFormats)
             {
-                _camera.Settings.PreviewPixelFormat = format;
-                test = _camera.Settings.PreviewPixelFormat;
+                TestCamera.Settings.PreviewPixelFormat = format;
+                test = TestCamera.Settings.PreviewPixelFormat;
                 Assert.IsNotNull(test, "Preview format should not be null.");
                 Assert.AreEqual(format, test, "Preview format should be same as set value.");
             }
@@ -1424,14 +1124,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void PreviewResolution_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             Size res = new Size(640, 480);
-            _camera.Settings.PreviewResolution = res;
-            res = _camera.Settings.PreviewResolution;
+            TestCamera.Settings.PreviewResolution = res;
+            res = TestCamera.Settings.PreviewResolution;
 
             Assert.IsNotNull(res, "Resolution should not be null");
             Assert.AreEqual(640, res.Width, "Resolution width is not same as set value.");
@@ -1447,21 +1142,11 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static void PreviewResolution_THROWS_EXCEPTION_IF_PARAM_IS_INVALID()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
+            // Param is out of range.
+            Assert.Throws<ArgumentException>(() => TestCamera.Settings.PreviewResolution = new Size(-1, -1));
 
-            /* TESTCODE
-             * Param is out of range.
-             */
-            Size res1 = new Size(-1, -1);
-            Assert.Throws<ArgumentException>(() => _camera.Settings.PreviewResolution = res1);
-
-            /* TESTCODE
-             * Not supported resolution matching.
-             */
-            Size res2 = new Size(640, 481);
-            Assert.Throws<NotSupportedException>(() => _camera.Settings.PreviewResolution = res2);
+            // Not supported resolution matching.
+            Assert.Throws<NotSupportedException>(() => TestCamera.Settings.PreviewResolution = new Size(640, 481));
         }
 
         [Test]
@@ -1473,12 +1158,7 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void RecommendedPreviewResolution_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
-            var result = _camera.Settings.RecommendedPreviewResolution;
+            var result = TestCamera.Settings.RecommendedPreviewResolution;
             Assert.IsNotNull(result, "Recommended preview resolution should not be null");
             Assert.IsTrue(result.Width > 0 && result.Height > 0, "Recommended preview resolution should not be zero.");
         }
@@ -1492,14 +1172,9 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void CaptureResolution_PROPERTY_READ_WRITE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            /* TESTCODE */
             Size res = new Size(640, 480);
-            _camera.Settings.CaptureResolution = res;
-            res = _camera.Settings.CaptureResolution;
+            TestCamera.Settings.CaptureResolution = res;
+            res = TestCamera.Settings.CaptureResolution;
 
             Assert.IsNotNull(res, "Resolution should not be null");
             Assert.AreEqual(640, res.Width, "Resolution width is not same as set value.");
index a329e88..7a2a73f 100755 (executable)
@@ -7,85 +7,14 @@
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
 using System.Threading.Tasks;
 
 namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.CameraStateChangedEventArgs class")]
-    public class CameraStateChangedEventArgsTests
+    public class CameraStateChangedEventArgsTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _stateFlag = false;
-        private static bool _policyFlag = false;
-        private static bool _isCameraSupported = true;
-
-        [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _stateFlag = false;
-            _policyFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void StateChangedCallback(object sender, CameraStateChangedEventArgs e)
-        {
-            if (e.Previous == CameraState.Created && e.Current == CameraState.Preview)
-                _stateFlag = true;
-        }
-
-        public static void PolicyCallback(object sender, CameraStateChangedEventArgs e)
-        {
-            if (e.ByPolicy == false)
-                _policyFlag = true;
-        }
-
         [Test]
         [Category("P1")]
         [Description("Check whether CameraStateChangedEventArgs.Previous returns valid value or not.")]
@@ -95,19 +24,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Previous_PROPERTY_SET_ENUM_CAMERASTATE_CREATED()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-            _camera.StateChanged += StateChangedCallback;
+            using (var eventWaiter = EventAwaiter<CameraStateChangedEventArgs>.Create())
+            {
+                TestCamera.StateChanged += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(3000);
-            Assert.IsTrue(_stateFlag, "Preview Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.StateChanged -= StateChangedCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Previous, Is.EqualTo(CameraState.Created));
+            }
         }
 
         [Test]
@@ -119,19 +44,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Current_PROPERTY_SET_ENUM_CAMERASTATE_PREVIEW()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-            _camera.StateChanged += StateChangedCallback;
+            using (var eventWaiter = EventAwaiter<CameraStateChangedEventArgs>.Create())
+            {
+                TestCamera.StateChanged += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(3000);
-            Assert.IsTrue(_stateFlag, "Preview Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.StateChanged -= StateChangedCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Current, Is.EqualTo(CameraState.Preview));
+            }
         }
 
         [Test]
@@ -143,19 +64,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task ByPolicy_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-            _camera.StateChanged += PolicyCallback;
+            using (var eventWaiter = EventAwaiter<CameraStateChangedEventArgs>.Create())
+            {
+                TestCamera.StateChanged += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(3000);
-            Assert.IsTrue(_policyFlag, "Preview Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.StateChanged -= PolicyCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.ByPolicy, Is.False);
+            }
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index 3d1241f..9011d05
@@ -7,8 +7,6 @@
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
-using System.Collections;
 using System.Linq;
 using System.Threading.Tasks;
 
@@ -16,94 +14,21 @@ namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.DoublePlane class")]
-    public class DoublePlaneTests
+    public class DoublePlaneTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _previewDataFlag = false;
-        private static bool _isCameraSupported = true;
+        public static bool _isSupportDoublePlane;
 
         [SetUp]
-        public static void Init()
+        public static void SetUp()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _previewDataFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void YDataCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame preview = e.Preview;
-            if (preview.PlaneType == PlaneType.DoublePlane)
+            _isSupportDoublePlane = TestCamera.Capabilities.SupportedPreviewPixelFormats
+                .Contains(CameraPixelFormat.Nv12);
+            if (_isSupportDoublePlane == false)
             {
-                if (preview.Plane is DoublePlane)
-                {
-                    DoublePlane doublePlane = (DoublePlane)preview.Plane;
-                    if (doublePlane.Y.Length > 0)
-                    {
-                        _previewDataFlag = true;
-                    }
-                }
+                Assert.Pass("DoublePlane format is not supported.");
             }
-        }
 
-        public static void UvDataCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame preview = e.Preview;
-            if (preview.PlaneType == PlaneType.DoublePlane)
-            {
-                if (preview.Plane is DoublePlane)
-                {
-                    DoublePlane doublePlane = (DoublePlane)preview.Plane;
-                    if (doublePlane.UV.Length > 0)
-                    {
-                        _previewDataFlag = true;
-                    }
-                }
-            }
+            TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.Nv12;
         }
 
         [Test]
@@ -115,37 +40,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task Y_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isDoublePlaneSupport = false;
-            IList supportedFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedFormats)
-            {
-                if (format == CameraPixelFormat.Nv12)
-                {
-                    isDoublePlaneSupport = true;
-                }
-            }
-
-            if (isDoublePlaneSupport)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += YDataCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.Nv12;
+                TestCamera.Preview += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_previewDataFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= YDataCallback;
-            }
-            else
-            {
-                Assert.Pass("DoublePlane format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsInstanceOf<DoublePlane>(eventArgs.Preview.Plane);
+                Assert.That((eventArgs.Preview.Plane as DoublePlane).Y.Length, Is.GreaterThan(0));
             }
         }
 
@@ -158,37 +61,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task UV_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isDoublePlaneSupport = false;
-            IList supportedFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedFormats)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                if (format == CameraPixelFormat.Nv12)
-                {
-                    isDoublePlaneSupport = true;
-                }
-            }
+                TestCamera.Preview += eventWaiter;
 
-            if (isDoublePlaneSupport)
-            {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += UvDataCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.Nv12;
-
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_previewDataFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= UvDataCallback;
-            }
-            else
-            {
-                Assert.Pass("DoublePlane format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsInstanceOf<DoublePlane>(eventArgs.Preview.Plane);
+                Assert.That((eventArgs.Preview.Plane as DoublePlane).UV.Length, Is.GreaterThan(0));
             }
         }
     }
old mode 100755 (executable)
new mode 100644 (file)
index c881679..358a7ec
@@ -7,8 +7,6 @@
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
-using System.Collections;
 using System.Linq;
 using System.Threading.Tasks;
 
@@ -16,78 +14,21 @@ namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.EncodedPlane class")]
-    public class EncodedPlaneTests
+    public class EncodedPlaneTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _previewDataFlag = false;
-        private static bool _isCameraSupported = true;
+        public static bool _isSupportEncodedPlane;
 
         [SetUp]
-        public static void Init()
+        public static void SetUp()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
+            _isSupportEncodedPlane = TestCamera.Capabilities.SupportedPreviewPixelFormats
+                .Contains(CameraPixelFormat.H264);
+            if (_isSupportEncodedPlane == false)
             {
-                _isCameraSupported = false;
+                Assert.Pass("EncodedPlane format is not supported.");
             }
 
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _previewDataFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void DataCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame preview = e.Preview;
-            if (preview.PlaneType == PlaneType.EncodedPlane)
-            {
-                if (preview.Plane is EncodedPlane)
-                {
-                    EncodedPlane encodedPlane = (EncodedPlane)preview.Plane;
-                    if (encodedPlane.Data.Length > 0)
-                    {
-                        _previewDataFlag = true;
-                    }
-                }
-            }
+            TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.H264;
         }
 
         [Test]
@@ -99,37 +40,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task Data_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isEncodedPlaneDataSupport = false;
-            IList supportedFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedFormats)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                if (format == CameraPixelFormat.H264)
-                {
-                    isEncodedPlaneDataSupport = true;
-                }
-            }
+                TestCamera.Preview += eventWaiter;
 
-            if (isEncodedPlaneDataSupport)
-            {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += DataCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.H264;
+                TestCamera.StartPreview();
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_previewDataFlag, "Callback should be occurred.");
-
-                /* POSTCONDITION */
-                _camera.Preview -= DataCallback;
-            }
-            else
-            {
-                Assert.Pass("EncodedPlaneData format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsInstanceOf<EncodedPlane>(eventArgs.Preview.Plane);
+                Assert.That((eventArgs.Preview.Plane as EncodedPlane).Data.Length, Is.GreaterThan(0));
             }
         }
     }
index 2095701..3435daf 100755 (executable)
@@ -7,85 +7,23 @@
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
 using System.Threading.Tasks;
 
 namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.HdrCaptureProgressEventArgs class")]
-    public class HdrCaptureProgressEventArgsTests
+    public class HdrCaptureProgressEventArgsTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _hdrFlag = false;
-        private static bool _isCameraSupported = true;
-
         [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _hdrFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
+        public static void SetUp()
         {
-            if (_isCameraSupported == false)
+            if (TestCamera.Capabilities.IsHdrCaptureSupported == false)
             {
-                Assert.Pass("Camera feature is not supported.");
+                Assert.Pass("Hdr feature is not supported.");
             }
         }
 
-        public static void HdrCallback(object sender, HdrCaptureProgressEventArgs e)
-        {
-            if (e.Percent > 0)
-                _hdrFlag = true;
-        }
-
-        public static void Capturing(object sender, CameraCapturingEventArgs e)
-        {
-        }
-
-        public static void CaptureCompleted(object sender, EventArgs e)
-        {
-        }
-
         [Test]
         [Category("P1")]
         [Description("If HdrCapture feature is supported, check whether HdrCaptureProgressEventArgs.Percent returns valid value or not.")]
@@ -95,31 +33,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Percent_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            if (_camera.Capabilities.IsHdrCaptureSupported)
+            using (var eventWaiter = EventAwaiter<HdrCaptureProgressEventArgs>.Create())
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.HdrCaptureProgress += HdrCallback;
-                _camera.Capturing += Capturing;
-                _camera.CaptureCompleted += CaptureCompleted;
+                TestCamera.HdrCaptureProgress += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                _camera.StartCapture();
-                await Task.Delay(2000);
-                Assert.IsTrue(_hdrFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-                /* POSTCONDITION */
-                _camera.HdrCaptureProgress -= HdrCallback;
-                _camera.Capturing -= Capturing;
-                _camera.CaptureCompleted -= CaptureCompleted;
-            }
-            else
-            {
-                Assert.Pass("Hdr feature is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Percent, Is.GreaterThan(0));
             }
         }
     }
index 0bbde2c..a8bb2f5 100755 (executable)
@@ -13,43 +13,22 @@ namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.Location class")]
-    public class LocationTests
+    public class LocationTests : TestBase
     {
         private static Location _location = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
         private const double _latitude = 100.50;
         private const double _longitude = 100.50;
         private const double _altitude = 100.50;
-        private static bool _isCameraSupported = true;
 
         [SetUp]
-        public static void Init()
+        public static void SetUp()
         {
-            Log.Info(LogTag, "[Enter]");
-
             try
             {
                 _location = new Location(_latitude, _longitude, _altitude);
             }
             catch (PlatformNotSupportedException)
             {
-                _isCameraSupported = false;
-            }
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            _isCameraSupported = true;
-            _location = null;
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
                 Assert.Pass("Camera feature is not supported.");
             }
         }
@@ -63,9 +42,6 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Location_INIT()
         {
-            Log.Info(LogTag, "[Enter]");
-            CheckCameraSupport();
-
             var obj = new Location(_latitude, _longitude, _altitude);
             Assert.IsNotNull(obj, "Object should not be null after construction");
             Assert.IsInstanceOf<Location>(obj, "Object type should be Location");
@@ -80,10 +56,6 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Latitude_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-            CheckCameraSupport();
-
-            /* TESTCODE */
             Assert.IsNotNull(_location.Latitude, "The latitude value should not be null.");
             Assert.AreEqual(_latitude, _location.Latitude, "The latitude is not same as set value.");
         }
@@ -97,10 +69,6 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Longitude_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-            CheckCameraSupport();
-
-            /* TESTCODE */
             Assert.IsNotNull(_location.Longitude, "The longitude value should not be null.");
             Assert.AreEqual(_longitude, _location.Longitude, "The longitude is not same as set value.");
         }
@@ -114,10 +82,6 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static void Altitude_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-            CheckCameraSupport();
-
-            /* TESTCODE */
             Assert.IsNotNull(_location.Altitude, "The altitude value should not be null.");
             Assert.AreEqual(_altitude, _location.Altitude, "The altitude is not same as set value.");
         }
index 90b515c..99c7b81 100755 (executable)
@@ -7,88 +7,14 @@
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
-using System.Collections;
-using System.Linq;
 using System.Threading.Tasks;
 
 namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.MediaPacketPreviewEventArgs class")]
-    public class MediaPacketPreviewEventArgsTests
+    public class MediaPacketPreviewEventArgsTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _mediaPreviewFlag = false;
-        private static bool _isCameraSupported = true;
-
-        [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-
-                IList previewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-                foreach (CameraPixelFormat previewFormat in previewFormats)
-                {
-                    _camera.Settings.PreviewPixelFormat = previewFormat;
-                    break;
-                }
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _mediaPreviewFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void MediaPacketPreviewCallback(object sender, MediaPacketPreviewEventArgs e)
-        {
-            if (e.Packet is MediaPacket)
-                _mediaPreviewFlag = true;
-
-            e.Packet.Dispose();
-        }
-
         [Test]
         [Category("P1")]
         [Description("Test Packet property.")]
@@ -98,33 +24,21 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Packet_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            bool isMediaPacketPreviewCallbackSupported = _camera.Capabilities.IsMediaPacketPreviewCallbackSupported;
-
-            try
+            if (TestCamera.Capabilities.IsMediaPacketPreviewCallbackSupported == false)
             {
-                _camera.MediaPacketPreview += MediaPacketPreviewCallback;
+                Assert.Pass("MediaPacketPreviewCallback feature is not supported.");
             }
-            catch (NotSupportedException)
+
+            using (var eventWaiter = EventAwaiter<MediaPacketPreviewEventArgs>.Create())
             {
-                if (isMediaPacketPreviewCallbackSupported)
-                    Assert.Fail("MediaPacketPreviewCallback feature is supported. But MediaPacketPreviewCallback returns NotSupportedException.");
-                else
-                    Assert.Pass("MediaPacketPreviewCallback feature is not supported.");
-            }
+                TestCamera.MediaPacketPreview += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
-            Assert.IsTrue(_mediaPreviewFlag, "MediaPreview Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.MediaPacketPreview -= MediaPacketPreviewCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsNotNull(eventArgs.Packet);
+                eventArgs.Packet.Dispose();
+            }
         }
     }
 }
index 7ef9037..210aace 100755 (executable)
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
-using System.Collections;
-using System.Linq;
 using System.Threading.Tasks;
 
 namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.PreviewEventArgs class")]
-    public class PreviewEventArgsTests
+    public class PreviewEventArgsTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _previewFlag = false;
-        private static bool _isCameraSupported = true;
-        private static CameraPixelFormat supportedPreviewFormat = CameraPixelFormat.Invalid;
-
-        [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _previewFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void PreviewCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame preview = e.Preview;
-
-            Assert.IsTrue(preview.Format == supportedPreviewFormat, "Camera format should be matched with set value.");
-
-            if (preview.PlaneType == PlaneType.SinglePlane && preview.Plane is SinglePlane)
-            {
-                SinglePlane singlePlane = (SinglePlane)preview.Plane;
-                if (singlePlane.Data.Length > 0)
-                    _previewFlag = true;
-            }
-            else if (preview.PlaneType == PlaneType.DoublePlane && preview.Plane is DoublePlane)
-            {
-                DoublePlane doublePlane = (DoublePlane)preview.Plane;
-                if (doublePlane.Y.Length > 0 && doublePlane.UV.Length > 0)
-                    _previewFlag = true;
-            }
-            else if (preview.PlaneType == PlaneType.TriplePlane && preview.Plane is TriplePlane)
-            {
-                TriplePlane triplePlane = (TriplePlane)preview.Plane;
-                if (triplePlane.Y.Length > 0 && triplePlane.U.Length > 0 && triplePlane.V.Length > 0)
-                    _previewFlag = true;
-            }
-            else if (preview.PlaneType == PlaneType.EncodedPlane && preview.Plane is EncodedPlane)
-            {
-                EncodedPlane encodedPlane = (EncodedPlane)preview.Plane;
-                if (encodedPlane.Data.Length > 0)
-                    _previewFlag = true;
-            }
-        }
-
         [Test]
         [Category("P1")]
         [Description("Test Preview property.")]
@@ -116,29 +24,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task Preview_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            CameraTestSupport.SetDisplayOverlay(_camera);
-            _camera.Preview += PreviewCallback;
-
-            IList previewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat previewFormat in previewFormats)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                Log.Info(LogTag, "supported preview format : " + previewFormat.ToString());
-                _camera.Settings.PreviewPixelFormat = previewFormat;
-                supportedPreviewFormat = previewFormat;
-                break;
-            }
+                TestCamera.Preview += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
-            Assert.IsTrue(_previewFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.Preview -= PreviewCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsNotNull(eventArgs.Preview);
+            }
         }
     }
 }
index 2915577..ff6f7e9 100755 (executable)
@@ -15,136 +15,8 @@ namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.PreviewFrame class")]
-    public class PreviewFrameTests
+    public class PreviewFrameTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _formatFlag = false;
-        private static bool _resolutionFlag = false;
-        private static bool _timeStampFlag = false;
-        private static bool _singlePlaneFlag = false;
-        private static bool _doublePlaneFlag = false;
-        private static bool _triplePlaneFlag = false;
-        private static bool _encodedPlaneFlag = false;
-        private static bool _isCameraSupported = true;
-        private static CameraPixelFormat selectedPreviewFormat = CameraPixelFormat.Invalid;
-
-        [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _formatFlag = false;
-            _resolutionFlag = false;
-            _timeStampFlag = false;
-            _singlePlaneFlag = false;
-            _doublePlaneFlag = false;
-            _triplePlaneFlag = false;
-            _encodedPlaneFlag = false;
-            _isCameraSupported = true;
-            selectedPreviewFormat = CameraPixelFormat.Invalid;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void FormatCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame previewData = e.Preview;
-
-            if (previewData.Format == selectedPreviewFormat)
-                _formatFlag = true;
-        }
-
-        public static void ResolutionCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame previewData = e.Preview;
-
-            if (previewData.Resolution.Height > 0 && previewData.Resolution.Width > 0)
-                _resolutionFlag = true;
-        }
-
-        public static void TimeStampCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame previewData = e.Preview;
-
-            if (previewData.TimeStamp > 0)
-                _timeStampFlag = true;
-        }
-
-        public static void PlaneCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame preview = e.Preview;
-
-            Log.Info(LogTag, "Preview format : " + preview.Format.ToString());
-
-            if (preview.PlaneType == PlaneType.SinglePlane && preview.Plane is SinglePlane)
-            {
-                SinglePlane singlePlane = (SinglePlane)preview.Plane;
-                if (singlePlane.Data.Length > 0)
-                    _singlePlaneFlag = true;
-            }
-            else if (preview.PlaneType == PlaneType.DoublePlane && preview.Plane is DoublePlane)
-            {
-                DoublePlane doublePlane = (DoublePlane)preview.Plane;
-                if (doublePlane.Y.Length > 0 && doublePlane.UV.Length > 0)
-                    _doublePlaneFlag = true;
-            }
-            else if (preview.PlaneType == PlaneType.TriplePlane && preview.Plane is TriplePlane)
-            {
-                TriplePlane triplePlane = (TriplePlane)preview.Plane;
-                if (triplePlane.Y.Length > 0 && triplePlane.U.Length > 0 && triplePlane.V.Length > 0)
-                {
-                    _triplePlaneFlag = true;
-                }
-            }
-            else if (preview.PlaneType == PlaneType.EncodedPlane && preview.Plane is EncodedPlane)
-            {
-                EncodedPlane encodedPlane = (EncodedPlane)preview.Plane;
-                if (encodedPlane.Data.Length > 0)
-                    _encodedPlaneFlag = true;
-            }
-        }
-
         [Test]
         [Category("P1")]
         [Description("Check whether PreviewFrame.Format returns expected value or not.")]
@@ -154,29 +26,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public async Task Format_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            CameraTestSupport.SetDisplayOverlay(_camera);
-            _camera.Preview += FormatCallback;
-
-            IList supportedPreviewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat previewFormat in supportedPreviewFormats)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                Log.Info(LogTag, "supported preview format : " + previewFormat.ToString());
-                _camera.Settings.PreviewPixelFormat = previewFormat;
-                selectedPreviewFormat = previewFormat;
-                break;
-            }
+                TestCamera.Preview += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
-            Assert.IsTrue(_formatFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.Preview -= FormatCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Preview.Format, Is.EqualTo(TestCamera.Settings.PreviewPixelFormat));
+            }
         }
 
         [Test]
@@ -188,21 +46,16 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task Resolution_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.Preview += ResolutionCallback;
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
+            {
+                TestCamera.Preview += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
-            Assert.IsTrue(_resolutionFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.Preview -= ResolutionCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Preview.Resolution.Width, Is.GreaterThan(0));
+                Assert.That(eventArgs.Preview.Resolution.Height, Is.GreaterThan(0));
+            }
         }
 
         [Test]
@@ -214,21 +67,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task TimeStamp_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            _camera.Preview += TimeStampCallback;
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
+            {
+                TestCamera.Preview += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
-            Assert.IsTrue(_timeStampFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.Preview -= TimeStampCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Preview.TimeStamp, Is.GreaterThan(0));
+            }
         }
 
         [Test]
@@ -240,27 +87,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task Plane_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            CameraTestSupport.SetDisplayOverlay(_camera);
-            _camera.Preview += PlaneCallback;
-
-            IList supportedPreviewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat previewFormat in supportedPreviewFormats)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                _camera.Settings.PreviewPixelFormat = previewFormat;
-                break;
-            }
+                TestCamera.Preview += eventWaiter;
 
-            /* TESTCODE */
-            _camera.StartPreview();
-            await Task.Delay(500);
-            Assert.IsTrue(_singlePlaneFlag | _doublePlaneFlag | _triplePlaneFlag | _encodedPlaneFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-            /* POSTCONDITION */
-            _camera.Preview -= PlaneCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsNotNull(eventArgs.Preview.Plane);
+            }
         }
 
         [Test]
@@ -272,37 +107,23 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task PlaneType_PROPERTY_GET_ENUM_PLANETYPE_SINGLEPLANE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isSinglePlaneSupport = false;
-            IList supportedPreviewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat previewFormat in supportedPreviewFormats)
+            bool isSupportSinglePlane = TestCamera.Capabilities.SupportedPreviewPixelFormats
+                .Contains(CameraPixelFormat.Yuyv);
+            if (isSupportSinglePlane == false)
             {
-                if (previewFormat == CameraPixelFormat.Yuyv)
-                {
-                    isSinglePlaneSupport = true;
-                }
+                Assert.Pass("SinglePlane format is not supported.");
             }
 
-            if (isSinglePlaneSupport)
+            TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.Yuyv;
+
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += PlaneCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.Yuyv;
+                TestCamera.Preview += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_singlePlaneFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= PlaneCallback;
-            }
-            else
-            {
-                Assert.Pass("SinglePlane format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Preview.PlaneType, Is.EqualTo(PlaneType.SinglePlane));
             }
         }
 
@@ -315,37 +136,23 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task PlaneType_PROPERTY_GET_ENUM_PLANETYPE_DOUBLEPLANE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isDoublePlaneSupport = false;
-            IList supportedPreviewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedPreviewFormats)
+            bool isSupportDoublePlane = TestCamera.Capabilities.SupportedPreviewPixelFormats
+                .Contains(CameraPixelFormat.Nv12);
+            if (isSupportDoublePlane == false)
             {
-                if (format == CameraPixelFormat.Nv12)
-                {
-                    isDoublePlaneSupport = true;
-                }
+                Assert.Pass("DoublePlane format is not supported.");
             }
 
-            if (isDoublePlaneSupport)
+            TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.Nv12;
+
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += PlaneCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.Nv12;
+                TestCamera.Preview += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_doublePlaneFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= PlaneCallback;
-            }
-            else
-            {
-                Assert.Pass("DoublePlane format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Preview.PlaneType, Is.EqualTo(PlaneType.DoublePlane));
             }
         }
 
@@ -358,37 +165,23 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task PlaneType_PROPERTY_GET_ENUM_PLANETYPE_TRIPLEPLANE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isTriplePlaneSupport = false;
-            IList supportedPreviewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedPreviewFormats)
+            bool isSupportTriplePlane = TestCamera.Capabilities.SupportedPreviewPixelFormats
+                .Contains(CameraPixelFormat.I420);
+            if (isSupportTriplePlane == false)
             {
-                if (format == CameraPixelFormat.I420)
-                {
-                    isTriplePlaneSupport = true;
-                }
+                Assert.Pass("TriplePlane format is not supported.");
             }
 
-            if (isTriplePlaneSupport)
+            TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.I420;
+
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += PlaneCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.I420;
+                TestCamera.Preview += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_triplePlaneFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= PlaneCallback;
-            }
-            else
-            {
-                Assert.Pass("TriplePlane format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Preview.PlaneType, Is.EqualTo(PlaneType.TriplePlane));
             }
         }
 
@@ -401,37 +194,23 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task PlaneType_PROPERTY_GET_ENUM_PLANETYPE_ENCODEDPLANE()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isEncodedPlaneDataSupport = false;
-            IList supportedPreviewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedPreviewFormats)
+            bool isSupportEncodedPlane = TestCamera.Capabilities.SupportedPreviewPixelFormats
+                .Contains(CameraPixelFormat.H264);
+            if (isSupportEncodedPlane == false)
             {
-                if (format == CameraPixelFormat.H264)
-                {
-                    isEncodedPlaneDataSupport = true;
-                }
+                Assert.Pass("EncodedPlane format is not supported.");
             }
 
-            if (isEncodedPlaneDataSupport)
+            TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.H264;
+
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += PlaneCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.H264;
+                TestCamera.Preview += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_encodedPlaneFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= PlaneCallback;
-            }
-            else
-            {
-                Assert.Pass("EncodedPlaneData format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.Preview.PlaneType, Is.EqualTo(PlaneType.EncodedPlane));
             }
         }
     }
old mode 100755 (executable)
new mode 100644 (file)
index 4f1ca2c..b39eedf
@@ -7,8 +7,6 @@
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
-using System.Collections;
 using System.Linq;
 using System.Threading.Tasks;
 
@@ -16,78 +14,21 @@ namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.SinglePlane class")]
-    public class SinglePlaneTests
+    public class SinglePlaneTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _previewDataFlag = false;
-        private static bool _isCameraSupported = true;
+        public static bool _isSupportSinglePlane;
 
         [SetUp]
-        public static void Init()
+        public static void SetUp()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
+            _isSupportSinglePlane = TestCamera.Capabilities.SupportedPreviewPixelFormats
+                .Contains(CameraPixelFormat.Yuyv);
+            if (_isSupportSinglePlane == false)
             {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _previewDataFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
+                Assert.Pass("SinglePlane format is not supported.");
             }
-        }
 
-        public static void YUVDataCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame preview = e.Preview;
-            if (preview.PlaneType == PlaneType.SinglePlane)
-            {
-                if (preview.Plane is SinglePlane)
-                {
-                    SinglePlane singlePlane = (SinglePlane)preview.Plane;
-                    if (singlePlane.Data.Length > 0)
-                    {
-                        _previewDataFlag = true;
-                    }
-                }
-            }
+            TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.Yuyv;
         }
 
         [Test]
@@ -99,37 +40,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task Data_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isSinglePlaneSupport = false;
-            IList supportedFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedFormats)
-            {
-                if (format == CameraPixelFormat.Yuyv)
-                {
-                    isSinglePlaneSupport = true;
-                }
-            }
-
-            if (isSinglePlaneSupport)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += YUVDataCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.Yuyv;
+                TestCamera.Preview += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_previewDataFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= YUVDataCallback;
-            }
-            else
-            {
-                Assert.Pass("SinglePlane format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsInstanceOf<SinglePlane>(eventArgs.Preview.Plane);
+                Assert.That((eventArgs.Preview.Plane as SinglePlane).Data.Length, Is.GreaterThan(0));
             }
         }
     }
index d092fe6..a8776d5 100755 (executable)
 // you entered into with Samsung.
 
 using NUnit.Framework;
-using System;
-using System.Linq;
-using System.Collections;
 using System.Threading.Tasks;
 
 namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.StillImage class")]
-    public class StillImageTests
+    public class StillImageTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _dataFlag = false;
-        private static bool _resolutionFlag = false;
-        private static bool _formatFlag = false;
-        private static bool _exifFlag = false;
-        private static bool _isCameraSupported = true;
-
         [SetUp]
-        public static void Init()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-
-                IList previewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-                foreach (CameraPixelFormat previewFormat in previewFormats)
-                {
-                    _camera.Settings.PreviewPixelFormat = previewFormat;
-                    break;
-                }
-            }
-            catch (NotSupportedException)
-            {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _dataFlag = false;
-            _resolutionFlag = false;
-            _formatFlag = false;
-            _exifFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void DataCallback(object sender, CameraCapturingEventArgs e)
-        {
-            StillImage image = e.MainImage;
-
-            if (image != null && image.Data.Length > 0)
-                _dataFlag = true;
-        }
-
-        public static void FormatCallback(object sender, CameraCapturingEventArgs e)
-        {
-            StillImage image = e.MainImage;
-
-            if (image != null && image.Format == CameraPixelFormat.Jpeg)
-                _formatFlag = true;
-        }
-
-        public static void ResolutionCallback(object sender, CameraCapturingEventArgs e)
-        {
-            StillImage image = e.MainImage;
-
-            if (image != null && image.Resolution.Width > 0 && image.Resolution.Height > 0)
-                _resolutionFlag = true;
-        }
-
-        public static void ExifCallback(object sender, CameraCapturingEventArgs e)
-        {
-            StillImage image = e.MainImage;
-
-            if (image != null && image.Exif.Length > 0)
-                _exifFlag = true;
-        }
-
-        public static void CaptureCompletedCallback(object sender, EventArgs e)
+        public static void SetUp()
         {
+            TestCamera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
         }
 
         [Test]
@@ -132,34 +30,16 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Data_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            IList previewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat previewFormat in previewFormats)
+            using (var eventWaiter = EventAwaiter<CameraCapturingEventArgs>.Create())
             {
-                Log.Info(LogTag, "supported preview format : " + previewFormat.ToString());
-                _camera.Settings.PreviewPixelFormat = previewFormat;
-                break;
-            }
+                TestCamera.Capturing += eventWaiter;
 
-            _camera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
-            _camera.Capturing += DataCallback;
-            _camera.CaptureCompleted += CaptureCompletedCallback;
-            _camera.StartPreview();
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-            /* TESTCODE
-             * Test Data property.
-             */
-            _camera.StartCapture();
-            await Task.Delay(2000);
-            Assert.IsTrue(_dataFlag, "Callback should be called.");
-
-            /* POSTCONDITION */
-            _camera.Capturing -= DataCallback;
-            _camera.CaptureCompleted -= CaptureCompletedCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsNotNull(eventArgs.MainImage.Data);
+            }
         }
 
         [Test]
@@ -171,35 +51,17 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Resolution_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            IList previewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat previewFormat in previewFormats)
+            using (var eventWaiter = EventAwaiter<CameraCapturingEventArgs>.Create())
             {
-                Log.Info(LogTag, "supported preview format : " + previewFormat.ToString());
-                _camera.Settings.PreviewPixelFormat = previewFormat;
-                break;
-            }
+                TestCamera.Capturing += eventWaiter;
 
-            _camera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
-            _camera.Capturing += ResolutionCallback;
-            _camera.CaptureCompleted += CaptureCompletedCallback;
-            _camera.StartPreview();
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-            /* TESTCODE
-             * Test Data property.
-             */
-            _camera.StartCapture();
-            await Task.Delay(2000);
-            Assert.IsTrue(_resolutionFlag, "Callback should be called.");
-
-            /* POSTCONDITION */
-            _camera.Capturing -= ResolutionCallback;
-            _camera.CaptureCompleted -= CaptureCompletedCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.MainImage.Resolution.Width, Is.GreaterThan(0));
+                Assert.That(eventArgs.MainImage.Resolution.Height, Is.GreaterThan(0));
+            }
         }
 
         [Test]
@@ -211,35 +73,16 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Format_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            IList previewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat previewFormat in previewFormats)
+            using (var eventWaiter = EventAwaiter<CameraCapturingEventArgs>.Create())
             {
-                Log.Info(LogTag, "supported preview format : " + previewFormat.ToString());
-                _camera.Settings.PreviewPixelFormat = previewFormat;
-                break;
-            }
+                TestCamera.Capturing += eventWaiter;
 
-            _camera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
-            _camera.Capturing += FormatCallback;
-            _camera.CaptureCompleted += CaptureCompletedCallback;
-            _camera.StartPreview();
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-            /* TESTCODE
-             * Test Data property.
-             */
-            _camera.StartCapture();
-            await Task.Delay(2000);
-            Assert.IsTrue(_formatFlag, "Callback should be called.");
-
-            /* POSTCONDITION */
-            _camera.Capturing -= FormatCallback;
-            _camera.CaptureCompleted -= CaptureCompletedCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.That(eventArgs.MainImage.Format, Is.EqualTo(CameraPixelFormat.Jpeg));
+            }
         }
 
         [Test]
@@ -251,35 +94,16 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Vivek Ellur, vivek.ellur@samsung.com")]
         public static async Task Exif_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            CameraTestSupport.SetDisplayOverlay(_camera);
-
-            IList previewFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat previewFormat in previewFormats)
+            using (var eventWaiter = EventAwaiter<CameraCapturingEventArgs>.Create())
             {
-                Log.Info(LogTag, "supported preview format : " + previewFormat.ToString());
-                _camera.Settings.PreviewPixelFormat = previewFormat;
-                break;
-            }
+                TestCamera.Capturing += eventWaiter;
 
-            _camera.Settings.CapturePixelFormat = CameraPixelFormat.Jpeg;
-            _camera.Capturing += ExifCallback;
-            _camera.CaptureCompleted += CaptureCompletedCallback;
-            _camera.StartPreview();
+                TestCamera.StartPreview();
+                TestCamera.StartCapture();
 
-            /* TESTCODE
-             * Test Data property.
-             */
-            _camera.StartCapture();
-            await Task.Delay(2000);
-            Assert.IsTrue(_exifFlag, "Callback should be called.");
-
-            /* POSTCONDITION */
-            _camera.Capturing -= ExifCallback;
-            _camera.CaptureCompleted -= CaptureCompletedCallback;
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsNotNull(eventArgs.MainImage.Exif);
+            }
         }
     }
 }
old mode 100755 (executable)
new mode 100644 (file)
index 67b05bb..d4aa6f3
@@ -16,110 +16,21 @@ namespace Tizen.Multimedia.Tests
 {
     [TestFixture]
     [Description("Tests Tizen.Multimedia.TriplePlane class")]
-    public class TriplePlaneTests
+    public class TriplePlaneTests : TestBase
     {
-        private static Camera _camera = null;
-        private const string LogTag = "Tizen.Multimedia.CameraTest";
-        private static bool _previewDataFlag = false;
-        private static bool _isCameraSupported = true;
+        public static bool _isSupportTriplePlane;
 
         [SetUp]
-        public static void Init()
+        public static void SetUp()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            try
-            {
-                _camera = new Camera(CameraDevice.Rear);
-            }
-            catch (NotSupportedException)
+            _isSupportTriplePlane = TestCamera.Capabilities.SupportedPreviewPixelFormats
+                .Contains(CameraPixelFormat.I420);
+            if (_isSupportTriplePlane == false)
             {
-                _isCameraSupported = false;
-            }
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        [TearDown]
-        public static void Destroy()
-        {
-            Log.Info(LogTag, "[Enter]");
-
-            if (_camera != null)
-            {
-                if (_camera.State == CameraState.Captured)
-                {
-                    _camera.StartPreview();
-                    _camera.StopPreview();
-                }
-                else if (_camera.State == CameraState.Preview)
-                {
-                    _camera.StopPreview();
-                }
-
-                _camera.Dispose();
-            }
-
-            _previewDataFlag = false;
-            _isCameraSupported = true;
-
-            Log.Info(LogTag, "[End]");
-        }
-
-        private static void CheckCameraSupport()
-        {
-            if (_isCameraSupported == false)
-            {
-                Assert.Pass("Camera feature is not supported.");
-            }
-        }
-
-        public static void YDataCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame preview = e.Preview;
-            if (preview.PlaneType == PlaneType.TriplePlane)
-            {
-                if (preview.Plane is TriplePlane)
-                {
-                    TriplePlane triplePlane = (TriplePlane)preview.Plane;
-                    if (triplePlane.Y.Length > 0)
-                    {
-                        _previewDataFlag = true;
-                    }
-                }
+                Assert.Pass("TriplePlane format is not supported.");
             }
-        }
 
-        public static void UDataCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame preview = e.Preview;
-            if (preview.PlaneType == PlaneType.TriplePlane)
-            {
-                if (preview.Plane is TriplePlane)
-                {
-                    TriplePlane triplePlane = (TriplePlane)preview.Plane;
-                    if (triplePlane.U.Length > 0)
-                    {
-                        _previewDataFlag = true;
-                    }
-                }
-            }
-        }
-
-        public static void VDataCallback(object sender, PreviewEventArgs e)
-        {
-            PreviewFrame preview = e.Preview;
-            if (preview.PlaneType == PlaneType.TriplePlane)
-            {
-                if (preview.Plane is TriplePlane)
-                {
-                    TriplePlane triplePlane = (TriplePlane)preview.Plane;
-                    if (triplePlane.V.Length > 0)
-                    {
-                        _previewDataFlag = true;
-                    }
-                }
-            }
+            TestCamera.Settings.PreviewPixelFormat = CameraPixelFormat.I420;
         }
 
         [Test]
@@ -131,37 +42,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task Y_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isTriplePlaneSupport = false;
-            IList supportedFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedFormats)
-            {
-                if (format == CameraPixelFormat.I420)
-                {
-                    isTriplePlaneSupport = true;
-                }
-            }
-
-            if (isTriplePlaneSupport)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += YDataCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.I420;
+                TestCamera.Preview += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_previewDataFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= YDataCallback;
-            }
-            else
-            {
-                Assert.Pass("TriplePlane format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsInstanceOf<TriplePlane>(eventArgs.Preview.Plane);
+                Assert.That((eventArgs.Preview.Plane as TriplePlane).Y.Length, Is.GreaterThan(0));
             }
         }
 
@@ -174,37 +63,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task U_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isTriplePlaneSupport = false;
-            IList supportedFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedFormats)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                if (format == CameraPixelFormat.I420)
-                {
-                    isTriplePlaneSupport = true;
-                }
-            }
-
-            if (isTriplePlaneSupport)
-            {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += UDataCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.I420;
+                TestCamera.Preview += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_previewDataFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= UDataCallback;
-            }
-            else
-            {
-                Assert.Pass("TriplePlane format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsInstanceOf<TriplePlane>(eventArgs.Preview.Plane);
+                Assert.That((eventArgs.Preview.Plane as TriplePlane).U.Length, Is.GreaterThan(0));
             }
         }
 
@@ -217,37 +84,15 @@ namespace Tizen.Multimedia.Tests
         [Property("AUTHOR", "Haesu Gwon, haesu.gwon@samsung.com")]
         public static async Task V_PROPERTY_READ_ONLY()
         {
-            Log.Info(LogTag, "[Enter]");
-
-            CheckCameraSupport();
-
-            bool isTriplePlaneSupport = false;
-            IList supportedFormats = _camera.Capabilities.SupportedPreviewPixelFormats.ToList();
-            foreach (CameraPixelFormat format in supportedFormats)
-            {
-                if (format == CameraPixelFormat.I420)
-                {
-                    isTriplePlaneSupport = true;
-                }
-            }
-
-            if (isTriplePlaneSupport)
+            using (var eventWaiter = EventAwaiter<PreviewEventArgs>.Create())
             {
-                CameraTestSupport.SetDisplayOverlay(_camera);
-                _camera.Preview += VDataCallback;
-                _camera.Settings.PreviewPixelFormat = CameraPixelFormat.I420;
+                TestCamera.Preview += eventWaiter;
 
-                /* TESTCODE */
-                _camera.StartPreview();
-                await Task.Delay(500);
-                Assert.IsTrue(_previewDataFlag, "Callback should be occurred.");
+                TestCamera.StartPreview();
 
-                /* POSTCONDITION */
-                _camera.Preview -= VDataCallback;
-            }
-            else
-            {
-                Assert.Pass("TriplePlane format is not supported.");
+                var eventArgs = await eventWaiter.GetResultAsync();
+                Assert.IsInstanceOf<TriplePlane>(eventArgs.Preview.Plane);
+                Assert.That((eventArgs.Preview.Plane as TriplePlane).V.Length, Is.GreaterThan(0));
             }
         }
     }
diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/support/CameraTestSupport.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/support/CameraTestSupport.cs
deleted file mode 100755 (executable)
index b002f84..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-using ElmSharp;
-using Tizen.Multimedia;
-
-internal static class CameraTestSupport
-{
-    internal static void SetDisplayOverlay(Camera camera)
-    {
-        camera.Display = new Display(new Window("CameraTest"));
-    }
-
-    internal static void SetDisplaySurface(Camera camera)
-    {
-        camera.Display = new Display(new MediaView(new Window("CameraTest")));
-    }
-}
diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/support/Features.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/support/Features.cs
new file mode 100755 (executable)
index 0000000..4e07aa6
--- /dev/null
@@ -0,0 +1,5 @@
+internal static class Features
+{
+    public const string PrimaryCamera = "http://tizen.org/feature/camera";
+    public const string SecondaryCamera = "http://tizen.org/feature/camera.front";
+}
diff --git a/tct-suite-vs/Tizen.Camera.Tests/testcase/support/TestBase.cs b/tct-suite-vs/Tizen.Camera.Tests/testcase/support/TestBase.cs
new file mode 100755 (executable)
index 0000000..10cbbda
--- /dev/null
@@ -0,0 +1,74 @@
+using ElmSharp;
+using NUnit.Framework;
+using System;
+using System.Linq;
+using Tizen.Multimedia;
+
+public class TestBase
+{
+    public static Camera TestCamera { get; private set; }
+
+    [SetUp]
+    public void SetUpBase()
+    {
+        try
+        {
+            TestCamera = new Camera(CameraDevice.Rear);
+            TestCamera.Settings.PreviewPixelFormat = TestCamera.Capabilities.SupportedPreviewPixelFormats.FirstOrDefault();
+        }
+        catch (NotSupportedException) when (FeatureChecker.IsSupported(Features.PrimaryCamera) == false)
+        {
+            Assert.Pass("Camera feature is not supported.");
+        }
+
+        /// Default test window type is overlay.
+        try
+        {
+            TestCamera.Display = new Display(CreateWindow());
+        }
+        catch (NotSupportedException)
+        {
+            Assert.Pass("Overlay display type is not supported.");
+        }
+        catch
+        {
+            Assert.Fail("Set display for overlay type is failed.");
+        }
+    }
+
+    [TearDown]
+    public void TearDownBase()
+    {
+        if (TestCamera != null)
+        {
+            if (TestCamera.State == CameraState.Captured)
+            {
+                TestCamera.StartPreview();
+                TestCamera.StopPreview();
+            }
+            else if (TestCamera.State == CameraState.Preview)
+            {
+                TestCamera.StopPreview();
+            }
+
+            TestCamera.Dispose();
+        }
+    }
+
+    internal static bool IsSupportedSecondaryCamera()
+    {
+        return FeatureChecker.IsSupported(Features.SecondaryCamera);
+    }
+
+    internal static Window CreateWindow()
+    {
+        var w = new Window("");
+        w.Resize(100, 100);
+        w.Realize(null);
+        return w;
+    }
+
+    public static Display CameraOverlayDisplay = new Display(CreateWindow());
+
+    public static Display CameraSurfaceDisplay = new Display(new MediaView(CreateWindow()));
+}