--- /dev/null
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26730.10
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NUIWatchApplicationManualTest", "NUIWatchApplicationManualTest\NUIWatchApplicationManualTest.csproj", "{3CCFB033-EDFD-472B-82F7-BCD4AA3163BE}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {3CCFB033-EDFD-472B-82F7-BCD4AA3163BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3CCFB033-EDFD-472B-82F7-BCD4AA3163BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3CCFB033-EDFD-472B-82F7-BCD4AA3163BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3CCFB033-EDFD-472B-82F7-BCD4AA3163BE}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {40E0500D-E58D-46F8-8B41-601620A0F39F}
+ EndGlobalSection
+EndGlobal
--- /dev/null
+using System;
+using Tizen.Applications;
+using Tizen;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.UIComponents;
+
+namespace NUIWatchApplicationManualTest
+{
+ public class NUIWatchApplicationManualTest : NUIWatchApplication
+ {
+ public void OnButtonPressed()
+ {
+ Log.Fatal("TCT", "Call Exit()");
+ Exit();
+ }
+ protected override void OnPreCreate()
+ {
+ Log.Fatal("TCT", "[TestCase][OnPreCreate][NUIWatchApplication] Pass");
+ base.OnPreCreate();
+ }
+ protected override void OnCreate()
+ {
+ Tizen.NUI.Window.Instance.BackgroundColor = Color.White;
+
+ PushButton exitButton = new PushButton();
+ exitButton.LabelText = "EXIT";
+ exitButton.Size2D = new Size2D(200, 80);
+ exitButton.Position2D = new Position2D(80, 120);
+
+ exitButton.Clicked += (obj, e) =>
+ {
+ Exit();
+ return true;
+ };
+ Window.Instance.Add(exitButton);
+
+ FocusManager.Instance.SetCurrentFocusView(exitButton);
+
+ base.OnCreate();
+
+ Log.Fatal("TCT", "[TestCase][OnCreate][NUIWatchApplication] Pass");
+ }
+
+ protected override void OnResume()
+ {
+ Log.Fatal("TCT", "[TestCase][OnResume][NUIWatchApplication] Pass");
+ base.OnResume();
+ }
+
+ protected new void OnPause()
+ {
+ Log.Fatal("TCT", "[TestCase][OnPause][NUIWatchApplication] Pass");
+ base.OnPause();
+ }
+
+ protected override void OnTerminate()
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnTerminate()");
+ Log.Fatal("TCT", "[TestCase][OnTerminate][NUIWatchApplication] Pass");
+ base.OnTerminate();
+ }
+
+ protected override void OnAppControlReceived(AppControlReceivedEventArgs e)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnAppControlReceived()");
+ if (e.ReceivedAppControl != null)
+ {
+ Log.Fatal("TCT", "[TestCase][Test_Properties] ReceivedAppControl properties is not null");
+ Log.Fatal("TCT", "[TestCase][Test_Properties] ReceivedAppControl Type: " + e.ReceivedAppControl.GetType());
+ }
+ Log.Fatal("TCT", "[TestCase][OnAppControlReceived][NUIWatchApplication] Pass");
+
+ base.OnAppControlReceived(e);
+ ShowPropertiesInfo();
+ }
+
+ protected override void OnLocaleChanged(LocaleChangedEventArgs e)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnLocaleChanged()");
+ if (e.Locale != null)
+ {
+ Log.Fatal("TCT", "[Test_Properties] Locale properties is not null");
+ Log.Fatal("TCT", "[Test_Properties] Current value of Locale : " + e.Locale);
+ Log.Fatal("TCT", "[Test_Properties] Locale type: " + e.Locale.GetType());
+ }
+
+ Log.Fatal("TCT", "[TestCase][OnLocaleChanged][NUIWatchApplication] Pass");
+ base.OnLocaleChanged(e);
+ }
+
+ protected override void OnRegionFormatChanged(RegionFormatChangedEventArgs e)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnRegionFormatChanged()");
+ if (e != null)
+ {
+ Log.Fatal("TCT", "[Test_Properties] Region properties is not null");
+ Log.Fatal("TCT", "[Test_Properties] Current value of Region : " + e.Region);
+ Log.Fatal("TCT", "[Test_Properties] Region type: " + e.Region.GetType());
+ }
+
+ Log.Fatal("TCT", "[TestCase][OnRegionFormatChanged][NUIWatchApplication] Pass");
+ base.OnRegionFormatChanged(e);
+ }
+
+ protected override void OnDeviceOrientationChanged(DeviceOrientationEventArgs e)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnDeviceOrientationChanged()");
+ if (e != null)
+ {
+ Log.Fatal("TCT", "[Test_Properties] DeviceOrientation properties is not null");
+ Log.Fatal("TCT", "[Test_Properties] Current value of DeviceOrientation : " + e.DeviceOrientation);
+ Log.Fatal("TCT", "[Test_Properties] DeviceOrientation type: " + e.DeviceOrientation.GetType());
+ }
+
+ Log.Fatal("TCT", "[TestCase][OnDeviceOrientationChanged][NUIWatchApplication] Pass");
+ base.OnDeviceOrientationChanged(e);
+ }
+
+ protected override void OnLowMemory(LowMemoryEventArgs e)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnLowMemory()");
+ if (e.LowMemoryStatus != LowMemoryStatus.None)
+ {
+ Log.Fatal("TCT", "[Test_Properties] LowMemoryStatus properties is not null");
+ Log.Fatal("TCT", "[Test_Properties] Current value of LowMemoryStatus : " + e.LowMemoryStatus.ToString());
+ Log.Fatal("TCT", "[Test_Properties] LowMemoryStatus type: " + e.LowMemoryStatus.GetType());
+ }
+ Log.Fatal("TCT", "[TestCase][OnLowMemory][NUIWatchApplication] Pass");
+
+ base.OnLowMemory(e);
+ }
+
+ protected override void OnLowBattery(LowBatteryEventArgs e)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnLowBattery()");
+ if (e.LowBatteryStatus != LowBatteryStatus.None)
+ {
+ Log.Fatal("TCT", "[Test_Properties] LowBatteryStatus properties is not null");
+ Log.Fatal("TCT", "[Test_Properties] Current value of LowBatteryStatus : " + e.LowBatteryStatus.ToString());
+ Log.Fatal("TCT", "[Test_Properties] LowBatteryStatus type: " + e.LowBatteryStatus.GetType());
+ }
+
+ Log.Fatal("TCT", "[TestCase][OnLowBattery][NUIWatchApplication] Pass");
+
+ base.OnLowBattery(e);
+ }
+
+ public override void Run(string[] args)
+ {
+ Created += Created_Event_Test;
+ AppControlReceived += AppControlReceived_Event_Test;
+ LocaleChanged += LocaleChanged_Event_Test;
+ LowMemory += LowMemory_Event_Test;
+ LowBattery += LowBattery_Event_Test;
+ Terminated += Terminated_Event_Test;
+ Paused += Paused_Event_Test;
+ Resumed += Resumed_Event_Test;
+ DeviceOrientationChanged += DeviceOrientationCHanged_Event_Test;
+ RegionFormatChanged += RegionFormatChanged_Event_Test;
+ TimeTick += TimeTickEvent;
+ AmbientTick += AmbientTickEvent;
+ AmbientChanged += AmbientChangedEvent;
+
+ Log.Fatal("TCT", "[TestCase][Run][NUIWatchApplication] Pass");
+
+ base.Run(args);
+ }
+
+ private void Terminated_Event_Test(object sender, EventArgs e)
+ {
+ /*
+ * SCENARIO:
+ * Launch app
+ * -> If log show "NUIWatchApplication::Terminated_Event_Test()" -> PASS
+ */
+ Log.Fatal("TCT", "NUIWatchApplication::Terminated_Event_Test");
+ Log.Fatal("TCT", "[TestCase][Terminated_Event_Test][NUIWatchApplication] Pass");
+ }
+
+ private void LocaleChanged_Event_Test(object sender, LocaleChangedEventArgs e)
+ {
+ /*
+ * SCENARIO:
+ * Launch app
+ * -> If log show "NUIWatchApplication::LocaleChanged_Event_Test()" -> PASS
+ */
+ Log.Fatal("TCT", "NUIWatchApplication::LocaleChanged_Event_Test");
+ Log.Fatal("TCT", "NUIWatchApplication::LocaleChanged_Event_Test: new located - " + e.Locale);
+ Log.Fatal("TCT", "[TestCase][LocaleChanged_Event_Test][NUIWatchApplication] Pass");
+ }
+
+ private void RegionFormatChanged_Event_Test(object sender, RegionFormatChangedEventArgs e)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::RegionFormatChanged_Event_Test");
+ Log.Fatal("TCT", "NUIWatchApplication::RegionFormatChanged_Event_Test: new region - " + e.Region);
+ Log.Fatal("TCT", "[TestCase][RegionFormatChanged_Event_Test][NUIWatchApplication] Pass");
+ }
+
+ private void DeviceOrientationCHanged_Event_Test(object sender, DeviceOrientationEventArgs e)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::DeviceOrientationCHanged_Event_Test");
+ Log.Fatal("TCT", "NUIWatchApplication::DeviceOrientationCHanged_Event_Test: new located - " + e.DeviceOrientation);
+ Log.Fatal("TCT", "[TestCase][DeviceOrientationCHanged_Event_Test][NUIWatchApplication] Pass");
+ }
+
+ private void LowMemory_Event_Test(object sender, LowMemoryEventArgs e)
+ {
+ /*
+ * SCENARIO:
+ * Launch app
+ * -> If log show "NUIWatchApplication::LowMemory_Event_Test()" -> PASS
+ */
+ Log.Fatal("TCT", "NUIWatchApplication::LowMemory_Event_Test");
+ if (e.LowMemoryStatus == LowMemoryStatus.None)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::LowMemory_Event_Test: LowMemoryStatus.None");
+ }
+ else if (e.LowMemoryStatus == LowMemoryStatus.Normal)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::LowMemory_Event_Test: LowMemoryStatus.Normal");
+ }
+ else if (e.LowMemoryStatus == LowMemoryStatus.SoftWarning)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::LowMemory_Event_Test: LowMemoryStatus.SoftWarning");
+ }
+ else if (e.LowMemoryStatus == LowMemoryStatus.HardWarning)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::LowMemory_Event_Test: LowMemoryStatus.HardWarning");
+ }
+ Log.Fatal("TCT", "[TestCase][LowMemory_Event_Test][NUIWatchApplication] Pass");
+ }
+
+ private void LowBattery_Event_Test(object sender, LowBatteryEventArgs e)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::LowBattery_Event_Test");
+
+ if (e.LowBatteryStatus == LowBatteryStatus.CriticalLow)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::LowBattery_Event_Test: LowMemoryStatus.CriticalLow");
+ }
+ Log.Fatal("TCT", "[TestCase][LowBattery_Event_Test][NUIWatchApplication] Pass");
+ }
+
+ private void AppControlReceived_Event_Test(object sender, AppControlReceivedEventArgs e)
+ {
+ /*
+ * SCENARIO:
+ * Launch app
+ * -> If log show "NUIWatchApplication::AppControlReceived_Event_Test()" -> PASS
+ */
+ Log.Fatal("TCT", "NUIWatchApplication::AppControlReceived_Event_Test");
+ Log.Fatal("TCT", "[TestCase][AppControlReceived_Event_Test][NUIWatchApplication] Pass");
+ }
+
+ private void Created_Event_Test(object sender, EventArgs e)
+ {
+ /*
+ * SCENARIO:
+ * Launch app
+ * -> If log show "NUIWatchApplication::Created_Event_Test()" -> PASS
+ */
+ Log.Fatal("TCT", "NUIWatchApplication::Created_Event_Test");
+ Log.Fatal("TCT", "[TestCase][Created_Event_Test][NUIWatchApplication] Pass");
+ }
+ public void Paused_Event_Test(object sender, EventArgs e)
+ {
+ /*
+ * PRECONDITION
+ * 1. Open NUIWatchApplication app.
+ * 2. Open other app.
+ */
+ Log.Fatal("TCT", "[TestCase][Paused_Event_Test][NUIWatchApplication] Pass");
+ }
+ public void Resumed_Event_Test(object sender, EventArgs e)
+ {
+ /*
+ * PRECONDITION
+ * 1. Open NUIWatchApplication app.
+ * 2. Open other app.
+ * 3. Long press HOME button and tap to NUIApplicaton shortcut.
+ */
+ Log.Fatal("TCT", "NUIWatchApplication Resumed event occur!");
+ Log.Fatal("TCT", "[TestCase][Resumed_Event_Test][NUIWatchApplication] Pass");
+ }
+
+ public override void Exit()
+ {
+ Log.Fatal("TCT", "[TestCase][Exit][NUIWatchApplication] Pass");
+ base.Exit();
+ }
+ void ShowPropertiesInfo()
+ {
+ if (base.ApplicationInfo != null)
+ {
+ Log.Fatal("TCT", "[Info] ApplicationInfo is not null");
+ Log.Fatal("TCT", "[Info] ApplicationInfo.ApplicationId = " + base.ApplicationInfo.ApplicationId);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.ApplicationType = " + base.ApplicationInfo.ApplicationType);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.ExecutablePath = " + base.ApplicationInfo.ExecutablePath);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.ExternalSharedDataPath = " + base.ApplicationInfo.ExternalSharedDataPath);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.IconPath = " + base.ApplicationInfo.IconPath);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.IsNoDisplay = " + base.ApplicationInfo.IsNoDisplay);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.IsOnBoot = " + base.ApplicationInfo.IsOnBoot);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.IsPreload = " + base.ApplicationInfo.IsPreload);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.Label = " + base.ApplicationInfo.Label);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.Metadata Count = " + base.ApplicationInfo.Metadata.Count);
+ foreach (var item in base.ApplicationInfo.Metadata)
+ {
+ Log.Fatal("TCT", "[Info] ApplicationInfo.Metadata, Key: " + item.Key + " Value: " + item.Value);
+ }
+ Log.Fatal("TCT", "[Info] ApplicationInfo.PackageId = " + base.ApplicationInfo.PackageId);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.SharedDataPath = " + base.ApplicationInfo.SharedDataPath);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.SharedResourcePath = " + base.ApplicationInfo.SharedResourcePath);
+ Log.Fatal("TCT", "[Info] ApplicationInfo.SharedTrustedPath = " + base.ApplicationInfo.SharedTrustedPath);
+ }
+ if (base.DirectoryInfo != null)
+ {
+ Log.Fatal("TCT", "[Info] DirectoryInfo is not null");
+ Log.Fatal("TCT", "[Info] DirectoryInfo.Cache = " + base.DirectoryInfo.Cache);
+ Log.Fatal("TCT", "[Info] DirectoryInfo.Data = " + base.DirectoryInfo.Data);
+ Log.Fatal("TCT", "[Info] DirectoryInfo.ExpansionPackageResource = " + base.DirectoryInfo.ExpansionPackageResource);
+ Log.Fatal("TCT", "[Info] DirectoryInfo.ExternalCache = " + base.DirectoryInfo.ExternalCache);
+ Log.Fatal("TCT", "[Info] DirectoryInfo.ExternalData = " + base.DirectoryInfo.ExternalData);
+ Log.Fatal("TCT", "[Info] DirectoryInfo.ExternalSharedData = " + base.DirectoryInfo.ExternalSharedData);
+ Log.Fatal("TCT", "[Info] DirectoryInfo.Resource = " + base.DirectoryInfo.Resource);
+ Log.Fatal("TCT", "[Info] DirectoryInfo.SharedData = " + base.DirectoryInfo.SharedData);
+ Log.Fatal("TCT", "[Info] DirectoryInfo.SharedResource = " + base.DirectoryInfo.SharedResource);
+ Log.Fatal("TCT", "[Info] DirectoryInfo.SharedTrusted = " + base.DirectoryInfo.SharedTrusted);
+ }
+
+ Log.Fatal("TCT", "[Info] Current == this : " + (Current == this));
+ Log.Fatal("TCT", "[Info] Current.ApplicationInfo.ApplicationId = " + Current.ApplicationInfo.ApplicationId);
+ }
+
+ protected override void OnTimeTick(TimeTickEventArgs time)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnTimeTick()");
+ Log.Fatal("TCT", "[TestCase][OnTimeTick][NUIWatchApplication] Pass");
+ base.OnTimeTick(time);
+
+ //int hour = time.Time.Hour24;
+ //int min = time.Time.Minute;
+ //int sec = time.Time.Second;
+
+ //if (sec % 10 == 5)
+ //{
+ // Log.Warn("WATCH", "[TestCase][TCT] TimeEventArgs hour : " + hour + " : " + min + " : " + sec);
+ //}
+
+ //string currentTime;
+
+ //if (hour < 10)
+ // currentTime = "0" + hour.ToString() + " : ";
+ //else
+ // currentTime = hour.ToString() + " : ";
+
+ //if (min < 10)
+ // currentTime += "0" + min.ToString() + " : ";
+ //else
+ // currentTime += min.ToString() + " : ";
+
+
+ //if (sec < 10)
+ // currentTime += "0" + sec.ToString();
+ //else
+ // currentTime += sec.ToString();
+
+ //_time.Text = currentTime;
+ }
+
+ protected override void OnAmbientTick(AmbientTickEventArgs time)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnAmbientTick()");
+ Log.Fatal("TCT", "[TestCase][OnAmbientTick][NUIWatchApplication] Pass");
+ base.OnAmbientTick(time);
+ }
+
+ protected override void OnAmbientChanged(AmbientChangedEventArgs mode)
+ {
+ Log.Fatal("TCT", "NUIWatchApplication::OnAmbientChanged()");
+ Log.Fatal("TCT", "[TestCase][OnAmbientChanged][NUIWatchApplication] Pass");
+ base.OnAmbientChanged(mode);
+ }
+
+ private void AmbientChangedEvent(object sender, EventArgs e)
+ {
+ Log.Warn("WATCH", "[TestCase][TCT] AmbientChangedEvent");
+ }
+
+ private void AmbientTickEvent(object sender, EventArgs e)
+ {
+ Log.Warn("WATCH", "[TestCase][TCT] AmbientTickEvent");
+ }
+
+ private void TimeTickEvent(object sender, EventArgs e)
+ {
+ Log.Warn("WATCH", "[TestCase][TCT] TimeTickEvent");
+ }
+
+ private void PausedEvent(object sender, EventArgs e)
+ {
+ Log.Warn("WATCH", "[TestCase][TCT] PausedEvent");
+ }
+
+ private void ResumedEvent(object sender, EventArgs e)
+ {
+ Log.Warn("WATCH", "[TestCase][TCT] ResumedEvent");
+ }
+ }
+
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ Log.Warn("WATCH", "[TestCase][TCT] Main ");
+
+ NUIWatchApplicationManualTest app = new NUIWatchApplicationManualTest();
+ app.Run(args);
+ }
+ }
+}
--- /dev/null
+<Project>
+ <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
+
+ <!-- Setting Tizen Extension Path -->
+ <PropertyGroup Label="Globals">
+ <TizenProjectExtensionsPath>$(MSBuildExtensionsPath)\Tizen\VisualStudio\</TizenProjectExtensionsPath>
+ </PropertyGroup>
+
+ <!-- Import Tizen property in Tizen.NET SDK -->
+ <Import Project="$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.props" Condition="Exists('$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.props')" />
+
+ <!-- Property Group for .NET Core Project -->
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>netcoreapp2.0</TargetFramework>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugType>portable</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>None</DebugType>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Folder Include="lib\" />
+ <Folder Include="res\" />
+ </ItemGroup>
+
+ <!-- Include Nuget Package for Tizen Project building -->
+ <ItemGroup>
+ <PackageReference Include="Tizen.NET" Version="6.0.0.14677" />
+ <PackageReference Include="Tizen.NET.Sdk" Version="1.0.1" />
+ </ItemGroup>
+
+ <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
+ <Import Project="$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.targets" Condition="Exists('$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.targets')" />
+
+ <!-- Install Check 'Visual Studio for Tizen' for developing on Visual Studio -->
+ <Target Name="TizenVsixInstallCheck" BeforeTargets="CompileDesignTime">
+ <Warning Condition="!Exists('$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.props')" Text="$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.props is not exist.
 you need to check if 'Visual Studio for Tizen' is installed" />
+ <Warning Condition="!Exists('$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.targets')" Text="$(TizenProjectExtensionsPath)Tizen.NET.ProjectType.targets is not exist.\
 you need to check if 'Visual Studio for Tizen' is installed" />
+ </Target>
+</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="org.tizen.example.NUIWatchApplicationManualTest" version="1.0.0" api-version="5" xmlns="http://tizen.org/ns/packages">
+ <profile name="wearable" />
+ <privileges>
+ <privilege>http://tizen.org/privilege/alarm.set</privilege>
+ </privileges>
+ <provides-appdefined-privileges />
+</manifest>
--- /dev/null
+/*
+* Copyright (c) 2017 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+using System;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+using NUnitLite.TUnit;
+using NUnit.Framework.Interfaces;
+using NUnit.Framework.TUnit;
+using System.Reflection;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.UIComponents;
+
+namespace Tizen.NUI.Wearable.Tests
+{
+ class ManualTestNUI
+ {
+ private List<string> _tcIDList;
+ private List<ItemData> _listItem;
+ private TSettings _tsettings;
+ private TRunner _tRunner;
+ private NavigationButton _pressButton = NavigationButton.NA;
+ private PushButton passButton, failButton, blockButton, homeButton, preButton, nextButton, doneButton;
+ private TextLabel notRun;
+ private const string STEP_ATTRIBUTE_NAME = "NUnit.Framework.StepAttribute";
+ private const string PRECONDITION_ATTRIBUTE_NAME = "NUnit.Framework.PreconditionAttribute";
+ private const string POSTCONDITION_ATTRIBUTE_NAME = "NUnit.Framework.PostconditionAttribute";
+ //For TV KantM
+ //private static float PointSize = 30.0f;
+ //private static float ButtonSizeWidth = 200;
+ private static float PointSize = 5.0f;
+ private static float PixelSize = 20.0f;
+
+
+ //Save the information of every single test case
+ private List<TestcaseInfo> TCInfoList;
+ private List<string> CurrentTCInfo;
+
+ private static ManualTestNUI instance;
+ private static Object lockObject = new object();
+
+ //Show the result of all the test case
+ private TextLabel _summaryLabel;
+ ScrollView _scrollView;
+ private View _initView;
+ private View _detailView;
+ private TableView _initList;
+ private TableView _detailList;
+ private View _caseView;
+ private TableView _buttonContainer;
+ private TableView _firstPageContainer;
+ private PushButton run;
+ private PushButton runButton;
+ private PushButton[] buttonList;
+
+ //Always save the current TC number;
+ private int CurrentTCNum = 0;
+
+ private const float RowSpacing = 0.0f;
+ private const float TopMargin = 0.0f;
+ private const float BottomMargin = 0.0f;
+ private const float SideMargin = 5.0f;
+ private const float ItemHeight = 30.0f;
+
+ public static ManualTestNUI GetInstance()
+ {
+ lock (lockObject)
+ {
+ if (instance == null)
+ {
+ instance = new ManualTestNUI();
+ }
+ }
+ return instance;
+ }
+
+ private ManualTestNUI()
+ {
+ Initialize();
+ }
+ public void Initialize()
+ {
+ Tizen.Log.Fatal("NUI", "NUI Initialize");
+ PointSize = (1.0f / Window.Instance.Dpi.Length()) * 2000.0f;
+ RunType.Value = RunType.MANUAL;
+ _tRunner = new TRunner();
+ _tRunner.LoadTestsuite();
+ _tRunner.SingleTestDone += OnSingleTestDone;
+ _tcIDList = new List<string>();
+ _listItem = new List<ItemData>();
+ int count = 0;
+ foreach (KeyValuePair<string, ITest> pair in _tRunner.GetTestList())
+ {
+ _listItem.Add(new ItemData { No = count, TCName = pair.Key, Result = StrResult.NOTRUN });
+ _tcIDList.Add(pair.Key);
+ count++;
+ }
+ Tizen.Log.Fatal("NUI", "TCT : count:" + count.ToString());
+ foreach (String nameTc in _tcIDList)
+ {
+ Tizen.Log.Fatal("NUI", "TCT : TCName:" + nameTc.ToString());
+ }
+
+
+ _tsettings = TSettings.GetInstance();
+ _tsettings.IsManual = true;
+
+ InitData();
+ _caseView = new View();
+ Window.Instance.GetDefaultLayer().Add(_caseView);
+ Window window = Window.Instance;
+ window.BackgroundColor = Color.White;
+
+ _summaryLabel = new TextLabel();
+ _summaryLabel.PixelSize = PixelSize;
+ _summaryLabel.Size2D = new Size2D((int)Window.Instance.Size.Width, 60);
+ _summaryLabel.ParentOrigin = Position.ParentOriginTopLeft;
+ _summaryLabel.PivotPoint = PivotPoint.TopLeft;
+ _summaryLabel.Position = new Position(0, 5, 0);
+ _summaryLabel.HorizontalAlignment = HorizontalAlignment.Center;
+ _summaryLabel.VerticalAlignment = VerticalAlignment.Center;
+
+ SetSummaryResult();
+ window.GetDefaultLayer().Add(_summaryLabel);
+
+ _initView = new View();
+ _initView.Size2D = new Size2D((int)Window.Instance.Size.Width, (int)Window.Instance.Size.Height - 65);
+ _initView.ParentOrigin = Position.ParentOriginTopLeft;
+ _initView.PivotPoint = PivotPoint.TopLeft;
+ _initView.Position = new Position(0.0f, 70.0f, 0.0f);
+ InitializeFirstPage();
+ _initView.Show();
+
+ _detailView = new View();
+ _initView.Size2D = new Size2D((int)Window.Instance.Size.Width, (int)Window.Instance.Size.Height - 65);
+ _detailView.ParentOrigin = Position.ParentOriginTopLeft;
+ _detailView.PivotPoint = PivotPoint.TopLeft;
+ _detailView.Position = new Position(0.0f, 70.0f, 0.0f);
+ InitializeDetailPage();
+ _detailView.Hide();
+
+ window.GetDefaultLayer().Add(_initView);
+ window.GetDefaultLayer().Add(_detailView);
+
+ FocusManager.Instance.SetCurrentFocusView(run);
+ }
+
+ void InitializeFirstPage()
+ {
+ //Create Run Button, when you Click it, then the first test case will be executed.
+ doneButton = new PushButton();
+ doneButton.Focusable = true;
+ doneButton.LabelText = "Done";
+ doneButton.Clicked += (obj, ee) =>
+ {
+ TSettings.GetInstance().SubmitManualResult();
+ return false;
+ };
+
+ run = new PushButton();
+ run.LabelText = "Runner";
+ run.Clicked += (obj, ee) =>
+ {
+ Tizen.Log.Fatal("NUI", "Check all the test case from the first one.");
+ CurrentTCNum = 0;
+ _initView.Hide();
+ _caseView.Hide();
+ UpdateDetailPage();
+ _detailView.Show();
+ FocusManager.Instance.SetCurrentFocusView(runButton);
+ return false;
+ };
+
+ run.RightFocusableView = doneButton;
+ doneButton.LeftFocusableView = run;
+
+ //To show all the test case information(Number _className._TCName [result]).
+ _initList = new TableView((uint)_tcIDList.Count, 1);
+ _initList.Focusable = true;
+ _initList.CellPadding = new Vector2(0, 0);
+ _initList.Size2D = new Size2D(Window.Instance.Size.Width - 50, _tcIDList.Count * 50);
+ _initList.ParentOrigin = Position.ParentOriginTopLeft;
+ _initList.PivotPoint = PivotPoint.TopLeft;
+ _initList.Position = new Position(0.0f, 0.0f, 0.0f);
+ CreateInitList();
+
+ run.DownFocusableView = _initList;
+ doneButton.DownFocusableView = _initList;
+ _initList.UpFocusableView = run;
+
+ _firstPageContainer = new TableView(2, 2);
+ _firstPageContainer.PivotPoint = Position.PivotPointTopLeft;
+ _firstPageContainer.ParentOrigin = Position.ParentOriginTopLeft;
+ _firstPageContainer.Position = new Position(0, 3, 0);
+ _firstPageContainer.Size2D = new Size2D((int)Window.Instance.Size.Width - 200, 200);
+ _firstPageContainer.Focusable = (true);
+ _firstPageContainer.SetCellAlignment(new TableView.CellPosition(0, 0), HorizontalAlignmentType.Right, VerticalAlignmentType.Center);
+ _firstPageContainer.SetCellAlignment(new TableView.CellPosition(0, 1), HorizontalAlignmentType.Center, VerticalAlignmentType.Center);
+ _firstPageContainer.SetCellAlignment(new TableView.CellPosition(1), HorizontalAlignmentType.Center, VerticalAlignmentType.Center);
+ _firstPageContainer.CellPadding = new Vector2(0, 0);
+
+ _firstPageContainer.AddChild(doneButton, new TableView.CellPosition(0, 0));
+ _firstPageContainer.AddChild(run, new TableView.CellPosition(0, 1));
+
+
+ _scrollView = new ScrollView();
+ _scrollView.ClippingMode = ClippingModeType.ClipChildren;
+ _scrollView.BackgroundColor = Color.Transparent;
+ _scrollView.Size2D = new Size2D(Window.Instance.Size.Width, Window.Instance.Size.Height);
+ _scrollView.Position2D = new Position2D(0, 0);
+ _scrollView.Scrolling = true;
+
+ PropertyMap rulerMap = new PropertyMap();
+ rulerMap.Add((int)ScrollModeType.XAxisScrollEnabled, new PropertyValue(false));
+ rulerMap.Add((int)ScrollModeType.YAxisScrollEnabled, new PropertyValue(true));
+ rulerMap.Add((int)ScrollModeType.YAxisSnapToInterval, new PropertyValue(100));
+ rulerMap.Add((int)ScrollModeType.YAxisScrollBoundary, new PropertyValue(60 * (_tcIDList.Count+1)));
+ _scrollView.ScrollMode = rulerMap;
+
+ _scrollView.Add(_initList);
+ _firstPageContainer.AddChild(_scrollView, new TableView.CellPosition(1, 0, 1, 2));
+
+ _initView.Add(_firstPageContainer);
+ Tizen.Log.Fatal("NUI", "TCT : InitializeFirstPage:");
+ FocusManager.Instance.SetCurrentFocusView(run);
+ }
+
+ //Update the Test Page before you want to show it(Click Run/Pre/nect Button, or Click on item in the List).
+ void UpdateDetailPage()
+ {
+ UpdateCurrentTCInfo();
+ Tizen.Log.Fatal("NUI", "UpdateDetailPage:");
+ CreateTestCase();
+ }
+
+ void InitializeDetailPage()
+ {
+ _detailList = new TableView(23, 1);
+ _detailList.Focusable = true;
+ _detailList.Size2D = new Size2D(Window.Instance.Size.Width - 50, 500);
+ _detailList.ParentOrigin = Position.ParentOriginTopLeft;
+ _detailList.PivotPoint = PivotPoint.TopLeft;
+ _detailList.Position = new Position(0.0f, 0.0f, 0.0f);
+ CreateDetailList();
+ _detailView.Add(_detailList);
+
+ //To Place the function button, such as PASS, FAIL.....
+ _buttonContainer = new TableView(2, 4);
+ _buttonContainer.SetSizeModeFactor(new Vector3(0.0f, 0.9f, 0.0f));
+ _buttonContainer.PivotPoint = PivotPoint.TopCenter;
+ _buttonContainer.ParentOrigin = Position.ParentOriginTopLeft;
+ _buttonContainer.Position = new Position(0, Window.Instance.Size.Height * 0.6f, 0);
+ _buttonContainer.Size2D = new Size2D((int)Window.Instance.Size.Width, 300);
+ _buttonContainer.Focusable = (true);
+ CreateButtons();
+ _detailView.Add(_buttonContainer);
+ }
+
+ //To show the detail information of the test case
+ //Preconditions
+ //Steps
+ //PostConditions
+ void CreateTestCase()
+ {
+ if(_detailList)
+ {
+ _detailView.Remove(_detailList);
+ _detailList.Dispose();
+ }
+ Tizen.Log.Fatal("NUI", "Print the CurrentTCNum here::" + CurrentTCNum);
+ _detailList = new TableView(10, 1);
+ _detailList.Focusable = true;
+ _detailList.Size2D = new Size2D(Window.Instance.Size.Width - 50, 400);
+ _detailList.ParentOrigin = Position.ParentOriginTopLeft;
+ _detailList.PivotPoint = PivotPoint.TopLeft;
+ _detailList.Position = new Position(0.0f, 0.0f, 0.0f);
+ CreateDetailList();
+ _detailView.Add(_detailList);
+ if (notRun)
+ {
+ notRun.Text = _listItem[CurrentTCNum].Result;
+ }
+ }
+
+ //Create all the function buttons here, such as PASS, FAIL.....
+ void CreateButtons()
+ {
+
+ notRun = new TextLabel();
+ notRun.SizeWidth = 200;
+ notRun.PixelSize = PixelSize;
+ notRun.HorizontalAlignment = HorizontalAlignment.Begin;
+ notRun.Text = "Not Run";
+
+ passButton = new PushButton();
+ passButton.Focusable = true;
+ passButton.LabelText = "Pass";
+ passButton.Clicked += (obj, ee) =>
+ {
+
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.PASS;
+ ManualTest.Confirm();
+ }
+ Tizen.Log.Fatal("TBT", "Pass Button clicked!");
+ return true;
+ };
+
+ failButton = new PushButton();
+ failButton.Focusable = true;
+ failButton.LabelText = "Fail";
+ failButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.FAIL;
+ ManualTest.Confirm();
+ }
+ Tizen.Log.Fatal("TBT", "Fail Button clicked!");
+ return true;
+ };
+
+ blockButton = new PushButton();
+ blockButton.Focusable = true;
+ blockButton.LabelText = "Block";
+ blockButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.BLOCK;
+ ManualTest.Confirm();
+ }
+ return true;
+ };
+
+ runButton = new PushButton();
+ runButton.Focusable = true;
+ runButton.LabelText = "Run";
+ runButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ //should update the _caseView by the test case
+ _pressButton = NavigationButton.NA;
+ _tsettings.Testcase_ID = _tcIDList[CurrentTCNum];
+ _tsettings.TCResult = "";
+ _tRunner.Execute();
+ return true;
+ };
+
+ homeButton = new PushButton();
+ homeButton.Focusable = true;
+ homeButton.LabelText = "Home";
+ homeButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ _pressButton = NavigationButton.Home;
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.NOTRUN;
+ ManualTest.Confirm();
+ }
+ else
+ {
+ _detailView.Hide();
+ _initView.Show();
+ FocusManager.Instance.SetCurrentFocusView(run);
+ }
+ return true;
+ };
+
+ preButton = new PushButton();
+ preButton.Focusable = true;
+ preButton.LabelText = "<<";
+ preButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.NOTRUN;
+ ManualTest.Confirm();
+ }
+ else
+ {
+ if (CurrentTCNum != 0)
+ {
+ CurrentTCNum--;
+ notRun.Text = _listItem[CurrentTCNum].Result;
+ ManualTest.Confirm();
+ UpdateDetailPage();
+ }
+ }
+ return true;
+ };
+ nextButton = new PushButton();
+ nextButton.Focusable = true;
+ nextButton.LabelText = ">>";
+ nextButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.NOTRUN;
+ ManualTest.Confirm();
+ }
+ if (CurrentTCNum + 1 != ResultNumber.Total)
+ {
+ Tizen.Log.Fatal("NUI", "Print the [not run] CurrentTCNum::" + CurrentTCNum);
+ CurrentTCNum++;
+ notRun.Text = _listItem[CurrentTCNum].Result;
+ UpdateDetailPage();
+ }
+ return true;
+ };
+
+ _buttonContainer.AddChild(passButton, new TableView.CellPosition(0, 0));
+ _buttonContainer.AddChild(failButton, new TableView.CellPosition(0, 1));
+ _buttonContainer.AddChild(blockButton, new TableView.CellPosition(0, 2));
+ _buttonContainer.AddChild(runButton, new TableView.CellPosition(0, 3));
+ _buttonContainer.AddChild(homeButton, new TableView.CellPosition(1, 0));
+ _buttonContainer.AddChild(notRun, new TableView.CellPosition(1, 1));
+ _buttonContainer.AddChild(preButton, new TableView.CellPosition(1, 2));
+ _buttonContainer.AddChild(nextButton, new TableView.CellPosition(1, 3));
+ }
+
+ public void ExecuteTC(View view)
+ {
+ Tizen.Log.Fatal("NUI", "Execute the manual test case!");
+
+ _caseView = view;
+ _caseView.ParentOrigin = Position.ParentOriginTopLeft;
+ _caseView.PivotPoint = PivotPoint.TopLeft;
+ _caseView.Position = new Position(20.0f, 700.0f, 0.0f);
+ _detailView.Add(_caseView);
+ _caseView.KeyEvent += OnKeyPressed;
+ _caseView.Show();
+ FocusManager.Instance.SetCurrentFocusView(_caseView);
+ }
+
+ private bool OnKeyPressed(object source, View.KeyEventArgs e)
+ {
+ Tizen.Log.Fatal("NUI", "CaseView OnKeyPressed 1 Down..." + e.Key.KeyPressedName);
+
+ if (e.Key.State == Key.StateType.Down)
+ {
+ if (e.Key.KeyPressedName == "Down")
+ {
+ FocusManager.Instance.SetCurrentFocusView(passButton);
+
+ }
+ }
+ return false;
+ }
+
+ private bool OnRunnerKeyPressed(object source, View.KeyEventArgs e)
+ {
+ Tizen.Log.Fatal("NUI", "Runner OnKeyPressed Down..." + e.Key.KeyPressedName);
+
+ if (e.Key.State == Key.StateType.Down)
+ {
+ if (e.Key.KeyPressedName == "Up")
+ {
+ Tizen.Log.Fatal("NUI", "Set current focus view :: doneButton");
+ FocusManager.Instance.SetCurrentFocusView(doneButton);
+ }
+ }
+ return false;
+ }
+
+ private bool OnDownButtonKeyPressed(object source, View.KeyEventArgs e)
+ {
+ Tizen.Log.Fatal("NUI", "DownButton OnKeyPressed Down..." + e.Key.KeyPressedName);
+
+ if (e.Key.State == Key.StateType.Down)
+ {
+ if (e.Key.KeyPressedName == "Down")
+ {
+ Tizen.Log.Fatal("NUI", "Set current focus view :: run");
+ FocusManager.Instance.SetCurrentFocusView(run);
+ }
+ }
+ return false;
+ }
+
+ private void Clear()
+ {
+ if (_caseView.IsOnWindow == true)
+ {
+ _detailView.Remove(_caseView);
+ }
+ }
+
+ public void ClearTestCase(View view)
+ {
+ FocusManager.Instance.SetCurrentFocusView(runButton);
+ Tizen.Log.Fatal("NUI", "Clear test case!");
+ _detailView.Remove(view);
+ }
+
+ //Use to update the _summaryLabel.
+ private void SetSummaryResult()
+ {
+ ResultNumber.NotRun = ResultNumber.Total - ResultNumber.Pass - ResultNumber.Fail - ResultNumber.Block;
+ _summaryLabel.Text = "Total : " + ResultNumber.Total + ", Pass : " + ResultNumber.Pass + ", Fail : " + ResultNumber.Fail + ", Block : " + ResultNumber.Block + ", Not Run : " + ResultNumber.NotRun;
+ }
+
+ private PropertyMap CreateTextMap(float pointSize, string text)
+ {
+ PropertyMap map = new PropertyMap();
+ map.Insert("visualType", new PropertyValue("TEXT"));
+ map.Insert("pointSize", new PropertyValue(pointSize));
+ map.Insert("text", new PropertyValue(text));
+ return map;
+ }
+
+ private void CreateInitList()
+ {
+ int tcNum = _tcIDList.Count;
+ Tizen.Log.Fatal("NUI", "_tcIDList.Count: " + _tcIDList.Count);
+ buttonList = new PushButton[tcNum];
+ for (int index = 0; index < tcNum; index++)
+ {
+ string name = _tcIDList[index];
+ string testcaseName = "#." + (index + 1).ToString() + name;
+ string resultText = "[" + _listItem[(int)index].Result + "]";
+ string text = testcaseName + resultText;
+ buttonList[index] = new PushButton();
+ buttonList[index].CellIndex = new Vector2(index, 0);
+ buttonList[index].Name = index.ToString();
+ buttonList[index].Focusable = true;
+ buttonList[index].Label = CreateTextMap(PointSize, text);
+ buttonList[index].ParentOrigin = Position.ParentOriginTopLeft;
+ buttonList[index].PivotPoint = PivotPoint.TopLeft;
+ buttonList[index].Position = new Position(0.0f, 0.0f, 0.0f);
+ buttonList[index].Clicked += (obj, e) =>
+ {
+ PushButton button = obj as PushButton;
+
+ Tizen.Log.Fatal("TBT", "Item clicked!!::" + button.Name);
+ CurrentTCNum = int.Parse(button.Name);
+ _initView.Hide();
+ UpdateDetailPage();
+ _caseView.Hide();
+ _detailView.Show();
+ FocusManager.Instance.SetCurrentFocusView(runButton);
+ return false;
+ };
+ buttonList[index].FocusGained += ManualTestNUI_FocusGained;
+ _initList.AddChild(buttonList[index], new TableView.CellPosition((uint)index, 0));
+
+ }
+ }
+
+ private void ManualTestNUI_FocusGained(object sender, EventArgs e)
+ {
+ var item = sender as PushButton;
+ if (item != null)
+ {
+ uint idx = UInt32.Parse(item.Name);
+ _scrollView.ScrollTo(new Vector2(0, 30 * idx));
+ }
+ }
+
+ private void CreateDetailList()
+ {
+ Tizen.Log.Fatal("NUI", "Print the CreateDetailList::");
+ int senNum = CurrentTCInfo.Count;
+ for (int index = 0; index < senNum; index++)
+ {
+ TextLabel description = new TextLabel();
+ description.ParentOrigin = Position.ParentOriginTopLeft;
+ description.PivotPoint = PivotPoint.TopLeft;
+ description.Position = new Position(0.0f, 0.0f, 0.0f);
+ description.Size2D = new Size2D((int)Window.Instance.Size.Width - 20, 50);
+ description.HorizontalAlignment = HorizontalAlignment.Begin;
+ description.PointSize = PointSize;
+ description.Text = CurrentTCInfo[(int)index];
+ _detailList.AddChild(description, new TableView.CellPosition((uint)index, 0));
+ }
+ }
+
+ //Init all the data, should be offered by Test Framework
+ void InitData()
+ {
+ ResultNumber.Total = _tcIDList.Count;
+ ResultNumber.Pass = 0;
+ ResultNumber.Fail = 0;
+ ResultNumber.Block = 0;
+ TCInfoList = new List<TestcaseInfo>();
+ foreach (KeyValuePair<string, ITest> pair in _tRunner.GetTestList())
+ {
+ List<string> preconditions = new List<string>();
+ preconditions.Add("Preconditions:");
+ List<string> steps = new List<string>();
+ steps.Add("Steps:");
+ List<string> postconditions = new List<string>();
+ postconditions.Add("Postconditions:\n");
+ IEnumerator<CustomAttributeData> customAttributes = pair.Value.Method.MethodInfo.CustomAttributes.GetEnumerator();
+ while (customAttributes.MoveNext())
+ {
+ if (customAttributes.Current.AttributeType.FullName.Equals(STEP_ATTRIBUTE_NAME))
+ {
+ steps.Add(customAttributes.Current.ConstructorArguments[0].Value + "." + customAttributes.Current.ConstructorArguments[1].Value);
+ }
+ else if (customAttributes.Current.AttributeType.FullName.Equals(PRECONDITION_ATTRIBUTE_NAME))
+ {
+ preconditions.Add(customAttributes.Current.ConstructorArguments[0].Value + "." + customAttributes.Current.ConstructorArguments[1].Value);
+ }
+ else if (customAttributes.Current.AttributeType.FullName.Equals(POSTCONDITION_ATTRIBUTE_NAME))
+ {
+ postconditions.Add(customAttributes.Current.ConstructorArguments[0].Value + "." + customAttributes.Current.ConstructorArguments[1].Value);
+ }
+ }
+ TCInfoList.Add(new TestcaseInfo
+ {
+ TestcaseName = pair.Key,
+ Preconditions = preconditions,
+ Steps = steps ,
+ Postconditions = postconditions,
+ });
+ }
+ UpdateCurrentTCInfo();
+ }
+
+ //The data in CurrentTCInfo list will be show in _detailList.
+ void UpdateCurrentTCInfo()
+ {
+ CurrentTCInfo = new List<string>();
+ Tizen.Log.Fatal("NUI", "Print the CurrentTCNum::" + CurrentTCNum);
+ CurrentTCInfo.Add("DESCRIPTION:#" + (CurrentTCNum + 1));
+ string[] str = TCInfoList[CurrentTCNum].TestcaseName.Split('.');
+ CurrentTCInfo.Add("CLASS:" + str[str.Length - 2]);
+ CurrentTCInfo.Add("METHOD:" + str[str.Length - 1]);
+ for(int index = 0; index < TCInfoList[CurrentTCNum].Preconditions.Count; index++)
+ {
+ CurrentTCInfo.Add(TCInfoList[CurrentTCNum].Preconditions[index]);
+ }
+ for(int index = 0; index < TCInfoList[CurrentTCNum].Steps.Count; index++ )
+ {
+ CurrentTCInfo.Add(TCInfoList[CurrentTCNum].Steps[index]);
+ }
+ for(int index = 0; index < TCInfoList[CurrentTCNum].Postconditions.Count; index++ )
+ {
+ CurrentTCInfo.Add(TCInfoList[CurrentTCNum].Postconditions[index]);
+ }
+ Tizen.Log.Fatal("NUI", "The CurrentTCNum::" + CurrentTCNum);
+ }
+
+ private void OnSingleTestDone(object sender, SingleTestDoneEventArgs e)
+ {
+ //Test when will this event will be triggered
+ Tizen.Log.Fatal("NUI", "OnSingleTestDone has been triggered!");
+ // check old result
+ if (_listItem[CurrentTCNum].Result.Contains(StrResult.FAIL))
+ {
+ ResultNumber.Fail = ResultNumber.Fail - 1;
+ }
+ else if (_listItem[CurrentTCNum].Result.Contains(StrResult.PASS))
+ {
+ ResultNumber.Pass = ResultNumber.Pass - 1;
+ }
+ else if (_listItem[CurrentTCNum].Result.Contains(StrResult.BLOCK))
+ ResultNumber.Block = ResultNumber.Block - 1;
+
+ // Update new result
+ _listItem[CurrentTCNum].Result = e.Result;
+ if (e.Result.Contains(StrResult.PASS))
+ {
+ ResultNumber.Pass += 1;
+ }
+ else if (e.Result.Contains(StrResult.FAIL))
+ {
+ ResultNumber.Fail += 1;
+ }
+ else if (e.Result.Contains(StrResult.BLOCK))
+ {
+ ResultNumber.Block += 1;
+ }
+
+ _initList.RemoveChildAt(new TableView.CellPosition((uint)CurrentTCNum, 0));
+ string name = _tcIDList[CurrentTCNum];
+ string testcaseName = "#." + (CurrentTCNum + 1).ToString() + name;
+ string resultText = "[" + _listItem[(int)CurrentTCNum].Result + "]";
+ string text = testcaseName + resultText;
+ PushButton button = new PushButton();
+ button.CellIndex = new Vector2(CurrentTCNum, 0);
+ button.Name = CurrentTCNum.ToString();
+ button.Focusable = true;
+ button.Label = CreateTextMap(PointSize, text);
+ button.ParentOrigin = Position.ParentOriginTopLeft;
+ button.PivotPoint = PivotPoint.TopLeft;
+ button.Position = new Position(0.0f, 0.0f, 0.0f);
+ button.Clicked += (obj, ee) =>
+ {
+ Tizen.Log.Fatal("NUI", "Item clicked clicked!!::" + ((int)button.CellIndex.X).ToString());
+ CurrentTCNum = (int)button.CellIndex.X;
+ _initView.Hide();
+ UpdateDetailPage();
+ _caseView.Hide();
+ _detailView.Show();
+ FocusManager.Instance.SetCurrentFocusView(runButton);
+ return false;
+ };
+ _initList.AddChild(button, new TableView.CellPosition((uint)CurrentTCNum, 0));
+ SetSummaryResult();
+ notRun.Text = _listItem[CurrentTCNum].Result;
+ }
+ }
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+using System;
+using NUnitLite.TUnit;
+using Tizen.NUI;
+
+namespace Tizen.NUI.Wearable.Tests
+{
+
+ public class App : Tizen.NUI.NUIApplication
+ {
+ protected override void OnCreate()
+ {
+ Window window = Window.Instance;
+ if(ManualTest.IsWearable())
+ {
+ WearableManualTestNUI.GetInstance();
+ }
+ else
+ {
+ ManualTestNUI.GetInstance();
+ }
+ }
+
+ static void Main(string[] args)
+ {
+ Tizen.Log.Fatal("NUI", "Manual TCT for NUI start!");
+ App example = new App();
+ example.Run(args);
+ }
+
+ };
+
+}
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <!-- Property Group for .NET Core Project -->
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>tizen50</TargetFramework>
+ </PropertyGroup>
+
+ <!-- Property Group for Tizen Project -->
+ <PropertyGroup>
+ <TizenCreateTpkOnBuild>true</TizenCreateTpkOnBuild>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugType>portable</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>None</DebugType>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Folder Include="lib\" />
+ </ItemGroup>
+
+ <Import Project="..\Common\dependencies.props" />
+
+ <ItemGroup>
+ <PackageReference Include="Tizen.NET" Version="$(TizenNETVersion)">
+ <ExcludeAssets>Runtime</ExcludeAssets>
+ </PackageReference>
+ <PackageReference Include="Tizen.NET.Sdk" Version="$(TizenNETSdkVersion)" />
+ </ItemGroup>
+
+ <!-- Include Nuget Package for Tizen Project building -->
+ <ItemGroup>
+ <ProjectReference Include="..\nunit.framework\nunit.framework.csproj" />
+ <ProjectReference Include="..\nunitlite\nunitlite.csproj" />
+ </ItemGroup>
+
+</Project>
--- /dev/null
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26124.0
+MinimumVisualStudioVersion = 15.0.26124.0
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.Wearable.Manual.Tests", "Tizen.NUI.Wearable.Manual.Tests.csproj", "{66D8A33C-59A0-4F95-86BB-D4B98DB350B8}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunit.framework", "..\nunit.framework\nunit.framework.csproj", "{8537EA70-6272-4CCD-BCD4-EA8678519A42}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunitlite", "..\nunitlite\nunitlite.csproj", "{F125594F-E09F-4444-8DD7-ACAE72830C55}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Debug|x64.Build.0 = Debug|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Debug|x86.Build.0 = Debug|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Release|x64.ActiveCfg = Release|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Release|x64.Build.0 = Release|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Release|x86.ActiveCfg = Release|Any CPU
+ {66D8A33C-59A0-4F95-86BB-D4B98DB350B8}.Release|x86.Build.0 = Release|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Debug|x64.Build.0 = Debug|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Debug|x86.Build.0 = Debug|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Release|x64.ActiveCfg = Release|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Release|x64.Build.0 = Release|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Release|x86.ActiveCfg = Release|Any CPU
+ {8537EA70-6272-4CCD-BCD4-EA8678519A42}.Release|x86.Build.0 = Release|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Debug|x64.Build.0 = Debug|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Debug|x86.Build.0 = Debug|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Release|x64.ActiveCfg = Release|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Release|x64.Build.0 = Release|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Release|x86.ActiveCfg = Release|Any CPU
+ {F125594F-E09F-4444-8DD7-ACAE72830C55}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {E4513F8A-1A51-4CD9-8C13-B0F61ECF96A0}
+ EndGlobalSection
+EndGlobal
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+using System;
+using System.Threading.Tasks;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+using System.ComponentModel;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI;
+
+namespace Tizen.NUI.Wearable.Tests
+{
+
+ public class ResultNumber
+ {
+ public static int Total { get; set; }
+ public static int Pass { get; set; }
+ public static int Fail { get; set; }
+ public static int NotRun { get; set; }
+ public static int Block { get; set; }
+ }
+
+ public class TestcaseInfo
+ {
+ private string _tescaseName;
+ public string TestcaseName
+ {
+ get
+ {
+ return _tescaseName;
+ }
+ set
+ {
+ _tescaseName = value;
+ }
+ }
+
+ private List<string> _preconditions;
+ public List<string> Preconditions
+ {
+ get
+ {
+ return _preconditions;
+ }
+ set
+ {
+ _preconditions = value;
+ }
+ }
+
+ private List<string> _steps;
+ public List<string> Steps
+ {
+ get
+ {
+ return _steps;
+ }
+ set
+ {
+ _steps = value;
+ }
+ }
+
+ private List<string> _postconditions;
+ public List<string> Postconditions
+ {
+ get
+ {
+ return _postconditions;
+ }
+ set
+ {
+ _postconditions = value;
+ }
+ }
+ }
+ public class ItemData : INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler PropertyChanged;
+ private void OnPropertyChanged(object sender, string propertyName)
+ {
+ if (this.PropertyChanged != null)
+ {
+ PropertyChanged(sender, new PropertyChangedEventArgs(propertyName));
+ }
+ }
+ public int No { get; set; }
+
+ public string TCName { get; set; }
+
+ private string _result;
+ public string Result
+ {
+ get
+ {
+ return _result;
+ }
+ set
+ {
+ _result = value;
+ if (_result.Equals(StrResult.PASS))
+ {
+ ResultColor = Color.Green;
+ }
+ else if (_result.Equals(StrResult.FAIL))
+ {
+ ResultColor = Color.Red;
+ }
+ else if (_result.Equals(StrResult.BLOCK))
+ {
+ ResultColor = Color.Red;
+ }
+ else
+ {
+ ResultColor = Color.Black;
+ }
+ OnPropertyChanged(this, "Result");
+ }
+ }
+
+ private Color _resultColor;
+ public Color ResultColor
+ {
+ get { return _resultColor; }
+ set
+ {
+ _resultColor = value;
+ OnPropertyChanged(this, "ResultColor");
+ }
+ }
+ }
+
+ public class StrResult
+ {
+ public static string PASS = "PASS";
+ public static string FAIL = "FAIL";
+ public static string NOTRUN = "NOT RUN";
+ public static string BLOCK = "BLOCK";
+ }
+
+ public class RunType
+ {
+ public static string AUTO = "AUTO";
+ public static string MANUAL = "MANUAL";
+
+ public static string Value { get; set; }
+ }
+
+ public class ManualTest
+ {
+ private static bool Confirmed = true;
+
+ public static async Task WaitForConfirm()
+ {
+ Confirmed = false;
+ //ManualTestNUI.GetInstance().UnlockUIButton();
+ while (true)
+ {
+ await Task.Delay(200);
+ if (Confirmed)
+ break;
+ }
+ }
+
+ public static bool IsConfirmed()
+ {
+ return Confirmed;
+ }
+
+ public static void Confirm()
+ {
+ Confirmed = true;
+ }
+
+ public static bool IsMobile()
+ {
+ string value;
+ var result = Tizen.System.Information.TryGetValue("tizen.org/feature/profile", out value);
+ if (result && value.Equals("mobile"))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ public static bool IsWearable()
+ {
+ string value;
+ var result = Tizen.System.Information.TryGetValue("tizen.org/feature/profile", out value);
+ if (result && value.Equals("wearable"))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ public static bool IsEmulator()
+ {
+ string value;
+ var result = Tizen.System.Information.TryGetValue("tizen.org/system/model_name", out value);
+ if (result && value.Equals("Emulator"))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ public static TextLabel CreateLabel(string information)
+ {
+ TextLabel mLabel = new TextLabel();
+ mLabel.TextColor = Color.White;
+ mLabel.PointSize = 4.0f;
+ mLabel.VerticalAlignment = VerticalAlignment.Center;
+ mLabel.HorizontalAlignment = HorizontalAlignment.Begin;
+ mLabel.MultiLine = true;
+ mLabel.Text = information;
+ mLabel.Size2D = new Size2D(300, 50);
+ return mLabel;
+ }
+ }
+
+ enum NavigationButton
+ {
+ Next,
+ Previous,
+ Home,
+ NA
+ }
+}
--- /dev/null
+/*
+* Copyright (c) 2017 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+using System;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+using NUnitLite.TUnit;
+using NUnit.Framework.Interfaces;
+using NUnit.Framework.TUnit;
+using System.Reflection;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.UIComponents;
+
+namespace Tizen.NUI.Wearable.Tests
+{
+ class WearableManualTestNUI
+ {
+ private List<string> _tcIDList;
+ private List<ItemData> _listItem;
+ private TSettings _tsettings;
+ private TRunner _tRunner;
+ private NavigationButton _pressButton = NavigationButton.NA;
+ private PushButton passButton, failButton, blockButton, homeButton, preButton, nextButton, doneButton;
+ private TextLabel notRun;
+ private const string STEP_ATTRIBUTE_NAME = "NUnit.Framework.StepAttribute";
+ private const string PRECONDITION_ATTRIBUTE_NAME = "NUnit.Framework.PreconditionAttribute";
+ private const string POSTCONDITION_ATTRIBUTE_NAME = "NUnit.Framework.PostconditionAttribute";
+
+ private static float PointSize = 5.0f;
+
+ //Save the information of every single test case
+ private List<TestcaseInfo> TCInfoList;
+ private List<string> CurrentTCInfo;
+
+ private static WearableManualTestNUI instance;
+ private static Object lockObject = new object();
+
+ //Show the result of all the test case
+ private TextLabel _summaryLabel1, _summaryLabel2, _description;
+ private View _initView;
+ private View _detailView;
+
+ private ScrollView _initList;
+ private ScrollView _detailList;
+
+ private View _caseView;
+
+ private PushButton run;
+ private PushButton runButton;
+ private PushButton[] buttonList;
+
+ private TextLabel[] resultList;
+
+ //Always save the current TC number;
+ private int CurrentTCNum = 0;
+
+ private static int _scrollWidth = Window.Instance.Size.Width;
+ private static int _scrollHeight = 120;
+
+ private static int _detailScrollHeight = 60;
+
+ public static WearableManualTestNUI GetInstance()
+ {
+ lock (lockObject)
+ {
+ if (instance == null)
+ {
+ instance = new WearableManualTestNUI();
+ }
+ }
+ return instance;
+ }
+
+ private WearableManualTestNUI()
+ {
+ Initialize();
+ }
+ public void Initialize()
+ {
+ Window.Instance.BackgroundColor = new Color(0.1f, 0.1f, 0.1f, 1.0f);
+ Tizen.Log.Fatal("NUI", "Initialize=========================================");
+ PointSize = (1.0f / Window.Instance.Dpi.Length()) * 2000.0f;
+ RunType.Value = RunType.MANUAL;
+ _tRunner = new TRunner();
+ _tRunner.LoadTestsuite();
+ _tRunner.SingleTestDone += OnSingleTestDone;
+ _tcIDList = new List<string>();
+ _listItem = new List<ItemData>();
+ int count = 0;
+ foreach (KeyValuePair<string, ITest> pair in _tRunner.GetTestList())
+ {
+ _listItem.Add(new ItemData { No = count, TCName = pair.Key, Result = StrResult.NOTRUN });
+ _tcIDList.Add(pair.Key);
+ count++;
+ }
+ Tizen.Log.Fatal("NUI", "TCT : count:" + count.ToString());
+ foreach (String nameTc in _tcIDList)
+ {
+ Tizen.Log.Fatal("NUI", "TCT : TCName:" + nameTc.ToString());
+ }
+
+
+ _tsettings = TSettings.GetInstance();
+ _tsettings.IsManual = true;
+
+ InitData();
+ _caseView = new View();
+ Window.Instance.GetDefaultLayer().Add(_caseView);
+ Window window = Window.Instance;
+
+ _summaryLabel1 = new TextLabel();
+ _summaryLabel1.TextColor = Color.White;
+ _summaryLabel1.PointSize = 5.0f;
+ _summaryLabel1.Size2D = new Size2D(200, 30);
+ _summaryLabel1.ParentOrigin = ParentOrigin.TopLeft;
+ _summaryLabel1.PivotPoint = PivotPoint.TopLeft;
+ _summaryLabel1.Position = new Position(70, 12, 0);
+ _summaryLabel1.HorizontalAlignment = HorizontalAlignment.Center;
+ _summaryLabel1.VerticalAlignment = VerticalAlignment.Center;
+
+ _summaryLabel2 = new TextLabel();
+ _summaryLabel2.TextColor = Color.White;
+ _summaryLabel2.PointSize = 5.0f;
+ _summaryLabel2.Size2D = new Size2D(300, 30);
+ _summaryLabel2.ParentOrigin = ParentOrigin.TopLeft;
+ _summaryLabel2.PivotPoint = PivotPoint.TopLeft;
+ _summaryLabel2.Position = new Position(20, 33, 0);
+ _summaryLabel2.HorizontalAlignment = HorizontalAlignment.Center;
+ _summaryLabel2.VerticalAlignment = VerticalAlignment.Center;
+
+ SetSummaryResult();
+ Window.Instance.GetDefaultLayer().Add(_summaryLabel1);
+ Window.Instance.GetDefaultLayer().Add(_summaryLabel2);
+
+ _initView = new View();
+ _initView.Size2D = new Size2D((int)Window.Instance.Size.Width, 200);
+ _initView.ParentOrigin = ParentOrigin.TopLeft;
+ _initView.PivotPoint = PivotPoint.TopLeft;
+ _initView.Position = new Position(0.0f, 60.0f, 0.0f);
+ InitializeFirstPage();
+ _initView.Show();
+
+ _detailView = new View();
+ _detailView.Size2D = new Size2D((int)Window.Instance.Size.Width, (int)Window.Instance.Size.Height - 65);
+ _detailView.ParentOrigin = ParentOrigin.TopLeft;
+ _detailView.PivotPoint = PivotPoint.TopLeft;
+ _detailView.Position = new Position(0.0f, 70.0f, 0.0f);
+ InitializeDetailPage();
+ _detailView.Hide();
+
+ window.GetDefaultLayer().Add(_initView);
+ window.GetDefaultLayer().Add(_detailView);
+ }
+
+ void InitializeFirstPage()
+ {
+ //Create Run Button, when you Click it, then the first test case will be executed.
+ doneButton = new PushButton();
+ doneButton.Size2D = new Size2D(120, 60);
+ doneButton.Position2D = new Position2D(-150, -200);
+ //doneButton.Position2D = new Position2D(50, 0);
+ doneButton.Label = CreateTextVisual("Done", Color.White);
+ doneButton.Clicked += (obj, ee) =>
+ {
+ TSettings.GetInstance().SubmitManualResult();
+ return false;
+ };
+
+ run = new PushButton();
+ run.Size2D = new Size2D(120, 60);
+ run.Position2D = new Position2D(20, -200);
+ //run.Position2D = new Position2D(180, 0);
+ run.Label = CreateTextVisual("Runner", Color.White); ;
+ run.Clicked += (obj, ee) =>
+ {
+ Tizen.Log.Fatal("NUI", "Check all the test case from the first one.");
+ CurrentTCNum = 0;
+ _initView.Hide();
+ _caseView.Hide();
+ UpdateDetailPage();
+ _detailView.Show();
+ return false;
+ };
+
+ _initList = new ScrollView();
+ _initList.Size2D = new Size2D(_scrollWidth, _scrollHeight);
+ _initList.ParentOrigin = ParentOrigin.TopLeft;
+ _initList.PivotPoint = PivotPoint.TopLeft;
+ _initList.Position2D = new Position2D(0, 80);
+ _initList.ClippingMode = ClippingModeType.ClipChildren;
+ CreateInitList();
+
+ _initView.Add(doneButton);
+ _initView.Add(run);
+ _initView.Add(_initList);
+ Tizen.Log.Fatal("NUI", "TCT : InitializeFirstPage:");
+ }
+
+ //Update the Test Page before you want to show it(Click Run/Pre/nect Button, or Click on item in the List).
+ void UpdateDetailPage()
+ {
+ UpdateCurrentTCInfo();
+ Tizen.Log.Fatal("NUI", "UpdateDetailPage::::::::::::::::::::::");
+ CreateTestCase();
+ }
+
+ void InitializeDetailPage()
+ {
+ _detailList = new ScrollView();
+ _detailList.BackgroundColor = Color.Black;
+ _detailList.Size2D = new Size2D(_scrollWidth - 100, _detailScrollHeight);
+ _detailList.ParentOrigin = ParentOrigin.TopLeft;
+ _detailList.PivotPoint = PivotPoint.TopLeft;
+ _detailList.Position2D = new Position2D(30, 20);
+ _detailList.ClippingMode = ClippingModeType.ClipChildren;
+
+ _description = new TextLabel();
+ _description.TextColor = Color.White;
+ _description.PointSize = 3.0f;
+ _description.ParentOrigin = ParentOrigin.TopLeft;
+ _description.PivotPoint = PivotPoint.TopLeft;
+ _description.Size2D = new Size2D(200, 20);
+ _description.Position2D = new Position2D(50, 0);
+ _detailView.Add(_description);
+
+ CreateDetailList();
+ _detailView.Add(_detailList);
+
+ //To Place the function button, such as PASS, FAIL.....
+ CreateButtons();
+ }
+
+ //To show the detail information of the test case
+ //Preconditions
+ //Steps
+ //PostConditions
+ void CreateTestCase()
+ {
+ if(_detailList)
+ {
+ _detailView.Remove(_detailList);
+ _detailList.Dispose();
+ }
+ Tizen.Log.Fatal("NUI", "Print the CurrentTCNum here::" + CurrentTCNum);
+
+ _detailList = new ScrollView();
+ _detailList.BackgroundColor = Color.Black;
+ _detailList.Size2D = new Size2D(_scrollWidth - 100, _detailScrollHeight);
+ _detailList.ParentOrigin = ParentOrigin.TopLeft;
+ _detailList.PivotPoint = PivotPoint.TopLeft;
+ _detailList.Position2D = new Position2D(30, 20);
+ _detailList.ClippingMode = ClippingModeType.ClipChildren;
+ CreateDetailList();
+ _detailView.Add(_detailList);
+ if (notRun)
+ {
+ notRun.Text = _listItem[CurrentTCNum].Result;
+ }
+ }
+ private TextLabel CreateTextLabel(string textStr, int left)
+ {
+ TextLabel text = new TextLabel();
+ text.TextColor = Color.White;
+ text.ParentOrigin = ParentOrigin.TopLeft;
+ text.PivotPoint = PivotPoint.TopLeft;
+ text.Text = textStr;
+ text.PointSize = 5.0f;
+ text.VerticalAlignment = VerticalAlignment.Bottom;
+ text.HorizontalAlignment = HorizontalAlignment.Center;
+ text.Size2D = new Size2D(30, 30);
+ text.Position2D = new Position2D(left, 0);
+ return text;
+ }
+ //Create all the function buttons here, such as PASS, FAIL.....
+ void CreateButtons()
+ {
+
+ notRun = new TextLabel();
+ notRun.TextColor = Color.White;
+ notRun.Size2D = new Size2D(40, 30);
+ notRun.PointSize = 2.5f;
+ notRun.Position2D = new Position2D(260, 118);
+ notRun.HorizontalAlignment = HorizontalAlignment.Center;
+ notRun.VerticalAlignment = VerticalAlignment.Center;
+ notRun.MultiLine = true;
+ notRun.Text = "Not Run";
+
+ TextLabel pass = CreateTextLabel("P", 20);
+ passButton = new PushButton();
+ passButton.Size2D = new Size2D(70, 30);
+ passButton.Position2D = new Position2D(0, 0);
+ passButton.LabelText = "";
+ passButton.Add(pass);
+ passButton.Clicked += (obj, ee) =>
+ {
+
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.PASS;
+ ManualTest.Confirm();
+ }
+ Tizen.Log.Fatal("TBT", "Pass Button clicked!");
+ return true;
+ };
+
+ TextLabel fail = CreateTextLabel("F", 20);
+ failButton = new PushButton();
+ failButton.Size2D = new Size2D(70, 30);
+ failButton.Position2D = new Position2D(72, 0);
+ failButton.LabelText = "";
+ failButton.Add(fail);
+ failButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.FAIL;
+ ManualTest.Confirm();
+ }
+ Tizen.Log.Fatal("TBT", "Fail Button clicked!");
+ return true;
+ };
+
+ TextLabel block = CreateTextLabel("B", 20);
+ blockButton = new PushButton();
+ blockButton.Size2D = new Size2D(70, 30);
+ blockButton.Position2D = new Position2D(144, 0);
+ blockButton.LabelText = "";
+ blockButton.Add(block);
+ blockButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.BLOCK;
+ ManualTest.Confirm();
+ }
+ return true;
+ };
+
+ TextLabel run = CreateTextLabel("R", 20);
+ runButton = new PushButton();
+ runButton.Size2D = new Size2D(70, 30);
+ runButton.Position2D = new Position2D(216, 0);
+ runButton.LabelText = "";
+ runButton.Add(run);
+ runButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ //should update the _caseView by the test case
+ _pressButton = NavigationButton.NA;
+ _tsettings.Testcase_ID = _tcIDList[CurrentTCNum];
+ _tsettings.TCResult = "";
+ _tRunner.Execute();
+ return true;
+ };
+
+ TextLabel home = CreateTextLabel("H", 15);
+ homeButton = new PushButton();
+ homeButton.Size2D = new Size2D(60, 30);
+ homeButton.Position2D = new Position2D(15, 32);
+ homeButton.LabelText = "";
+ homeButton.Add(home);
+ homeButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ _pressButton = NavigationButton.Home;
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.NOTRUN;
+ ManualTest.Confirm();
+ }
+ else
+ {
+ _detailView.Hide();
+ _initView.Show();
+ }
+ return true;
+ };
+
+ TextLabel pre = CreateTextLabel("<<", 15);
+ preButton = new PushButton();
+ preButton.Size2D = new Size2D(60, 30);
+ preButton.Position2D = new Position2D(128, 32);
+ preButton.LabelText = "";
+ preButton.Add(pre);
+ preButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.NOTRUN;
+ ManualTest.Confirm();
+ }
+ else
+ {
+ if (CurrentTCNum != 0)
+ {
+ CurrentTCNum--;
+ notRun.Text = _listItem[CurrentTCNum].Result;
+ ManualTest.Confirm();
+ UpdateDetailPage();
+ }
+ }
+ return true;
+ };
+
+ TextLabel next = CreateTextLabel(">>", 15);
+ nextButton = new PushButton();
+ nextButton.Size2D = new Size2D(60, 30);
+ nextButton.Position2D = new Position2D(193, 32);
+ nextButton.Add(next);
+ nextButton.LabelText = "";
+ nextButton.Clicked += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.NOTRUN;
+ ManualTest.Confirm();
+ }
+ if (CurrentTCNum + 1 != ResultNumber.Total)
+ {
+ Tizen.Log.Fatal("NUI", "Print the [not run] CurrentTCNum::" + CurrentTCNum);
+ CurrentTCNum++;
+ notRun.Text = _listItem[CurrentTCNum].Result;
+ UpdateDetailPage();
+ }
+ return true;
+ };
+
+ View buttonView = new View();
+ buttonView.ParentOrigin = ParentOrigin.TopLeft;
+ buttonView.PivotPoint = PivotPoint.TopLeft;
+ buttonView.Size2D = new Size2D(Window.Instance.Size.Width, 80);
+ buttonView.Position2D = new Position2D(-140, 120);
+
+ buttonView.Add(passButton);
+ buttonView.Add(failButton);
+ buttonView.Add(blockButton);
+ buttonView.Add(runButton);
+ buttonView.Add(homeButton);
+ buttonView.Add(notRun);
+ buttonView.Add(preButton);
+ buttonView.Add(nextButton);
+ _detailView.Add(buttonView);
+ }
+
+ public void ExecuteTC(View view)
+ {
+ Tizen.Log.Fatal("ManualTCT", "Execute the manual test case!");
+
+ _caseView = view;
+ _caseView.ParentOrigin = Position.ParentOriginTopLeft;
+ _caseView.PivotPoint = PivotPoint.TopLeft;
+ _caseView.Position = new Position(40.0f, 120.0f, 0.0f);
+ _detailView.Add(_caseView);
+ _caseView.Show();
+ }
+
+ private void Clear()
+ {
+ if (_caseView.IsOnWindow == true)
+ {
+ _detailView.Remove(_caseView);
+ }
+ }
+
+ public void ClearTestCase(View view)
+ {
+ Tizen.Log.Fatal("NUI", "Clear test case!");
+ _detailView.Remove(view);
+ }
+
+ //Use to update the _summaryLabel.
+ private void SetSummaryResult()
+ {
+ ResultNumber.NotRun = ResultNumber.Total - ResultNumber.Pass - ResultNumber.Fail - ResultNumber.Block;
+ _summaryLabel1.Text = "T : " + ResultNumber.Total + ", P : " + ResultNumber.Pass;
+ _summaryLabel2.Text = "F : " + ResultNumber.Fail + ", B : " + ResultNumber.Block + ", NR: " + ResultNumber.NotRun;
+ Tizen.Log.Fatal("ManualTCT", "Set the result Text");
+ }
+
+ private PropertyMap CreateTextMap(float pointSize, string text)
+ {
+ PropertyMap map = new PropertyMap();
+ map.Insert("visualType", new PropertyValue("TEXT"));
+ map.Insert("pointSize", new PropertyValue(pointSize));
+ map.Insert("text", new PropertyValue(text));
+ return map;
+ }
+
+ private void CreateInitList()
+ {
+ int tcNum = _tcIDList.Count;
+ buttonList = new PushButton[tcNum];
+ resultList = new TextLabel[tcNum];
+ for (int index = 0; index < tcNum; index++)
+ {
+ string name = _tcIDList[index];
+ string testcaseName = "#." + (index + 1).ToString();
+ Tizen.Log.Fatal("ManualTCT", "name: " + name);
+ TextLabel label = new TextLabel();
+ label.TextColor = Color.White;
+ label.Text = testcaseName;
+ label.PointSize = 4.0f;
+ label.VerticalAlignment = VerticalAlignment.Center;
+ label.ParentOrigin = ParentOrigin.TopLeft;
+ label.PivotPoint = PivotPoint.TopLeft;
+ label.Size2D = new Size2D(40, _scrollHeight);
+ label.Position2D = new Position2D(0, 0);
+
+
+ TextLabel nameLabel = new TextLabel();
+ nameLabel.ParentOrigin = ParentOrigin.TopLeft;
+ nameLabel.PivotPoint = PivotPoint.TopLeft;
+ nameLabel.Text = name;
+ nameLabel.VerticalAlignment = VerticalAlignment.Bottom;
+ nameLabel.PointSize = 4.0f;
+ nameLabel.TextColor = Color.White;
+ nameLabel.MultiLine = true;
+ nameLabel.Size2D = new Size2D(245, _scrollHeight);
+ nameLabel.Position2D = new Position2D(5, 0);
+ nameLabel.TextColor = Color.White;
+
+ string resultText = "[" + _listItem[(int)index].Result + "]";
+ buttonList[index] = new PushButton();
+ buttonList[index].Name = index.ToString();
+ buttonList[index].ParentOrigin = ParentOrigin.TopLeft;
+ buttonList[index].PivotPoint = PivotPoint.TopLeft;
+ buttonList[index].Position = new Position(33, 0.0f, 0.0f);
+ buttonList[index].Size2D = new Size2D(255, _scrollHeight);
+ buttonList[index].LabelText = "";
+ buttonList[index].Add(nameLabel);
+ buttonList[index].Clicked += (obj, e) =>
+ {
+ PushButton button = obj as PushButton;
+
+ Tizen.Log.Fatal("TBT", "Item clicked!!!!!!!!!!!!!!::" + button.Name);
+ CurrentTCNum = int.Parse(button.Name);
+ _initView.Hide();
+ UpdateDetailPage();
+ _caseView.Hide();
+ _detailView.Show();
+ return false;
+ };
+
+ resultList[index] = new TextLabel();
+ resultList[index].TextColor = Color.White;
+ resultList[index].PointSize = 3.0f;
+ resultList[index].Name = index.ToString();
+ resultList[index].Text = resultText;
+ resultList[index].ParentOrigin = ParentOrigin.TopLeft;
+ resultList[index].PivotPoint = PivotPoint.TopLeft;
+ resultList[index].Position = new Position(285.0f, 0.0f, 0.0f);
+ resultList[index].Size2D = new Size2D(65, _scrollHeight);
+ resultList[index].VerticalAlignment = VerticalAlignment.Center;
+ resultList[index].HorizontalAlignment = HorizontalAlignment.Center;
+
+ View pageActor = new View();
+ pageActor.WidthResizePolicy = ResizePolicyType.FillToParent;
+ pageActor.HeightResizePolicy = ResizePolicyType.FillToParent;
+ pageActor.ParentOrigin = ParentOrigin.TopLeft;
+ pageActor.PivotPoint = PivotPoint.TopLeft;
+ pageActor.Position = new Position(0, index * _scrollHeight, 0.0f);
+
+ pageActor.Add(label);
+ pageActor.Add(buttonList[index]);
+ pageActor.Add(resultList[index]);
+ _initList.Add(pageActor);
+ }
+ _initList.SetAxisAutoLock(false);
+ PropertyMap rulerMapY = new PropertyMap();
+ rulerMapY.Add((int)ScrollModeType.XAxisScrollEnabled, new PropertyValue(false));
+ rulerMapY.Add((int)ScrollModeType.YAxisScrollEnabled, new PropertyValue(true));
+ rulerMapY.Add((int)ScrollModeType.YAxisSnapToInterval, new PropertyValue(_scrollHeight));
+ rulerMapY.Add((int)ScrollModeType.YAxisScrollBoundary, new PropertyValue(_scrollHeight * tcNum));
+ _initList.ScrollMode = rulerMapY;
+
+ Tizen.Log.Fatal("ManualTCT", "Initial ScrollView");
+ }
+
+ private void CreateDetailList()
+ {
+ Tizen.Log.Fatal("NUI", "Print the CreateDetailList::count: " + CurrentTCInfo.Count);
+ int senNum = CurrentTCInfo.Count;
+ _description.Text = CurrentTCInfo[0];
+ for (int index = 1; index < senNum; index++)
+ {
+ TextLabel description = new TextLabel();
+ description.TextColor = Color.White;
+ description.ParentOrigin = ParentOrigin.TopLeft;
+ description.PivotPoint = PivotPoint.TopLeft;
+ description.Position = new Position(0.0f, 0.0f, 0.0f);
+ description.Size2D = new Size2D((int)Window.Instance.Size.Width - 100, _detailScrollHeight);
+ description.HorizontalAlignment = HorizontalAlignment.Begin;
+ description.VerticalAlignment = VerticalAlignment.Center;
+ description.PointSize = 3.0f;
+ description.MultiLine = true;
+ description.Text = CurrentTCInfo[(int)index];
+
+ View pageActor = new View();
+ pageActor.WidthResizePolicy = ResizePolicyType.FillToParent;
+ pageActor.HeightResizePolicy = ResizePolicyType.FillToParent;
+ pageActor.ParentOrigin = ParentOrigin.TopLeft;
+ pageActor.PivotPoint = PivotPoint.TopLeft;
+ pageActor.Position = new Position(0, (index - 1) * _detailScrollHeight, 0.0f);
+ pageActor.Add(description);
+ _detailList.Add(pageActor);
+ }
+ _detailList.SetAxisAutoLock(false);
+ PropertyMap rulerMapY = new PropertyMap();
+ rulerMapY.Add((int)ScrollModeType.XAxisScrollEnabled, new PropertyValue(false));
+ rulerMapY.Add((int)ScrollModeType.YAxisScrollEnabled, new PropertyValue(true));
+ rulerMapY.Add((int)ScrollModeType.YAxisSnapToInterval, new PropertyValue(_detailScrollHeight));
+ rulerMapY.Add((int)ScrollModeType.YAxisScrollBoundary, new PropertyValue(_detailScrollHeight * (senNum - 1)));
+ _detailList.ScrollMode = rulerMapY;
+ }
+
+ //Init all the data, should be offered by Test Framework
+ void InitData()
+ {
+ ResultNumber.Total = _tcIDList.Count;
+ ResultNumber.Pass = 0;
+ ResultNumber.Fail = 0;
+ ResultNumber.Block = 0;
+ TCInfoList = new List<TestcaseInfo>();
+ foreach (KeyValuePair<string, ITest> pair in _tRunner.GetTestList())
+ {
+ List<string> preconditions = new List<string>();
+ preconditions.Add("Preconditions:");
+ List<string> steps = new List<string>();
+ steps.Add("Steps:");
+ List<string> postconditions = new List<string>();
+ postconditions.Add("Postconditions:\n");
+ IEnumerator<CustomAttributeData> customAttributes = pair.Value.Method.MethodInfo.CustomAttributes.GetEnumerator();
+ while (customAttributes.MoveNext())
+ {
+ if (customAttributes.Current.AttributeType.FullName.Equals(STEP_ATTRIBUTE_NAME))
+ {
+ steps.Add(customAttributes.Current.ConstructorArguments[0].Value + "." + customAttributes.Current.ConstructorArguments[1].Value);
+ }
+ else if (customAttributes.Current.AttributeType.FullName.Equals(PRECONDITION_ATTRIBUTE_NAME))
+ {
+ preconditions.Add(customAttributes.Current.ConstructorArguments[0].Value + "." + customAttributes.Current.ConstructorArguments[1].Value);
+ }
+ else if (customAttributes.Current.AttributeType.FullName.Equals(POSTCONDITION_ATTRIBUTE_NAME))
+ {
+ postconditions.Add(customAttributes.Current.ConstructorArguments[0].Value + "." + customAttributes.Current.ConstructorArguments[1].Value);
+ }
+ }
+ TCInfoList.Add(new TestcaseInfo
+ {
+ TestcaseName = pair.Key,
+ Preconditions = preconditions,
+ Steps = steps ,
+ Postconditions = postconditions,
+ });
+ }
+ UpdateCurrentTCInfo();
+ }
+
+ //The data in CurrentTCInfo list will be show in _detailList.
+ void UpdateCurrentTCInfo()
+ {
+ CurrentTCInfo = new List<string>();
+ Tizen.Log.Fatal("NUI", "Print the CurrentTCNum::" + CurrentTCNum);
+ CurrentTCInfo.Add("DESCRIPTION:#" + (CurrentTCNum + 1));
+ string[] str = TCInfoList[CurrentTCNum].TestcaseName.Split('.');
+ CurrentTCInfo.Add("CLASS:" + str[str.Length - 2]);
+ CurrentTCInfo.Add("METHOD:" + str[str.Length - 1]);
+ for(int index = 0; index < TCInfoList[CurrentTCNum].Preconditions.Count; index++)
+ {
+ CurrentTCInfo.Add(TCInfoList[CurrentTCNum].Preconditions[index]);
+ }
+ for(int index = 0; index < TCInfoList[CurrentTCNum].Steps.Count; index++ )
+ {
+ CurrentTCInfo.Add(TCInfoList[CurrentTCNum].Steps[index]);
+ }
+ for(int index = 0; index < TCInfoList[CurrentTCNum].Postconditions.Count; index++ )
+ {
+ CurrentTCInfo.Add(TCInfoList[CurrentTCNum].Postconditions[index]);
+ }
+ Tizen.Log.Fatal("NUI", "Ppppppppppppppppppppppprint the CurrentTCNum::" + CurrentTCNum);
+ }
+
+ private void OnSingleTestDone(object sender, SingleTestDoneEventArgs e)
+ {
+ //Test when will this event will be triggered
+ Tizen.Log.Fatal("NUI", "OnSingleTestDone has been triggered!");
+ // check old result
+ if (_listItem[CurrentTCNum].Result.Contains(StrResult.FAIL))
+ {
+ ResultNumber.Fail = ResultNumber.Fail - 1;
+ }
+ else if (_listItem[CurrentTCNum].Result.Contains(StrResult.PASS))
+ {
+ ResultNumber.Pass = ResultNumber.Pass - 1;
+ }
+ else if (_listItem[CurrentTCNum].Result.Contains(StrResult.BLOCK))
+ ResultNumber.Block = ResultNumber.Block - 1;
+
+ // Update new result
+ _listItem[CurrentTCNum].Result = e.Result;
+ if (e.Result.Contains(StrResult.PASS))
+ {
+ ResultNumber.Pass += 1;
+ }
+ else if (e.Result.Contains(StrResult.FAIL))
+ {
+ ResultNumber.Fail += 1;
+ }
+ else if (e.Result.Contains(StrResult.BLOCK))
+ {
+ ResultNumber.Block += 1;
+ }
+ TextLabel label = resultList[CurrentTCNum];
+ label.Text = _listItem[(int)CurrentTCNum].Result;
+ SetSummaryResult();
+ notRun.Text = _listItem[CurrentTCNum].Result;
+ }
+
+ private PropertyMap CreateTextVisual(string text, Color color)
+ {
+ PropertyMap map = new PropertyMap();
+ map.Add(Visual.Property.Type, new PropertyValue((int)Visual.Type.Text));
+ map.Add(TextVisualProperty.Text, new PropertyValue(text));
+ map.Add(TextVisualProperty.TextColor, new PropertyValue(color));
+ map.Add(TextVisualProperty.PointSize, new PropertyValue(6.0f));
+ map.Add(TextVisualProperty.HorizontalAlignment, new PropertyValue("CENTER"));
+ map.Add(TextVisualProperty.VerticalAlignment, new PropertyValue("BOTTOM"));
+ return map;
+ }
+ }
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+using System;
+using System.Threading.Tasks;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.Applications;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.UIComponents;
+
+namespace Tizen.NUI.Wearable.Tests
+{
+ [TestFixture]
+ [Description("NUIWatchApplication init test")]
+ public class NUIWatchApplicationTests
+ {
+ private bool _isWearable = false;
+ private bool _isEmulator = false;
+ private ManualTestNUI _testPage;
+
+ [SetUp]
+ public void Init()
+ {
+ Log.Info("TCT", "Preconditions for each TEST");
+ _isWearable = ManualTest.IsWearable();
+ _isEmulator = ManualTest.IsEmulator();
+
+ AppControl myAppControl = new AppControl();
+ myAppControl.Operation = AppControlOperations.Default;
+ myAppControl.ApplicationId = "org.tizen.example.NUIWatchApplicationManualTest";
+ AppControl.SendLaunchRequest(myAppControl);
+
+ _testPage = ManualTestNUI.GetInstance();
+ }
+
+ [TearDown]
+ public void Destroy()
+ {
+ Log.Info("TCT", "Postconditions for each TEST");
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : when launch NUIWatchApplication, Run() method should be called")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.Run M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(3, "Check if log show \"[TestCase][Run][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task Run_MANUAL_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ private void Confirm()
+ {
+ ManualTest.Confirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnLowMemory() should be called normally after launch app")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnLowMemory M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in mobile emulator now.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Precondition(5, "Right click on the mobile emulator and Click ControlPanel")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Find and click Memory button in Emulator Control Panel")]
+ [Step(3, "Select Soft Warning button")]
+ [Step(4, "Check if log show \"[TestCase][OnLowMemory][NUIWatchApplication] Pass\".")]
+ [Step(5, "Select Hard Warning button")]
+ [Step(6, "Check if log show \"[TestCase][OnLowMemory][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnLowMemory_MANUAL_TEST()
+ {
+ /* TEST CODE */
+ /*
+ * This test can be tested only in mobile emulator now.
+ * So just Confirm
+ */
+ Confirm();
+ return;
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnLowBattery() should be called normally after launch app")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnLowBattery M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in mobile emulator now.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Precondition(5, "Right click on the mobile emulator and Click ControlPanel")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Find and click Battery button in Emulator Control Panel")]
+ [Step(3, "Click level bar to make it under 5%")]
+ [Step(4, "Check if log show \"[TestCase][OnLowBattery][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnLowBattery_MANUAL_TEST()
+ {
+ /*
+ * This test can be tested only in mobile emulator now.
+ * So just Confirm
+ */
+ Confirm();
+ return;
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnCreate() should be called after launch app")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnCreate M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "Open terminal to view logs.")]
+ [Precondition(2, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(3, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Check if log show \"[TestCase][OnCreate][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnCreate_MANUAL_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnPreCreate() should be called after launch app")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnPreCreate M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "Open terminal to view logs.")]
+ [Precondition(2, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(3, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Check if log show \"[TestCase][OnPreCreate][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnPreCreate_MANUAL_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnAppControlReceived() should be called after launch app")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnAppControlReceived M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "Open terminal to view logs.")]
+ [Precondition(2, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(3, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Check if log show \"[TestCase][OnAppControlReceived][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnAppControlReceived_MANUAL_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnLocaleChanged() should be called after change Language of device")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnLocaleChanged M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "Open terminal to view logs.")]
+ [Precondition(2, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(3, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "[Common] if you cannot change a language in a setting app, this test can not be tested. Please click \"Pass\" button.")]
+ [Step(3, "Press Home hardkey -> Setting app -> change language -> return to app test -> wait in 20s")]
+ [Step(4, "Check if log show \"[TestCase][OnLocaleChanged][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnLocaleChanged_MANUAL_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnRegionFormatChanged() should be called after change Language of device")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnRegionFormatChanged M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "Open terminal to view logs.")]
+ [Precondition(2, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(3, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "[mobile] Press Home hardkey -> Setting app -> change language -> return to app test -> wait in 20s")]
+ [Step(3, "[TV profile] Press Home key -> Settings -> System -> Location -> change location -> return to app test -> wait in 20s")]
+ [Step(4, "[TV profile] if there is no \"Location\" menu, this test can not be tested. Please click \"Pass\" button if \"Location\" menu doesn't exist.")]
+ [Step(5, "Check if log show \"[TestCase][OnRegionFormatChanged][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnRegionFormatChanged_MANUAL_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : Exit() method should be excuted normally")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.Exit M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "Open terminal to view logs.")]
+ [Precondition(2, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(3, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Click Exit button")]
+ [Step(3, "Check if log show \"[TestCase][Exit][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task Exit_MANUAL_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnTerminate() should be called after call Exit()")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnTerminate M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "Open terminal to view logs.")]
+ [Precondition(2, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(3, "Enter command \"sdb dlog | grep TestCase\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Click Exit button")]
+ [Step(3, "Check if log show \"[TestCase][OnTerminate][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnTerminate_MANUAL_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : Resumed Event should be caught when resumed")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.Resumed E")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "EVL")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(3, "Check if log show \"[TestCase][OnResume][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task Resumed_EVENT_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : Paused Event should be caught when paused")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.Paused E")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "EVL")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(3, "run TC app (return to the TC app")]
+ [Step(4, "Check if log show \"[TestCase][OnPause][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task Paused_EVENT_TEST()
+ {
+ /* TEST CODE */
+
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnResume() should be called when resumed")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnResume M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(3, "Check if log show \"[TestCase][OnResume][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnResume_Manual_Test()
+ {
+ /* TEST CODE */
+
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnPause() should be called when paused")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnPause M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(3, "run TC app (return to the TC app")]
+ [Step(4, "Check if log show \"[TestCase][OnPause][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnPause_Manual_Test()
+ {
+ /* TEST CODE */
+
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : AmbientChanged Event should be caught when ambient mode is changed")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.AmbientChanged E")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "EVL")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable emulator.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > watch always on > turn on the watch always on mode")]
+ [Step(3, "Settings > display > Screen time out > 15 seconds")]
+ [Step(4, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(5, "wait to enter to always on display mode")]
+ [Step(6, "Check if log show \"[TestCase][TCT] AmbientChangedEvent\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task AmbientChanged_EVENT_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnAmbientChanged() should be called when ambient mode is changed")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnAmbientChanged M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable emulator.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > watch always on > turn on the watch always on mode")]
+ [Step(3, "Settings > display > Screen time out > 15 seconds")]
+ [Step(4, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(5, "wait to enter to always on display mode")]
+ [Step(6, "Check if log show \"[TestCase][OnAmbientChanged][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnAmbientChanged_Manual_Test()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnAmbientTick() should be called when ambient time tick comes")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnAmbientTick M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable emulator.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > watch always on > turn on the watch always on mode")]
+ [Step(3, "Settings > display > Screen time out > 15 seconds")]
+ [Step(4, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(5, "wait to enter to always on display mode")]
+ [Step(6, "Check if log show \"[TestCase][OnAmbientTick][NUIWatchApplication]\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnAmbientTick_Manual_Test()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : AmbientTick Event should be caught when ambient time tick comes")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.AmbientTick E")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "EVL")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable emulator.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > watch always on > turn on the watch always on mode")]
+ [Step(3, "Settings > display > Screen time out > 15 seconds")]
+ [Step(4, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(5, "wait to enter to always on display mode")]
+ [Step(6, "Check if log show \"[TestCase][TCT] AmbientTickEvent\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task AmbientTick_EVENT_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : TimeTick Event should be caught when time tick comes")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.TimeTick E")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "EVL")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(3, "Check if log show \"[TestCase][TCT] TimeTickEvent\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task TimeTick_EVENT_TEST()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("MANUAL TEST : OnTimeTick should be called when ambient time tick comes time tick comes")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.OnTimeTick M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ [Precondition(1, "This test can be tested only in wearable.")]
+ [Precondition(2, "Open terminal to view logs.")]
+ [Precondition(3, "Enter command \"sdb dlog -c\" to clear log")]
+ [Precondition(4, "Enter command \"sdb dlog WATCH\" to terminal")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Settings > Watch faces and style > Watch faces > select \"watch\" watchface > back to watchface")]
+ [Step(3, "Check if log show \"[TestCase][OnTimeTick][NUIWatchApplication] Pass\".")]
+ [Postcondition(1, "Close the terminal")]
+ public async Task OnTimeTick_Manual_Test()
+ {
+ /* TEST CODE */
+ await ManualTest.WaitForConfirm();
+ }
+
+ }
+}
+
+
+
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="Tizen.NUI.Wearable.Manual.Tests" version="1.0.0" api-version="5" xmlns="http://tizen.org/ns/packages">
+ <profile name="wearable" />
+ <ui-application appid="Tizen.NUI.Wearable.Manual.Tests" exec="Tizen.NUI.Wearable.Manual.Tests.dll" multiple="false" taskmanage="true" splash-screen-display="true" type="dotnet" launch_mode="single">
+ <icon>Tizen.NUI.Wearable.Manual.Tests.png</icon>
+ <label>Tizen.NUI.Wearable.Manual.Tests</label>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ </privileges>
+ <provides-appdefined-privileges />
+</manifest>
--- /dev/null
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+using System;
+using NUnitLite.TUnit;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using System.Threading;
+using System.Diagnostics;
+using System.Threading.Tasks;
+
+namespace Tizen.NUI.Test
+{
+
+ public class App : Tizen.NUI.NUIWatchApplication
+ {
+ static TextLabel MainTitle;
+ static readonly string Title = "Tizen.NUI.Wearable Auto TCT \n\n";
+ static readonly float TextSize = 10.0f;
+
+ public App() : base()
+ {
+ Log.Fatal("NUI", "Call App()");
+ }
+
+ protected override void OnCreate()
+ {
+ base.OnCreate();
+
+ Random rand = new Random();
+
+ Window window = Window.Instance;
+ Window.Instance.Title = "NUIWatchApplicationTest";
+ window.BackgroundColor = Color.Green;
+
+ MainTitle = new TextLabel();
+ MainTitle.MultiLine = true;
+ MainTitle.Text = Title;
+ MainTitle.PixelSize = TextSize;
+ MainTitle.BackgroundColor = new Color(rand.Next(250) / 255.0f, rand.Next(250) / 255.0f, rand.Next(250) / 255.0f, 1.0f);
+ MainTitle.Size2D = new Size2D(window.WindowSize.Width / 2, window.WindowSize.Height / 2);
+ MainTitle.PositionUsesPivotPoint = true;
+ MainTitle.ParentOrigin = ParentOrigin.Center;
+ MainTitle.PivotPoint = PivotPoint.Center;
+ window.Add(MainTitle);
+ }
+
+ static public async Task MainTitleChangeBackgroundColor(Color color)
+ {
+ }
+
+ static public async Task MainTitleChangeText(string title)
+ {
+ }
+
+ protected override void OnResume()
+ {
+ base.OnResume();
+
+ TRunner t = new TRunner();
+ t.LoadTestsuite();
+ t.Execute();
+ }
+
+ protected override void OnTerminate()
+ {
+ Exit();
+ base.OnTerminate();
+ }
+
+ static void Main(string[] args)
+ {
+ Tizen.Log.Fatal("NUI", "NUI RUN!");
+ App example = new App();
+ example.Run(args);
+ }
+
+ };
+
+}
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <!-- Property Group for .NET Core Project -->
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>tizen50</TargetFramework>
+ </PropertyGroup>
+
+ <!-- Property Group for Tizen Project -->
+ <PropertyGroup>
+ <TizenCreateTpkOnBuild>true</TizenCreateTpkOnBuild>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugType>portable</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>None</DebugType>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Folder Include="lib\" />
+ </ItemGroup>
+
+ <Import Project="..\Common\dependencies.props" />
+
+ <ItemGroup>
+ <PackageReference Include="Tizen.NET" Version="$(TizenNETVersion)">
+ <ExcludeAssets>Runtime</ExcludeAssets>
+ </PackageReference>
+ <PackageReference Include="Tizen.NET.Sdk" Version="$(TizenNETSdkVersion)" />
+ </ItemGroup>
+
+ <!-- Include Nuget Package for Tizen Project building -->
+ <ItemGroup>
+ <ProjectReference Include="..\nunit.framework\nunit.framework.csproj" />
+ <ProjectReference Include="..\nunitlite\nunitlite.csproj" />
+ </ItemGroup>
+
+</Project>
--- /dev/null
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26124.0
+MinimumVisualStudioVersion = 15.0.26124.0
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.Wearable.Tests", "Tizen.NUI.Wearable.Tests.csproj", "{EDA7CE08-63F0-4D30-A8DC-000A32C39119}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunit.framework", "..\nunit.framework\nunit.framework.csproj", "{C3B4E786-5F63-4253-ABC5-DB2268FF3278}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunitlite", "..\nunitlite\nunitlite.csproj", "{1EE295D5-6D47-4279-89B2-3095EF49628B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Debug|x64.Build.0 = Debug|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Debug|x86.Build.0 = Debug|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Release|x64.ActiveCfg = Release|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Release|x64.Build.0 = Release|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Release|x86.ActiveCfg = Release|Any CPU
+ {EDA7CE08-63F0-4D30-A8DC-000A32C39119}.Release|x86.Build.0 = Release|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Debug|x64.Build.0 = Debug|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Debug|x86.Build.0 = Debug|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Release|x64.ActiveCfg = Release|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Release|x64.Build.0 = Release|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Release|x86.ActiveCfg = Release|Any CPU
+ {C3B4E786-5F63-4253-ABC5-DB2268FF3278}.Release|x86.Build.0 = Release|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Debug|x64.Build.0 = Debug|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Debug|x86.Build.0 = Debug|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Release|x64.ActiveCfg = Release|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Release|x64.Build.0 = Release|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Release|x86.ActiveCfg = Release|Any CPU
+ {1EE295D5-6D47-4279-89B2-3095EF49628B}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {6FFDBEFC-A9D7-41C6-A324-16EEA6D927BC}
+ EndGlobalSection
+EndGlobal
--- /dev/null
+{
+ "styles":
+ {
+ "TextLabel":
+ {
+ "pointSize":10,
+ "enableAutoScroll":false,
+ "autoScrollLoopCount":2,
+ "autoScrollGap":50,
+ "autoScrollSpeed":80
+ },
+
+ "TextLabelFontSize0":
+ {
+ "pointSize":10
+ },
+ "TextLabelFontSize1":
+ {
+ "pointSize":10
+ },
+ "TextLabelFontSize2":
+ {
+ "pointSize":10
+ },
+ "TextLabelFontSize3":
+ {
+ "pointSize":10
+ },
+ "TextLabelFontSize4":
+ {
+ "pointSize":10
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * This file is part of Dali Toolkit
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+//******************************************************************************
+//
+// Default Reference style theme for a 1920x1080 resolution, The values determined by UX design specification.
+// This file can be copied to a new folder within the styles/ directory and amended with new default values.
+// Can be overriden if StyleManager applies another style sheet.
+//
+//******************************************************************************
+
+{
+ "styles":
+ {
+ "Tooltip":
+ {
+ "tooltip":
+ {
+ "content":
+ {
+ "pointSize":84
+ },
+ "waitTime":0.5,
+ "background":
+ {
+ "visual":"{DALI_IMAGE_DIR}tooltip.9.png",
+ "border":[1,5,5,1]
+ },
+ "tail":
+ {
+ "visibility":false,
+ "aboveVisual":"{DALI_IMAGE_DIR}tooltip-tail-above.png",
+ "belowVisual":"{DALI_IMAGE_DIR}tooltip-tail-below.png"
+ },
+ "position":"BELOW",
+ "hoverPointOffset":[10,10],
+ "movementThreshold":5,
+ "disappearOnMovement":false
+ }
+ },
+ "TextLabel":
+ {
+ "pointSize":108,
+ "enableAutoScroll":false,
+ "autoScrollLoopCount":2,
+ "autoScrollGap":50,
+ "autoScrollSpeed":80
+ },
+
+ "TextLabelFontSize0":
+ {
+ "pointSize":84
+ },
+ "TextLabelFontSize1":
+ {
+ "pointSize":96
+ },
+ "TextLabelFontSize2":
+ {
+ "pointSize":108
+ },
+ "TextLabelFontSize3":
+ {
+ "pointSize":120
+ },
+ "TextLabelFontSize4":
+ {
+ "pointSize":132
+ },
+
+ "TextField":
+ {
+ "pointSize":120,
+ "primaryCursorColor":[0.0,0.72,0.9,1.0],
+ "secondaryCursorColor":[0.0,0.72,0.9,1.0],
+ "cursorWidth":6,
+ "selectionHighlightColor":[0.75,0.96,1.0,1.0],
+ "grabHandleImage" : "{DALI_STYLE_IMAGE_DIR}cursor_handler_drop_center.png",
+ "selectionHandleImageLeft" : {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_left.png" },
+ "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" }
+ },
+
+ "TextFieldFontSize0":
+ {
+ "pointSize":120
+ },
+ "TextFieldFontSize1":
+ {
+ "pointSize":120
+ },
+ "TextFieldFontSize2":
+ {
+ "pointSize":120
+ },
+ "TextFieldFontSize3":
+ {
+ "pointSize":120
+ },
+ "TextFieldFontSize4":
+ {
+ "pointSize":120
+ },
+ "TextSelectionPopup":
+ {
+ "popupMaxSize":[1700,100],
+ "optionDividerSize":[2,0],
+ "popupDividerColor":[0.23,0.72,0.8,0.11],
+ "popupIconColor":[1.0,1.0,1.0,1.0],
+ "popupPressedColor":[0.24,0.72,0.8,0.11],
+ "background": {
+ "rendererType": "image",
+ "url": "{DALI_IMAGE_DIR}selection-popup-bg.9.png"
+ },
+ "popupFadeInDuration":0.25,
+ "popupFadeOutDuration":0.25
+ },
+ "TextSelectionPopupButton":
+ {
+ "label":
+ {
+ "visualType":"TEXT",
+ "pointSize":120
+ },
+ "unselectedBackgroundVisual":
+ {
+ "visualType": "IMAGE",
+ "url": ""
+ },
+ "selectedBackgroundVisual":
+ {
+ "visualType": "IMAGE",
+ "url": ""
+ }
+ },
+ "TextSelectionToolbar":
+ {
+ "enableOvershoot":true,
+ "enableScrollBar":true,
+ "scrollView":
+ {
+ "overshootAnimationSpeed":360.0,
+ "overshootSize":[1920.0,130.0]
+ }
+ },
+ "ScrollView":
+ {
+ "overshootEffectColor":"B018",
+ "overshootAnimationSpeed":960.0,
+ "overshootSize":[1920.0,130.0]
+ },
+ "ItemView":
+ {
+ "overshootEffectColor":"B018",
+ "overshootAnimationSpeed":960.0,
+ "overshootSize":[1920.0,130.0]
+ },
+ "ScrollBar":
+ {
+ "indicatorShowDuration":0.25,
+ "indicatorHideDuration":0.25,
+ "color":[0.0,0.72,0.9,0.7]
+ },
+ "TextEditor":
+ {
+ "pointSize":120,
+ "primaryCursorColor":[0.0,0.72,0.9,1.0],
+ "secondaryCursorColor":[0.0,0.72,0.9,1.0],
+ "cursorWidth":6,
+ "selectionHighlightColor":[0.75,0.96,1.0,1.0],
+ "grabHandleImage" : "{DALI_STYLE_IMAGE_DIR}cursor_handler_drop_center.png",
+ "selectionHandleImageLeft" : {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_left.png" },
+ "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" }
+ },
+ "ProgressBar":
+ {
+ "trackVisual":{
+ "visualType":"IMAGE",
+ "url":"{DALI_IMAGE_DIR}progress-bar-skin-track.9.png"
+ },
+ "progressVisual":{
+ "visualType":"IMAGE",
+ "url":"{DALI_IMAGE_DIR}progress-bar-skin-progress.9.png"
+ },
+ "secondaryProgressVisual":{
+ "visualType":"IMAGE",
+ "url":"{DALI_IMAGE_DIR}progress-bar-skin-secondary-progress.9.png"
+ },
+ "indeterminateVisual":{
+ "visualType":"IMAGE",
+ "pixelArea":[0.0, 0.0, 10.0, 1.0],
+ "wrapModeU":"REPEAT",
+ "url":"{DALI_IMAGE_DIR}progress-bar-skin-indeterminate.png"
+ },
+ "indeterminateVisualAnimation":
+ [
+ {
+ "target":"indeterminateVisual",
+ "property":"pixelArea",
+ "initialValue":[0.0, 0.0, 10.0, 1.0],
+ "targetValue":[-1.0, 0.0, 10.0, 1.0],
+ "animator":
+ {
+ "alphaFunction":"DEFAULT",
+ "timePeriod":
+ {
+ "duration":0.8,
+ "delay":0
+ }
+ }
+ }
+ ],
+ "labelVisual":{
+ "visualType": "TEXT",
+ "textColor": [ 1.0, 1.0, 1.0, 1.0 ],
+ "pointSize" : 12.0, // Point size must always be provided to Text Visual
+ "horizontalAlignment": "CENTER",
+ "verticalAlignment": "CENTER"
+ },
+ "progressValue": 0.0,
+ "secondaryProgressValue":0.0,
+ "indeterminate": false
+ },
+ "Button":
+ {
+ "styles":["Tooltip"],
+ "initialAutoRepeatingDelay":2.0,
+ "nextAutoRepeatingDelay":0.9
+ // Note: Visuals added to Button will be used in all derived buttons unless overridden.
+ },
+ "PushButton":
+ {
+ "styles":["Button"],
+ "autoRepeating":false,
+ "togglable":false,
+ "labelPadding":[ 12.0, 12.0, 12.0, 12.0 ],
+ "label":
+ {
+ "visualType": "TEXT",
+ "horizontalAlignment": "CENTER",
+ "pointSize" : 15.0, // Point size must always be provided to Text Visual
+ "verticalAlignment": "CENTER"
+ },
+ "unselectedBackgroundVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}button-up.9.png"
+ },
+ "selectedBackgroundVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}button-down.9.png"
+ },
+ "disabledSelectedBackgroundVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}button-down-disabled.9.png"
+ },
+ "disabledUnselectedBackgroundVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}button-disabled.9.png"
+ }
+ },
+ "ToggleButton":
+ {
+ "styles":["Button"]
+ },
+ "CheckBoxButton":
+ {
+ "styles":["Button"],
+ "labelPadding":[ 12.0, 12.0, 0.0, 0.0 ],
+ "label":
+ {
+ "visualType": "TEXT",
+ "pointSize" : 15.0, // Point size must always be provided to Text Visual
+ "verticalAlignment": "CENTER"
+ },
+ "unselectedVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}checkbox-unselected.png"
+ },
+ "selectedVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}checkbox-selected.png"
+ },
+ "disabledUnselectedVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}checkbox-unselected-disabled.png"
+ },
+ "disabledSelectedVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}checkbox-selected-disabled.png"
+ }
+ },
+ "RadioButton":
+ {
+ "styles":["Button"],
+ "labelPadding":[ 12.0, 12.0, 0.0, 0.0 ],
+ "label":
+ {
+ "visualType": "TEXT",
+ "pointSize" : 15.0, // Point size must always be provided to Text Visual
+ "verticalAlignment": "CENTER"
+ },
+ "unselectedVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}radio-button-unselected.png"
+ },
+ "selectedVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}radio-button-selected.png"
+ },
+ "disabledUnselectedVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}radio-button-unselected-disabled.png"
+ },
+ "disabledSelectedVisual":
+ {
+ "visualType": "IMAGE",
+ "url": "{DALI_IMAGE_DIR}radio-button-selected-disabled.png"
+ }
+ }
+ }
+}
--- /dev/null
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Test;
+
+namespace Tizen.NUI.Tests
+{
+ [TestFixture]
+ [Description("Tizen.NUI.NUIWatchApplication. Tests")]
+ public class AmbientChangedEventArgsTests
+ {
+ private string TAG = "NUI";
+
+ [SetUp]
+ public void Init()
+ {
+ Tizen.Log.Info(TAG, "Init() is called!");
+ App.MainTitleChangeText("AmbientChangedEventArgsTests");
+ App.MainTitleChangeBackgroundColor(null);
+ }
+
+ [TearDown]
+ public void Destroy()
+ {
+ Tizen.Log.Info(TAG, "Destroy() is called!");
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("Create a AmbientChangedEventArgs object. Check whether AmbientChangedEventArgs is successfully created or not.")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.AmbientChangedEventArgs.AmbientChangedEventArgs C")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "CONSTR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ public void AmbientChangedEventArgs_INIT()
+ {
+ /* TEST CODE */
+ var changed = true;
+ var ambientChangedEventArgs = new NUIWatchApplication.AmbientChangedEventArgs(changed);
+ Assert.IsNotNull(ambientChangedEventArgs, "Can't create success object AmbientChangedEventArgs");
+ Assert.IsInstanceOf<NUIWatchApplication.AmbientChangedEventArgs>(ambientChangedEventArgs, "Should be an instance of AmbientChangedEventArgs type.");
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("Test Hover. Check whether Changed is readable.")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.AmbientChangedEventArgs.Changed A")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "PRO")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ public void Changed_GET_VALUE()
+ {
+ /* TEST CODE */
+ var changed = true;
+ NUIWatchApplication.AmbientChangedEventArgs ambientChangedEventArgs = new NUIWatchApplication.AmbientChangedEventArgs(changed);
+ Assert.AreEqual(changed, ambientChangedEventArgs.Changed, "Retrieved Changed should be equal to set value");
+ }
+ }
+}
--- /dev/null
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Test;
+
+namespace Tizen.NUI.Tests
+{
+ [TestFixture]
+ [Description("Tizen.NUI.NUIWatchApplication. Tests")]
+ public class AmbientTickEventArgsTests
+ {
+ private string TAG = "NUI";
+
+ [SetUp]
+ public void Init()
+ {
+ Tizen.Log.Info(TAG, "Init() is called!");
+ App.MainTitleChangeText("AmbientTickEventArgsTests");
+ App.MainTitleChangeBackgroundColor(null);
+ }
+
+ [TearDown]
+ public void Destroy()
+ {
+ Tizen.Log.Info(TAG, "Destroy() is called!");
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("Create a AmbientTickEventArgs object. Check whether AmbientTickEventArgs is successfully created or not.")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.AmbientTickEventArgs.AmbientTickEventArgs C")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "CONSTR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ public void AmbientTickEventArgs_INIT()
+ {
+ /* TEST CODE */
+ var watchTime = new WatchTime();
+ var ambientTickEventArgs = new NUIWatchApplication.AmbientTickEventArgs(watchTime);
+ Assert.IsNotNull(ambientTickEventArgs, "Can't create success object AmbientTickEventArgs");
+ Assert.IsInstanceOf<NUIWatchApplication.AmbientTickEventArgs>(ambientTickEventArgs, "Should be an instance of AmbientTickEventArgs type.");
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("Test WatchTime. Check whether WatchTime is readable.")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.AmbientTickEventArgs.WatchTime A")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "PRO")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ public void WatchTime_GET_VALUE()
+ {
+ /* TEST CODE */
+ var watchTime = new WatchTime();
+ NUIWatchApplication.AmbientTickEventArgs ambientTickEventArgs = new NUIWatchApplication.AmbientTickEventArgs(watchTime);
+ Assert.AreEqual(watchTime, ambientTickEventArgs.WatchTime, "Retrieved WatchTime should be equal to set value");
+ }
+ }
+}
--- /dev/null
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Test;
+
+namespace Tizen.NUI.Tests
+{
+ [TestFixture]
+ [Description("Tizen.NUI.NUIWatchApplication. Tests")]
+ public class TimeTickEventArgsTests
+ {
+ private string TAG = "NUI";
+
+ [SetUp]
+ public void Init()
+ {
+ Tizen.Log.Info(TAG, "Init() is called!");
+ App.MainTitleChangeText("TimeTickEventArgsTests");
+ App.MainTitleChangeBackgroundColor(null);
+ }
+
+ [TearDown]
+ public void Destroy()
+ {
+ Tizen.Log.Info(TAG, "Destroy() is called!");
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("Create a TimeTickEventArgs object. Check whether TimeTickEventArgs is successfully created or not.")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.TimeTickEventArgs.TimeTickEventArgs C")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "CONSTR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ public void TimeTickEventArgs_INIT()
+ {
+ /* TEST CODE */
+ var watchTime = new WatchTime();
+ var timeTickEventArgs = new NUIWatchApplication.TimeTickEventArgs(watchTime);
+ Assert.IsNotNull(timeTickEventArgs, "Can't create success object TimeTickEventArgs");
+ Assert.IsInstanceOf<NUIWatchApplication.TimeTickEventArgs>(timeTickEventArgs, "Should be an instance of TimeTickEventArgs type.");
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("Test WatchTime. Check whether WatchTime is readable.")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.TimeTickEventArgs.WatchTime A")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "PRO")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ public void WatchTime_GET_VALUE()
+ {
+ /* TEST CODE */
+ var watchTime = new WatchTime();
+ NUIWatchApplication.TimeTickEventArgs timeTickEventArgs = new NUIWatchApplication.TimeTickEventArgs(watchTime);
+ Assert.AreEqual(watchTime, timeTickEventArgs.WatchTime, "Retrieved Hover should be equal to set value");
+ }
+ }
+}
--- /dev/null
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using System;
+using Tizen.NUI;
+using Tizen.NUI.Test;
+
+namespace Tizen.NUI.Tests
+{
+
+ [TestFixture]
+ [Description("Tizen.NUI.NUIWatchApplication Tests")]
+ public class NUIWatchApplicationTests
+ {
+
+ private static string TAG = "NUI";
+
+ [SetUp]
+ public void Init()
+ {
+ Tizen.Log.Info(TAG, "Init() is called!");
+ App.MainTitleChangeText("NUIWatchApplicationTests");
+ App.MainTitleChangeBackgroundColor(null);
+ }
+
+ [TearDown]
+ public void Destroy()
+ {
+ Tizen.Log.Info(TAG, "Destroy() is called!");
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("dali NUIWatchApplication constructor test. Check whether object is successfully created or not.")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.NUIWatchApplication C")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "CONSTR")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ public void NUIWatchApplication_INIT()
+ {
+ /* TEST CODE */
+ try
+ {
+ var application = new NUIWatchApplication();
+ Assert.IsNotNull(application, "Object should not be null after initializing.");
+ Assert.IsInstanceOf<NUIWatchApplication>(application, "application must be an instance of Applications.WatchApplication.");
+ application.Dispose();
+ }
+ catch (Exception e)
+ {
+ Tizen.Log.Error(TAG, "Caught Exception" + e.ToString());
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());
+ Assert.Fail("Caught Exception" + e.ToString());
+ }
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("dali NUIWatchApplication constructor test. Check whether object which set stylesheet is successfully created or not.")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.NUIWatchApplication C")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "CONSTR")]
+ [Property("COVPARAM", "string")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ public void NUIWatchApplication_INIT_WITH_STRING()
+ {
+ /* TEST CODE */
+ try
+ {
+ var application = new NUIWatchApplication("stylesheet");
+ Assert.IsNotNull(application, "Object should not be null after initializing.");
+ Assert.IsInstanceOf<NUIWatchApplication>(application, "application must be an instance of Applications.WatchApplication.");
+ application.Dispose();
+ }
+ catch (Exception e)
+ {
+ Tizen.Log.Error(TAG, "Caught Exception" + e.ToString());
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());
+ Assert.Fail("Caught Exception" + e.ToString());
+ }
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("Test Window. Check whether Window is readable.")]
+ [Property("SPEC", "Tizen.NUI.NUIWatchApplication.Window A")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "PRO")]
+ [Property("AUTHOR", "Feng Jin, feng16.jin@samsung.com")]
+ public void Window_GET_VALUE()
+ {
+ /* TEST CODE */
+ var application = new NUIWatchApplication();
+ Assert.IsNotNull(application.Window, "Retrieved Window should be not null");
+ Assert.AreEqual("NUIWatchApplicationTest", application.Window.Title, "Should be equal to the set value");
+ }
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="Tizen.NUI.Wearable.Tests" version="1.0.0" api-version="5" xmlns="http://tizen.org/ns/packages">
+ <profile name="wearable" />
+ <ui-application appid="Tizen.NUI.Wearable.Tests" exec="Tizen.NUI.Wearable.Tests.dll" multiple="false" taskmanage="true" splash-screen-display="true" type="dotnet" launch_mode="single">
+ <icon>Tizen.NUI.Tests.png</icon>
+ <label>Tizen.NUI.Wearable.Tests</label>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ </privileges>
+ <provides-appdefined-privileges />
+</manifest>