<total_tcn>2096</total_tcn>
<pkg_name>mobile/Tizen.NUI.Tests-6.0.zip</pkg_name>
</suite>
+ <suite name="Tizen.NUI.WindowSystem.Manual.Tests" category="C# Device APIs">
+ <auto_tcn>0</auto_tcn>
+ <manual_tcn>1</manual_tcn>
+ <total_tcn>1</total_tcn>
+ <pkg_name>mobile/Tizen.NUI.WindowSystem.Manual.Tests-6.0.zip</pkg_name>
+ </suite>
+ <suite name="Tizen.NUI.WindowSystem.Tests" category="C# Device APIs">
+ <auto_tcn>12</auto_tcn>
+ <manual_tcn>0</manual_tcn>
+ <total_tcn>12</total_tcn>
+ <pkg_name>mobile/Tizen.NUI.WindowSystem.Tests-6.0.zip</pkg_name>
+ </suite>
<suite name="Tizen.Network.Stc.Tests" category="C# Device APIs">
<auto_tcn>28</auto_tcn>
<manual_tcn>0</manual_tcn>
--- /dev/null
+/*\r
+* Copyright (c) 2020 Samsung Electronics Co., Ltd.\r
+*\r
+* Licensed under the Apache License, Version 2.0 (the "License");\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an "AS IS" BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*\r
+*/\r
+\r
+using System;\r
+using System.Runtime.InteropServices;\r
+using System.Collections.Generic;\r
+using NUnitLite.TUnit;\r
+using NUnit.Framework.Interfaces;\r
+using NUnit.Framework.TUnit;\r
+using System.Reflection;\r
+using Tizen.NUI.BaseComponents;\r
+using Tizen.NUI.Components;\r
+using Tizen.Applications;\r
+using System.Runtime.CompilerServices;\r
+\r
+namespace Tizen.NUI.WindowSystem.Tests\r
+{\r
+ class ManualTestNUI\r
+ {\r
+ class ListBridge : FlexibleViewAdapter\r
+ {\r
+ private List<string> _mDatas;\r
+ private List<ItemData> _mlistItem;\r
+\r
+ public ListBridge(List<string> datas, List<ItemData> item)\r
+ {\r
+ _mDatas = datas;\r
+ _mlistItem = item;\r
+ }\r
+\r
+ public void UpdateItemData(int position, List<ItemData> item)\r
+ {\r
+ _mlistItem = item;\r
+ }\r
+\r
+ public override FlexibleViewViewHolder OnCreateViewHolder(int viewType)\r
+ {\r
+ FlexibleViewViewHolder viewHolder = new FlexibleViewViewHolder(new Button());\r
+ return viewHolder;\r
+ }\r
+\r
+ public override void OnBindViewHolder(FlexibleViewViewHolder holder, int position)\r
+ {\r
+ string testcaseName = "#." + (position + 1).ToString() + _mDatas[position];\r
+ string resultText = "[" + _mlistItem[(int)position].Result + "]";\r
+ string text = testcaseName + resultText;\r
+\r
+ Button btn = holder.ItemView as Button;\r
+ if (btn)\r
+ {\r
+ btn.Focusable = true;\r
+ btn.Text = text;\r
+ btn.Name = position.ToString();\r
+ btn.PointSize = ManualTest.GetPointSize();\r
+ btn.Size = new Size(Window.Instance.Size.Width, Window.Instance.Size.Height * 0.046f);\r
+ btn.TextColor = new Color(0, 0, 0, 1);\r
+ btn.ImageShadow = new ImageShadow\r
+ {\r
+ Url = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/rectangle_btn_shadow.png",\r
+ Border = new Rectangle(5, 5, 5, 5)\r
+ };\r
+ btn.BackgroundImage = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/rectangle_toggle_btn_normal.png";\r
+ btn.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);\r
+ btn.FocusGained += (obj, e) =>\r
+ {\r
+ btn.BackgroundImage = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/rectangle_point_btn_normal.png";\r
+ };\r
+ btn.FocusLost += (obj, e) =>\r
+ {\r
+ btn.BackgroundImage = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/rectangle_toggle_btn_normal.png";\r
+ };\r
+ btn.ParentOrigin = Position.ParentOriginTopLeft;\r
+ btn.PivotPoint = PivotPoint.TopLeft;\r
+ btn.TextAlignment = HorizontalAlignment.Begin;\r
+ btn.CellIndex = new Vector2(position, 0);\r
+ }\r
+ }\r
+\r
+ public override void OnDestroyViewHolder(FlexibleViewViewHolder holder)\r
+ {\r
+ if (holder.ItemView != null)\r
+ {\r
+ holder.ItemView.Dispose();\r
+ }\r
+ }\r
+\r
+ public override int GetItemCount()\r
+ {\r
+ return _mDatas.Count;\r
+ }\r
+ }\r
+\r
+ private List<string> _tcIDList;\r
+ private List<ItemData> _listItem;\r
+ private TSettings _tsettings;\r
+ private TRunner _tRunner;\r
+ private Button _passButton, _failButton, _blockButton, _homeButton, _preButton, _nextButton, _doneButton;\r
+ private TextLabel _notRun;\r
+ private const string STEP_ATTRIBUTE_NAME = "NUnit.Framework.StepAttribute";\r
+ private const string PRECONDITION_ATTRIBUTE_NAME = "NUnit.Framework.PreconditionAttribute";\r
+ private const string POSTCONDITION_ATTRIBUTE_NAME = "NUnit.Framework.PostconditionAttribute";\r
+ private List<string> _listNotPass;\r
+ private ToastMessage _toastMessage;\r
+ //For TV\r
+ private float _pointSize = 20.0f;\r
+\r
+ //Save the information of every single test case\r
+ private List<TestcaseInfo> _tcInfoList;\r
+ private List<string> _currentTCInfo;\r
+\r
+ private static ManualTestNUI _instance;\r
+ private static Object _lockObject = new object();\r
+\r
+ //Show the result of all the test case\r
+ private TextLabel _summaryLabel;\r
+ private View _initView;\r
+ private View _detailView;\r
+ private View _caseView;\r
+ private FlexibleView _initList;\r
+ private ListBridge _adapter;\r
+ private TableView _detailList;\r
+ private View _buttonContainer;\r
+ private View _buttonContainer2;\r
+ private TableView _firstPageContainer;\r
+ private Button _run;\r
+ private Button _runButton;\r
+\r
+ //Always save the current TC number;\r
+ private int _currentTCNum = 0;\r
+\r
+\r
+ public static ManualTestNUI GetInstance()\r
+ {\r
+ lock (_lockObject)\r
+ {\r
+ if (_instance == null)\r
+ {\r
+ _instance = new ManualTestNUI();\r
+ }\r
+ }\r
+ return _instance;\r
+ }\r
+\r
+ private ManualTestNUI()\r
+ {\r
+ Initialize();\r
+ }\r
+ public void Initialize()\r
+ {\r
+ Tizen.Log.Fatal("NUI", "Initialize window's width is " + Window.Instance.Size.Width + " Dpi is " + Window.Instance.Dpi.Length());\r
+ Window.Instance.BackgroundColor = Color.White;\r
+\r
+ _toastMessage = new ToastMessage();\r
+ _pointSize = ManualTest.GetPointSize();\r
+ RunType.Value = RunType.MANUAL;\r
+ _tRunner = new TRunner();\r
+ _tRunner.LoadTestsuite();\r
+ _tRunner.SingleTestDone += OnSingleTestDone;\r
+ _tcIDList = new List<string>();\r
+ _listItem = new List<ItemData>();\r
+ _listNotPass = TSettings.GetInstance().GetNotPassListManual();\r
+ int count = 0;\r
+ if (_listNotPass.Count == 0)\r
+ {\r
+ foreach (KeyValuePair<string, ITest> pair in _tRunner.GetTestList())\r
+ {\r
+ count++;\r
+ _listItem.Add(new ItemData { No = count, TCName = pair.Key, Result = StrResult.NOTRUN });\r
+ _tcIDList.Add(pair.Key);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ foreach (var tc in _listNotPass)\r
+ {\r
+ count++;\r
+ _listItem.Add(new ItemData { No = count, TCName = tc, Result = StrResult.NOTRUN });\r
+ _tcIDList.Add(tc);\r
+ }\r
+ }\r
+ Tizen.Log.Fatal("NUI", "TCT : count:" + count.ToString());\r
+ foreach (String nameTc in _tcIDList)\r
+ {\r
+ Tizen.Log.Fatal("NUI", "TCT : TCName:" + nameTc.ToString());\r
+ }\r
+\r
+ _tsettings = TSettings.GetInstance();\r
+ _tsettings.IsManual = true;\r
+\r
+ InitData();\r
+ _caseView = new View();\r
+\r
+ _summaryLabel = new TextLabel();\r
+ _summaryLabel.PointSize = _pointSize;\r
+ _summaryLabel.Size = new Size(Window.Instance.Size.Width, Window.Instance.Size.Height * 0.055f);\r
+ _summaryLabel.ParentOrigin = Position.ParentOriginTopLeft;\r
+ _summaryLabel.PivotPoint = PivotPoint.TopLeft;\r
+ _summaryLabel.HorizontalAlignment = HorizontalAlignment.Center;\r
+ _summaryLabel.VerticalAlignment = VerticalAlignment.Center;\r
+ Window.Instance.GetDefaultLayer().Add(_summaryLabel);\r
+ SetSummaryResult();\r
+\r
+ _initView = new View();\r
+ _initView.Size = new Size(Window.Instance.Size.Width, Window.Instance.Size.Height * 0.9f);\r
+ _initView.Position = new Position(0.0f, (int)(Window.Instance.Size.Height * 0.0648), 0.0f);\r
+ _initView.ParentOrigin = Position.ParentOriginTopLeft;\r
+ _initView.PivotPoint = PivotPoint.TopLeft;\r
+ InitializeFirstPage();\r
+ _initView.Show();\r
+ Window.Instance.GetDefaultLayer().Add(_initView);\r
+\r
+ _detailView = new View();\r
+ _detailView.Size = new Size(Window.Instance.Size.Width, Window.Instance.Size.Height * 0.9f);\r
+ _detailView.Position = new Position(0.0f, (int)(Window.Instance.Size.Height * 0.0648), 0.0f);\r
+ _detailView.ParentOrigin = Position.ParentOriginTopLeft;\r
+ _detailView.PivotPoint = PivotPoint.TopLeft;\r
+ InitializeDetailPage();\r
+ _detailView.Hide();\r
+ Window.Instance.GetDefaultLayer().Add(_detailView);\r
+\r
+ FocusManager.Instance.SetCurrentFocusView(_run);\r
+ }\r
+\r
+ void SetCommonButtonStyle(Button btn, string text)\r
+ {\r
+ if (!btn) return;\r
+ btn.Focusable = true;\r
+ btn.Text = text;\r
+ btn.PointSize = _pointSize;\r
+ float buttonWidth = ManualTest.IsMobile() ? Window.Instance.Size.Width * 0.18f : Window.Instance.Size.Width * 0.06f;\r
+ btn.Size = new Size(buttonWidth, Window.Instance.Size.Height * 0.046f);\r
+ btn.TextColor = new Color(0, 0, 0, 1);\r
+ btn.ImageShadow = new ImageShadow\r
+ {\r
+ Url = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/rectangle_btn_shadow.png",\r
+ Border = new Rectangle(5, 5, 5, 5)\r
+ };\r
+ btn.BackgroundImage = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/rectangle_toggle_btn_normal.png";\r
+ btn.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);\r
+ btn.ParentOrigin = Position.ParentOriginTopLeft;\r
+ btn.PivotPoint = PivotPoint.TopLeft;\r
+ btn.FocusGained += (obj, e) =>\r
+ {\r
+ btn.BackgroundImage = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/rectangle_point_btn_normal.png";\r
+ };\r
+ btn.FocusLost += (obj, e) =>\r
+ {\r
+ btn.BackgroundImage = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/rectangle_toggle_btn_normal.png";\r
+ };\r
+ }\r
+\r
+ void InitializeFirstPage()\r
+ {\r
+ //Create Run Button, when you Click it, then the first test case will be executed.\r
+ _doneButton = new Button();\r
+ SetCommonButtonStyle(_doneButton, "Done");\r
+ _doneButton.Clicked += (obj, ee) =>\r
+ {\r
+ TSettings.GetInstance().SubmitManualResult();\r
+ };\r
+\r
+ _run = new Button();\r
+ SetCommonButtonStyle(_run, "Runner");\r
+ _run.Clicked += (obj, ee) =>\r
+ {\r
+ Tizen.Log.Fatal("NUI", "Check all the test case from the first one.");\r
+ _currentTCNum = 0;\r
+ _initView.Hide();\r
+ _caseView.Hide();\r
+ UpdateDetailPage();\r
+ _detailView.Show();\r
+ FocusManager.Instance.SetCurrentFocusView(_runButton);\r
+ };\r
+ _run.RightFocusableView = _doneButton;\r
+ _doneButton.LeftFocusableView = _run;\r
+\r
+ //To show all the test case information(Number _className._TCName [result]).\r
+ _initList = new FlexibleView();\r
+ _initList.Position = new Position(0, Window.Instance.Size.Height * 0.0925f);\r
+ _initList.Size = new Size(Window.Instance.Size.Width, Window.Instance.Size.Height * 0.74f);\r
+ _adapter = new ListBridge(_tcIDList, _listItem);\r
+ _initList.SetAdapter(_adapter);\r
+ LinearLayoutManager layoutManager = new LinearLayoutManager(LinearLayoutManager.VERTICAL);\r
+ _initList.SetLayoutManager(layoutManager);\r
+ _initList.FocusedItemIndex = 0;\r
+ _initList.Focusable = true;\r
+ _initList.ItemClicked += (obj, e) =>\r
+ {\r
+ Button button = e.ClickedView.ItemView as Button;\r
+ if (button)\r
+ {\r
+ Tizen.Log.Fatal("NUI", "Item clicked!!::" + button.Name);\r
+ _currentTCNum = int.Parse(button.Name);\r
+ _initView.Hide();\r
+ UpdateDetailPage();\r
+ _caseView.Hide();\r
+ _detailView.Show();\r
+ FocusManager.Instance.SetCurrentFocusView(_runButton);\r
+ }\r
+ };\r
+ _initList.FocusGained += (obj, e) =>\r
+ {\r
+ FlexibleViewViewHolder holder = _initList?.FindViewHolderForAdapterPosition(0);\r
+ if (holder != null && holder.ItemView != null)\r
+ {\r
+ FocusManager.Instance.SetCurrentFocusView(holder.ItemView);\r
+ _currentTCNum = 0;\r
+ }\r
+ };\r
+ _initList.FocusLost += (obj, e) =>\r
+ {\r
+ _currentTCNum = 0;\r
+ };\r
+ _initList.KeyEvent += (obj, e) =>\r
+ {\r
+ if (e.Key.State == Key.StateType.Down)\r
+ {\r
+ Tizen.Log.Fatal("NUI", "KeyEvent~KeyPressedName = " + e.Key.KeyPressedName + ",KeyCode = " + e.Key.KeyCode);\r
+ if (e.Key.KeyPressedName == "Up")\r
+ {\r
+ if (_currentTCNum == 0)\r
+ {\r
+ FocusManager.Instance.SetCurrentFocusView(_run);\r
+ }\r
+ else\r
+ {\r
+ FlexibleViewViewHolder holder = _initList?.FindViewHolderForAdapterPosition(_currentTCNum - 1);\r
+ if (holder != null && holder.ItemView != null)\r
+ {\r
+ FocusManager.Instance.SetCurrentFocusView(holder.ItemView);\r
+ _currentTCNum--;\r
+ }\r
+ }\r
+ }\r
+ else if (e.Key.KeyPressedName == "Down")\r
+ {\r
+ if (_currentTCNum == _initList.ChildCount - 1)\r
+ {\r
+ _currentTCNum = 0;\r
+ }\r
+ else\r
+ {\r
+ _currentTCNum++;\r
+ }\r
+ FlexibleViewViewHolder holder = _initList?.FindViewHolderForAdapterPosition(_currentTCNum);\r
+ if (holder != null && holder.ItemView != null)\r
+ {\r
+ FocusManager.Instance.SetCurrentFocusView(holder.ItemView);\r
+ }\r
+ }\r
+ else if (e.Key.KeyPressedName == "Return")\r
+ {\r
+ _initView.Hide();\r
+ UpdateDetailPage();\r
+ _caseView.Hide();\r
+ _detailView.Show();\r
+ FocusManager.Instance.SetCurrentFocusView(_runButton);\r
+ }\r
+ }\r
+ return true;\r
+ };\r
+\r
+ _firstPageContainer = new TableView(1, 2);\r
+ _firstPageContainer.PivotPoint = Position.PivotPointTopLeft;\r
+ _firstPageContainer.ParentOrigin = Position.ParentOriginTopLeft;\r
+ _firstPageContainer.Size = new Size(Window.Instance.Size.Width, Window.Instance.Size.Height * 0.1f);\r
+ _firstPageContainer.Focusable = true;\r
+ _firstPageContainer.SetCellAlignment(new TableView.CellPosition(0, 0), HorizontalAlignmentType.Right, VerticalAlignmentType.Center);\r
+ _firstPageContainer.SetCellAlignment(new TableView.CellPosition(0, 1), HorizontalAlignmentType.Center, VerticalAlignmentType.Center);\r
+ _firstPageContainer.AddChild(_doneButton, new TableView.CellPosition(0, 0));\r
+ _firstPageContainer.AddChild(_run, new TableView.CellPosition(0, 1));\r
+ _run.DownFocusableView = _initList;\r
+ _doneButton.DownFocusableView = _initList;\r
+\r
+ _initView.Add(_firstPageContainer);\r
+ _initView.Add(_initList);\r
+ Tizen.Log.Fatal("NUI", "TCT : InitializeFirstPage:");\r
+ FocusManager.Instance.SetCurrentFocusView(_run);\r
+ }\r
+\r
+ //Update the Test Page before you want to show it(Click Run/Pre/nect Button, or Click on item in the List).\r
+ void UpdateDetailPage()\r
+ {\r
+ UpdateCurrentTCInfo();\r
+ Tizen.Log.Fatal("NUI", "UpdateDetailPage:");\r
+ CreateTestCase();\r
+ }\r
+\r
+ void InitializeDetailPage()\r
+ {\r
+ _detailList = new TableView(23, 1);\r
+ _detailList.Focusable = true;\r
+ _detailList.Size = new Size(Window.Instance.Size.Width * 0.9739f, Window.Instance.Size.Height * 0.4629f);\r
+ _detailList.ParentOrigin = Position.ParentOriginTopLeft;\r
+ _detailList.PivotPoint = PivotPoint.TopLeft;\r
+ _detailList.Position = new Position(0.0f, 0.0f, 0.0f);\r
+ CreateDetailList();\r
+ _detailView.Add(_detailList);\r
+\r
+ //To Place the function button, such as PASS, FAIL.....\r
+ _buttonContainer = new View();\r
+ _buttonContainer.PivotPoint = PivotPoint.TopLeft;\r
+ _buttonContainer.ParentOrigin = Position.ParentOriginTopLeft;\r
+ _buttonContainer.Position = new Position(0, Window.Instance.Size.Height * 0.68f, 0);\r
+ _buttonContainer.Size = new Size(Window.Instance.Size.Width * 0.8f, Window.Instance.Size.Height * 0.1f);\r
+ _buttonContainer.Focusable = true;\r
+\r
+ _buttonContainer2 = new View();\r
+ _buttonContainer2.PivotPoint = PivotPoint.TopLeft;\r
+ _buttonContainer2.ParentOrigin = Position.ParentOriginTopLeft;\r
+ _buttonContainer2.Position = new Position(0, Window.Instance.Size.Height * 0.8f, 0);\r
+ _buttonContainer2.Size = new Size(Window.Instance.Size.Width * 0.8f, Window.Instance.Size.Height * 0.1f);\r
+ _buttonContainer2.Focusable = true;\r
+\r
+ var flexlayout = new FlexLayout();\r
+ flexlayout.Direction = FlexLayout.FlexDirection.Row;\r
+ flexlayout.Justification = FlexLayout.FlexJustification.SpaceBetween;\r
+ _buttonContainer.Layout = flexlayout;\r
+ var flexlayout2 = new FlexLayout();\r
+ flexlayout2.Direction = FlexLayout.FlexDirection.Row;\r
+ flexlayout2.Justification = FlexLayout.FlexJustification.SpaceBetween;\r
+ _buttonContainer2.Layout = flexlayout2;\r
+ CreateButtons();\r
+ _detailView.Add(_buttonContainer);\r
+ _detailView.Add(_buttonContainer2);\r
+ }\r
+\r
+ //To show the detail information of the test case\r
+ //Preconditions\r
+ //Steps\r
+ //PostConditions\r
+ void CreateTestCase()\r
+ {\r
+ if (_detailList)\r
+ {\r
+ _detailView.Remove(_detailList);\r
+ _detailList.Dispose();\r
+ }\r
+ Tizen.Log.Fatal("NUI", "Print the CurrentTCNum here::" + _currentTCNum);\r
+ _detailList = new TableView(10, 1);\r
+ _detailList.Focusable = true;\r
+ _detailList.Size = new Size(Window.Instance.Size.Width * 0.9739f, Window.Instance.Size.Height * 0.3703f);\r
+ _detailList.ParentOrigin = Position.ParentOriginTopLeft;\r
+ _detailList.PivotPoint = PivotPoint.TopLeft;\r
+ _detailList.Position = new Position(0.0f, 0.0f, 0.0f);\r
+ CreateDetailList();\r
+ _detailView.Add(_detailList);\r
+ if (_notRun)\r
+ {\r
+ _notRun.Text = _listItem[_currentTCNum].Result;\r
+ }\r
+ }\r
+\r
+ public void ScreenChangedToHome()\r
+ {\r
+ Clear();\r
+ if (!ManualTest.IsConfirmed())\r
+ {\r
+ _tsettings.TCResult = StrResult.NOTRUN;\r
+ ManualTest.Confirm();\r
+ }\r
+ else\r
+ {\r
+ _detailView.Hide();\r
+ _initView.Show();\r
+ FocusManager.Instance.SetCurrentFocusView(_run);\r
+ }\r
+ }\r
+\r
+ //Create all the function buttons here, such as PASS, FAIL.....\r
+ void CreateButtons()\r
+ {\r
+ _notRun = new TextLabel();\r
+ _notRun.HorizontalAlignment = HorizontalAlignment.Center;\r
+ _notRun.VerticalAlignment = VerticalAlignment.Center;\r
+ _notRun.PointSize = _pointSize;\r
+ _notRun.Text = "Not Run";\r
+ float buttonWidth = ManualTest.IsMobile() ? Window.Instance.Size.Width * 0.18f : Window.Instance.Size.Width * 0.06f;\r
+ _notRun.Size = new Size(buttonWidth, Window.Instance.Size.Height * 0.046f);\r
+\r
+ _passButton = new Button();\r
+ SetCommonButtonStyle(_passButton, "Pass");\r
+ _passButton.Clicked += (obj, ee) =>\r
+ {\r
+ Clear();\r
+ if (!ManualTest.IsConfirmed())\r
+ {\r
+ _tsettings.TCResult = StrResult.PASS;\r
+ ManualTest.Confirm();\r
+ }\r
+ Tizen.Log.Fatal("TBT", "Pass Button clicked!");\r
+ };\r
+\r
+ _failButton = new Button();\r
+ SetCommonButtonStyle(_failButton, "Fail");\r
+ _failButton.Clicked += (obj, ee) =>\r
+ {\r
+ Clear();\r
+ if (!ManualTest.IsConfirmed())\r
+ {\r
+ _tsettings.TCResult = StrResult.FAIL;\r
+ ManualTest.Confirm();\r
+ }\r
+ Tizen.Log.Fatal("TBT", "Fail Button clicked!");\r
+ };\r
+\r
+ _blockButton = new Button();\r
+ SetCommonButtonStyle(_blockButton, "Block");\r
+ _blockButton.Clicked += (obj, ee) =>\r
+ {\r
+ Clear();\r
+ if (!ManualTest.IsConfirmed())\r
+ {\r
+ _tsettings.TCResult = StrResult.BLOCK;\r
+ ManualTest.Confirm();\r
+ }\r
+ };\r
+\r
+ _runButton = new Button();\r
+ SetCommonButtonStyle(_runButton, "Run");\r
+ _runButton.Clicked += (obj, ee) =>\r
+ {\r
+ Clear();\r
+ //should update the _caseView by the test case\r
+ _tsettings.Testcase_ID = _tcIDList[_currentTCNum];\r
+ _tsettings.TCResult = "";\r
+ _tRunner.Execute();\r
+ };\r
+\r
+ _homeButton = new Button();\r
+ SetCommonButtonStyle(_homeButton, "Home");\r
+ _homeButton.Clicked += (obj, ee) =>\r
+ {\r
+ ScreenChangedToHome();\r
+ };\r
+\r
+ _preButton = new Button();\r
+ SetCommonButtonStyle(_preButton, "<<");\r
+ _preButton.Clicked += (obj, ee) =>\r
+ {\r
+ Clear();\r
+ if (!ManualTest.IsConfirmed())\r
+ {\r
+ _tsettings.TCResult = StrResult.NOTRUN;\r
+ ManualTest.Confirm();\r
+ }\r
+ else\r
+ {\r
+ if (_currentTCNum != 0)\r
+ {\r
+ _currentTCNum--;\r
+ _notRun.Text = _listItem[_currentTCNum].Result;\r
+ ManualTest.Confirm();\r
+ UpdateDetailPage();\r
+ }\r
+ else if (_currentTCNum == 0)\r
+ {\r
+ _toastMessage.Message = "This is first testcase";\r
+ _toastMessage.Post();\r
+ }\r
+ }\r
+ };\r
+\r
+ _nextButton = new Button();\r
+ SetCommonButtonStyle(_nextButton, ">>");\r
+ _nextButton.Clicked += (obj, ee) =>\r
+ {\r
+ Clear();\r
+ if (!ManualTest.IsConfirmed())\r
+ {\r
+ _tsettings.TCResult = StrResult.NOTRUN;\r
+ ManualTest.Confirm();\r
+ }\r
+ if (_currentTCNum + 1 != ResultNumber.Total)\r
+ {\r
+ Tizen.Log.Fatal("NUI", "Print the [not run] CurrentTCNum::" + _currentTCNum);\r
+ _currentTCNum++;\r
+ _notRun.Text = _listItem[_currentTCNum].Result;\r
+ UpdateDetailPage();\r
+ }\r
+ else if (_currentTCNum + 1 == ResultNumber.Total)\r
+ {\r
+ _toastMessage.Message = "This is last testcase";\r
+ _toastMessage.Post();\r
+ }\r
+ };\r
+\r
+ _passButton.RightFocusableView = _failButton;\r
+ _passButton.DownFocusableView = _homeButton;\r
+ _failButton.LeftFocusableView = _passButton;\r
+ _failButton.RightFocusableView = _blockButton;\r
+ _blockButton.LeftFocusableView = _failButton;\r
+ _blockButton.RightFocusableView = _runButton;\r
+ _blockButton.DownFocusableView = _preButton;\r
+ _runButton.LeftFocusableView = _blockButton;\r
+ _runButton.DownFocusableView = _nextButton;\r
+ _homeButton.UpFocusableView = _passButton;\r
+ _homeButton.RightFocusableView = _preButton;\r
+ _preButton.UpFocusableView = _blockButton;\r
+ _preButton.LeftFocusableView = _homeButton;\r
+ _preButton.RightFocusableView = _nextButton;\r
+ _nextButton.UpFocusableView = _runButton;\r
+ _nextButton.LeftFocusableView = _preButton;\r
+\r
+ _buttonContainer.Add(_passButton);\r
+ _buttonContainer.Add(_failButton);\r
+ _buttonContainer.Add(_blockButton);\r
+ _buttonContainer.Add(_runButton);\r
+ _buttonContainer2.Add(_homeButton);\r
+ _buttonContainer2.Add(_notRun);\r
+ _buttonContainer2.Add(_preButton);\r
+ _buttonContainer2.Add(_nextButton);\r
+ }\r
+\r
+ public void ExecuteTC(View view)\r
+ {\r
+ Tizen.Log.Fatal("NUI", "Execute the manual test case!");\r
+\r
+ _caseView = view;\r
+ _caseView.ParentOrigin = Position.ParentOriginTopLeft;\r
+ _caseView.PivotPoint = PivotPoint.TopLeft;\r
+ _caseView.Position = new Position(Window.Instance.Size.Width * 0.01f, Window.Instance.Size.Height * 0.74f, 0.0f);\r
+ _detailView.Add(_caseView);\r
+ _caseView.KeyEvent += OnKeyPressed;\r
+ _caseView.Show();\r
+ FocusManager.Instance.SetCurrentFocusView(_caseView);\r
+ }\r
+\r
+ private bool OnKeyPressed(object source, View.KeyEventArgs e)\r
+ {\r
+ Tizen.Log.Fatal("NUI", "CaseView OnKeyPressed 1 Down..." + e.Key.KeyPressedName);\r
+\r
+ if (e.Key.State == Key.StateType.Down)\r
+ {\r
+ if (e.Key.KeyPressedName == "Down")\r
+ {\r
+ FocusManager.Instance.SetCurrentFocusView(_passButton);\r
+\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+ private bool OnRunnerKeyPressed(object source, View.KeyEventArgs e)\r
+ {\r
+ Tizen.Log.Fatal("NUI", "Runner OnKeyPressed Down..." + e.Key.KeyPressedName);\r
+\r
+ if (e.Key.State == Key.StateType.Down)\r
+ {\r
+ if (e.Key.KeyPressedName == "Up")\r
+ {\r
+ Tizen.Log.Fatal("NUI", "Set current focus view :: doneButton");\r
+ FocusManager.Instance.SetCurrentFocusView(_doneButton);\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+ private bool OnDownButtonKeyPressed(object source, View.KeyEventArgs e)\r
+ {\r
+ Tizen.Log.Fatal("NUI", "DownButton OnKeyPressed Down..." + e.Key.KeyPressedName);\r
+\r
+ if (e.Key.State == Key.StateType.Down)\r
+ {\r
+ if (e.Key.KeyPressedName == "Down")\r
+ {\r
+ Tizen.Log.Fatal("NUI", "Set current focus view :: run");\r
+ FocusManager.Instance.SetCurrentFocusView(_run);\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+ private void Clear()\r
+ {\r
+ if (_caseView.IsOnWindow == true)\r
+ {\r
+ _detailView.Remove(_caseView);\r
+ }\r
+ }\r
+\r
+ public void ClearTestCase(View view)\r
+ {\r
+ FocusManager.Instance.SetCurrentFocusView(_runButton);\r
+ Tizen.Log.Fatal("NUI", "Clear test case!");\r
+ _detailView.Remove(view);\r
+ }\r
+\r
+ //Use to update the _summaryLabel.\r
+ private void SetSummaryResult()\r
+ {\r
+ ResultNumber.NotRun = ResultNumber.Total - ResultNumber.Pass - ResultNumber.Fail - ResultNumber.Block;\r
+ _summaryLabel.Text = "Total : " + ResultNumber.Total + ", Pass : " + ResultNumber.Pass + ", Fail : " + ResultNumber.Fail + ", Block : " + ResultNumber.Block + ", Not Run : " + ResultNumber.NotRun;\r
+ }\r
+\r
+ private void CreateDetailList()\r
+ {\r
+ Tizen.Log.Fatal("NUI", "Print the CreateDetailList::");\r
+ int senNum = _currentTCInfo.Count;\r
+ for (int index = 0; index < senNum; index++)\r
+ {\r
+ TextLabel description = new TextLabel();\r
+ description.ParentOrigin = Position.ParentOriginTopLeft;\r
+ description.PivotPoint = PivotPoint.TopLeft;\r
+ description.Position = new Position(0.0f, 0.0f, 0.0f);\r
+ description.Size2D = new Size2D((int)(Window.Instance.Size.Width * 0.9895), (int)(Window.Instance.Size.Height * 0.0462));\r
+ description.HorizontalAlignment = HorizontalAlignment.Begin;\r
+ description.PointSize = _pointSize;\r
+ description.Text = _currentTCInfo[(int)index];\r
+ _detailList.AddChild(description, new TableView.CellPosition((uint)index, 0));\r
+ }\r
+ }\r
+\r
+ //Init all the data, should be offered by Test Framework\r
+ void InitData()\r
+ {\r
+ ResultNumber.Total = _tcIDList.Count;\r
+ ResultNumber.Pass = 0;\r
+ ResultNumber.Fail = 0;\r
+ ResultNumber.Block = 0;\r
+ _tcInfoList = new List<TestcaseInfo>();\r
+ foreach (var testcaseItem in _listItem)\r
+ {\r
+ foreach (KeyValuePair<string, ITest> pair in _tRunner.GetTestList())\r
+ {\r
+ if (testcaseItem.TCName.Equals(pair.Key))\r
+ {\r
+ IEnumerator<CustomAttributeData> customAttributes = pair.Value.Method.MethodInfo.CustomAttributes.GetEnumerator();\r
+ List<string> preconditions = new List<string>();\r
+ preconditions.Add("Preconditions:");\r
+ List<string> steps = new List<string>();\r
+ steps.Add("Steps:");\r
+ List<string> postconditions = new List<string>();\r
+ postconditions.Add("Postconditions:\n");\r
+\r
+ while (customAttributes.MoveNext())\r
+ {\r
+ if (customAttributes.Current.AttributeType.FullName.Equals(STEP_ATTRIBUTE_NAME))\r
+ {\r
+ steps.Add(customAttributes.Current.ConstructorArguments[0].Value + "." + customAttributes.Current.ConstructorArguments[1].Value);\r
+ }\r
+ else if (customAttributes.Current.AttributeType.FullName.Equals(PRECONDITION_ATTRIBUTE_NAME))\r
+ {\r
+ preconditions.Add(customAttributes.Current.ConstructorArguments[0].Value + "." + customAttributes.Current.ConstructorArguments[1].Value);\r
+ }\r
+ else if (customAttributes.Current.AttributeType.FullName.Equals(POSTCONDITION_ATTRIBUTE_NAME))\r
+ {\r
+ postconditions.Add(customAttributes.Current.ConstructorArguments[0].Value + "." + customAttributes.Current.ConstructorArguments[1].Value);\r
+ }\r
+ }\r
+\r
+ _tcInfoList.Add(new TestcaseInfo\r
+ {\r
+ TestcaseName = pair.Key,\r
+ Preconditions = preconditions,\r
+ Steps = steps,\r
+ Postconditions = postconditions,\r
+ });\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ UpdateCurrentTCInfo();\r
+ }\r
+\r
+ //The data in CurrentTCInfo list will be show in _detailList.\r
+ void UpdateCurrentTCInfo()\r
+ {\r
+ _currentTCInfo = new List<string>();\r
+ Tizen.Log.Fatal("NUI.Components", "Print the CurrentTCNum::" + _currentTCNum);\r
+ _currentTCInfo.Add("DESCRIPTION:#" + (_currentTCNum + 1));\r
+ string[] str = _tcInfoList[_currentTCNum].TestcaseName.Split('.');\r
+ _currentTCInfo.Add("CLASS:" + str[str.Length - 2]);\r
+ _currentTCInfo.Add("METHOD:" + str[str.Length - 1]);\r
+ for (int index = 0; index < _tcInfoList[_currentTCNum].Preconditions.Count; index++)\r
+ {\r
+ _currentTCInfo.Add(_tcInfoList[_currentTCNum].Preconditions[index]);\r
+ }\r
+ for (int index = 0; index < _tcInfoList[_currentTCNum].Steps.Count; index++)\r
+ {\r
+ _currentTCInfo.Add(_tcInfoList[_currentTCNum].Steps[index]);\r
+ }\r
+ for (int index = 0; index < _tcInfoList[_currentTCNum].Postconditions.Count; index++)\r
+ {\r
+ _currentTCInfo.Add(_tcInfoList[_currentTCNum].Postconditions[index]);\r
+ }\r
+ Tizen.Log.Fatal("NUI", "The CurrentTCNum::" + _currentTCNum);\r
+ }\r
+\r
+ private void OnSingleTestDone(object sender, SingleTestDoneEventArgs e)\r
+ {\r
+ //Test when will this event will be triggered\r
+ Tizen.Log.Fatal("NUI", "OnSingleTestDone has been triggered!");\r
+ // check old result\r
+ if (_listItem[_currentTCNum].Result.Contains(StrResult.FAIL))\r
+ {\r
+ ResultNumber.Fail = ResultNumber.Fail - 1;\r
+ }\r
+ else if (_listItem[_currentTCNum].Result.Contains(StrResult.PASS))\r
+ {\r
+ ResultNumber.Pass = ResultNumber.Pass - 1;\r
+ }\r
+ else if (_listItem[_currentTCNum].Result.Contains(StrResult.BLOCK))\r
+ ResultNumber.Block = ResultNumber.Block - 1;\r
+\r
+ // Update new result\r
+ _listItem[_currentTCNum].Result = e.Result;\r
+ if (e.Result.Contains(StrResult.PASS))\r
+ {\r
+ ResultNumber.Pass += 1;\r
+ }\r
+ else if (e.Result.Contains(StrResult.FAIL))\r
+ {\r
+ ResultNumber.Fail += 1;\r
+ }\r
+ else if (e.Result.Contains(StrResult.BLOCK))\r
+ {\r
+ ResultNumber.Block += 1;\r
+ }\r
+\r
+ FlexibleViewViewHolder holder = _initList?.FindViewHolderForAdapterPosition(_currentTCNum);\r
+ if (holder != null)\r
+ {\r
+ string testcaseName = "#." + (_currentTCNum + 1).ToString() + _tcIDList[_currentTCNum];\r
+ string resultText = "[" + _listItem[(int)_currentTCNum].Result + "]";\r
+ string text = testcaseName + resultText;\r
+ Button btn = holder.ItemView as Button;\r
+ btn.Text = text;\r
+ _adapter?.UpdateItemData(_currentTCNum, _listItem);\r
+ }\r
+\r
+ SetSummaryResult();\r
+ _notRun.Text = _listItem[_currentTCNum].Result;\r
+ }\r
+ }\r
+}\r
+\r
+\r
--- /dev/null
+/*
+ * Copyright (c) 2020 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.WindowSystem.Tests
+{
+ public class App : Tizen.NUI.NUIApplication
+ {
+ protected override void OnCreate()
+ {
+ Window window = Window.Instance;
+ window.AddAvailableOrientation(Window.WindowOrientation.Landscape);
+ window.AddAvailableOrientation(Window.WindowOrientation.PortraitInverse);
+ window.AddAvailableOrientation(Window.WindowOrientation.LandscapeInverse);
+ window.AddAvailableOrientation(Window.WindowOrientation.Portrait);
+ if (ManualTest.IsWearable())\r
+ WearableManualTestNUI.GetInstance();
+ else\r
+ ManualTestNUI.GetInstance();
+ }
+
+ static void Main(string[] args)
+ {
+ Tizen.Log.Fatal("NUI", "Manual TCT for NUI.WindowSystem 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>tizen80</TargetFramework>
+ <TargetFrameworkIdentifier>Tizen</TargetFrameworkIdentifier>
+ </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="..\Template\ManualTemplate\ManualTemplate.csproj" />
+ </ItemGroup>
+
+</Project>
--- /dev/null
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio Version 16\r
+VisualStudioVersion = 16.0.29920.165\r
+MinimumVisualStudioVersion = 15.0.26124.0\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.WindowSystem.Manual.Tests", "Tizen.NUI.WindowSystem.Manual.Tests.csproj", "{D92BEEAC-3B2A-45F8-8C53-53B92550404A}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunit.framework", "..\nunit.framework\nunit.framework.csproj", "{B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunitlite", "..\nunitlite\nunitlite.csproj", "{FDB8025A-C029-461F-895E-287B4C65939B}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ManualTemplate", "..\Template\ManualTemplate\ManualTemplate.csproj", "{269F89A7-E648-4811-8421-844E00ACF5F0}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ManualTemplateForWearable", "..\Template\ManualTemplateForWearable\ManualTemplateForWearable.csproj", "{D36CED01-29BD-4EB3-8903-62E0BF2A822D}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.Wearable.Manual.Tests", "..\Tizen.NUI.Wearable.Manual.Tests\Tizen.NUI.Wearable.Manual.Tests.csproj", "{25619FDE-C80D-4A16-8D42-CCB06155E31D}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.Manual.Tests", "..\Tizen.NUI.Manual.Tests\Tizen.NUI.Manual.Tests.csproj", "{951B597E-74C3-4698-8333-2A7CD59E4BB2}"\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Any CPU = Debug|Any CPU\r
+ Debug|x64 = Debug|x64\r
+ Debug|x86 = Debug|x86\r
+ Release|Any CPU = Release|Any CPU\r
+ Release|x64 = Release|x64\r
+ Release|x86 = Release|x86\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x64.Build.0 = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x86.Build.0 = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x64.Build.0 = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x86.Build.0 = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x64.Build.0 = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x86.Build.0 = Release|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Release|x64.Build.0 = Release|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {269F89A7-E648-4811-8421-844E00ACF5F0}.Release|x86.Build.0 = Release|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Release|x64.Build.0 = Release|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {D36CED01-29BD-4EB3-8903-62E0BF2A822D}.Release|x86.Build.0 = Release|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Release|x64.Build.0 = Release|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {25619FDE-C80D-4A16-8D42-CCB06155E31D}.Release|x86.Build.0 = Release|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Release|x64.Build.0 = Release|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {951B597E-74C3-4698-8333-2A7CD59E4BB2}.Release|x86.Build.0 = Release|Any CPU\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+ GlobalSection(ExtensibilityGlobals) = postSolution\r
+ SolutionGuid = {ED382B91-9930-40B6-B3D7-362304C78680}\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+/*
+ * Copyright (c) 2020 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.WindowSystem.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 float GetPointSize()
+ {
+ float retValue = 10.0f; //default
+ string value;
+ Tizen.System.Information.TryGetValue("tizen.org/feature/profile", out value);
+ switch (value)
+ {
+ case "wearable":
+ retValue = 4.0f;
+ break;
+ case "mobile":
+ retValue = 5.0f;
+ break;
+ case "tv":
+ retValue = 20.0f;
+ break;
+ }
+ return retValue;
+ }
+
+ 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) 2020 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.Components;\r
+\r
+namespace Tizen.NUI.WindowSystem.Tests
+{
+ class WearableManualTestNUI
+ {
+ class ListBridge : FlexibleViewAdapter
+ {
+ private List<string> _mDatas;
+ private List<ItemData> _mlistItem;
+
+ public ListBridge(List<string> datas, List<ItemData> item)
+ {
+ _mDatas = datas;
+ _mlistItem = item;
+ }
+
+ public void UpdateItemData(int position, List<ItemData> item)
+ {
+ _mlistItem = item;
+ }
+
+ public override FlexibleViewViewHolder OnCreateViewHolder(int viewType)
+ {
+ FlexibleViewViewHolder viewHolder = new FlexibleViewViewHolder(new Button(new ButtonStyle()));
+ return viewHolder;
+ }
+
+ public override void OnBindViewHolder(FlexibleViewViewHolder holder, int position)
+ {
+ string testcaseName = "#." + (position + 1).ToString() + _mDatas[position];
+ string resultText = "[" + _mlistItem[(int)position].Result + "]";
+ string text = testcaseName + resultText;
+
+ Button btn = holder.ItemView as Button;
+ if (btn)\r
+ {\r
+ btn.Size = new Size(Window.Instance.Size.Width, 120);\r
+ btn.Name = position.ToString();\r
+ btn.Text = text;\r
+ btn.PointSize = 4.0f;\r
+ btn.TextAlignment = HorizontalAlignment.Begin;\r
+ btn.TextColor = Color.White;\r
+ btn.BackgroundImage = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/controller_btn_check_on.png";\r
+ btn.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);\r
+ }
+ }
+
+ public override void OnDestroyViewHolder(FlexibleViewViewHolder holder)
+ {
+ if (holder.ItemView != null)
+ {
+ holder.ItemView.Dispose();
+ }
+ }
+
+ public override int GetItemCount()
+ {
+ return _mDatas.Count;
+ }
+ }\r
+\r
+ class DetailListBridge : FlexibleViewAdapter
+ {
+ private List<string> _mDatas;
+
+ public DetailListBridge(List<string> datas)
+ {
+ _mDatas = datas;
+ }
+
+ public override FlexibleViewViewHolder OnCreateViewHolder(int viewType)
+ {
+ FlexibleViewViewHolder viewHolder = new FlexibleViewViewHolder(new TextLabel());
+ return viewHolder;
+ }
+
+ public override void OnBindViewHolder(FlexibleViewViewHolder holder, int position)
+ {
+ TextLabel label = holder.ItemView as TextLabel;
+ if (label)\r
+ {\r
+ label.TextColor = Color.White;\r
+ label.ParentOrigin = ParentOrigin.TopLeft;\r
+ label.PivotPoint = PivotPoint.TopLeft;\r
+ label.Position = new Position(0.0f, 0.0f, 0.0f);
+ label.Size = new Size(Window.Instance.Size.Width - 100, _detailScrollHeight);\r
+ label.HorizontalAlignment = HorizontalAlignment.Begin;\r
+ label.VerticalAlignment = VerticalAlignment.Center;
+ label.PointSize = 3.0f;
+ label.MultiLine = true;
+ label.Text = _mDatas[position];
+ }\r
+ }
+
+ public override void OnDestroyViewHolder(FlexibleViewViewHolder holder)
+ {
+ if (holder.ItemView != null)
+ {
+ holder.ItemView.Dispose();
+ }
+ }
+
+ public override int GetItemCount()
+ {
+ return _mDatas.Count;
+ }
+ }
+
+ private List<string> _tcIDList;
+ private List<ItemData> _listItem;
+ private TSettings _tsettings;
+ private TRunner _tRunner;
+ private Button _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 List<string> _listNotPass;
+
+ //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;\r
+ private FlexibleView _initList;
+ private ListBridge _adapter;
+ private FlexibleView _detailList;
+ private DetailListBridge _adapter_detail;
+ private View _caseView;
+ private Button _run;
+ private Button _runButton;
+
+ //Always save the current TC number;
+ private int _currentTCNum = 0;
+ 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=========================================");
+ RunType.Value = RunType.MANUAL;
+ _tRunner = new TRunner();
+ _tRunner.LoadTestsuite();
+ _tRunner.SingleTestDone += OnSingleTestDone;
+ _listNotPass = new List<string>();
+ _tcIDList = new List<string>();
+ _listItem = new List<ItemData>();
+ _listNotPass = TSettings.GetInstance().GetNotPassListManual();
+ int count = 0;
+ foreach (var tc in _listNotPass)
+ {
+ _listItem.Add(new ItemData { No = count, TCName = tc, Result = StrResult.NOTRUN });
+ _tcIDList.Add(tc);
+ 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);
+ }\r
+\r
+ void SetCommonButtonStyle(Button btn, string text)
+ {
+ if (!btn) return;
+ btn.Text = text;
+ btn.PointSize = 4.0f;
+ btn.TextColor = new Color(0, 0, 0, 1);
+ btn.BackgroundImage = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/controller_btn_check_on.png";
+ btn.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);
+ btn.TextColor = Color.White;
+ }
+
+ void InitializeFirstPage()
+ {
+ //Create Run Button, when you Click it, then the first test case will be executed.
+ _doneButton = new Button(new ButtonStyle());
+ _doneButton.Position = new Position(0, 0);\r
+ _doneButton.Size = new Size(120, 60);
+ SetCommonButtonStyle(_doneButton, "Done");\r
+ _doneButton.ClickEvent += (obj, ee) =>
+ {
+ TSettings.GetInstance().SubmitManualResult();
+ };
+
+ _run = new Button(new ButtonStyle());
+ _run.Position2D = new Position2D(150, 0);\r
+ _run.Size = new Size(120, 60);\r
+ SetCommonButtonStyle(_run, "Runner");
+ _run.ClickEvent += (obj, ee) =>
+ {
+ Tizen.Log.Fatal("NUI", "Check all the test case from the first one.");
+ _currentTCNum = 0;
+ _initView.Hide();
+ _caseView.Hide();
+ UpdateDetailPage();
+ _detailView.Show();
+ };
+
+ 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()
+ {
+ _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();
+ //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);
+ CreateDetailList();
+ 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.Size = new Size(40, 30);
+ _notRun.PointSize = 2.5f;
+ _notRun.Position = new Position(100, 32);
+ _notRun.HorizontalAlignment = HorizontalAlignment.Center;
+ _notRun.VerticalAlignment = VerticalAlignment.Center;
+ _notRun.MultiLine = true;
+ _notRun.Text = "Not Run";
+ _passButton = new Button(new ButtonStyle());
+ SetCommonButtonStyle(_passButton, "P");
+ _passButton.Size = new Size(70, 30);
+ _passButton.Position = new Position(0, 0);\r
+ _passButton.ClickEvent += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.PASS;
+ ManualTest.Confirm();
+ }
+ Tizen.Log.Fatal("TBT", "Pass Button clicked!");
+ };
+
+ _failButton = new Button(new ButtonStyle());
+ SetCommonButtonStyle(_failButton, "F");
+ _failButton.Size = new Size(70, 30);
+ _failButton.Position = new Position(72, 0);
+ _failButton.ClickEvent += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.FAIL;
+ ManualTest.Confirm();
+ }
+ Tizen.Log.Fatal("TBT", "Fail Button clicked!");
+ };
+
+ _blockButton = new Button(new ButtonStyle());
+ SetCommonButtonStyle(_blockButton, "B");
+ _blockButton.Size = new Size(70, 30);
+ _blockButton.Position = new Position(144, 0);
+ _blockButton.ClickEvent += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.BLOCK;
+ ManualTest.Confirm();
+ }
+ };
+
+ _runButton = new Button(new ButtonStyle());
+ SetCommonButtonStyle(_runButton, "R");
+ _runButton.Size = new Size(70, 30);
+ _runButton.Position = new Position(216, 0);
+ _runButton.ClickEvent += (obj, ee) =>
+ {
+ Clear();
+ _tsettings.Testcase_ID = _tcIDList[_currentTCNum];
+ _tsettings.TCResult = "";
+ _tRunner.Execute();
+ };
+
+ _homeButton = new Button(new ButtonStyle());
+ SetCommonButtonStyle(_homeButton, "H");
+ _homeButton.Size = new Size(70, 30);
+ _homeButton.Position = new Position(0, 32);
+ _homeButton.ClickEvent += (obj, ee) =>
+ {
+ Clear();
+ if (!ManualTest.IsConfirmed())
+ {
+ _tsettings.TCResult = StrResult.NOTRUN;
+ ManualTest.Confirm();
+ }
+ else
+ {
+ _detailView.Hide();
+ _initView.Show();
+ }
+ };
+
+ _preButton = new Button(new ButtonStyle());\r
+ SetCommonButtonStyle(_preButton, "<<");
+ _preButton.Size = new Size(60, 30);
+ _preButton.Position = new Position(160, 32);
+ _preButton.ClickEvent += (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();
+ }
+ }
+ };
+
+ _nextButton = new Button(new ButtonStyle());
+ SetCommonButtonStyle(_nextButton, ">>");
+ _nextButton.Size = new Size(60, 30);
+ _nextButton.Position = new Position(222, 32);
+ _nextButton.ClickEvent += (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();
+ }
+ };
+
+ 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(30, 170);
+
+ 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 void CreateInitList()
+ {
+ Tizen.Log.Fatal("ManualTCT", "CreateInitList");\r
+ _initList = new FlexibleView();\r
+ _initList.ParentOrigin = ParentOrigin.TopLeft;
+ _initList.PivotPoint = PivotPoint.TopLeft;\r
+ _initList.Size = new Size(Window.Instance.Size.Width, 400);\r
+ _initList.Position = new Position(0, 80);\r
+ _initList.ClippingMode = ClippingModeType.ClipChildren;\r
+ _adapter = new ListBridge(_tcIDList, _listItem);\r
+ _initList.SetAdapter(_adapter);\r
+ LinearLayoutManager layoutManager = new LinearLayoutManager(LinearLayoutManager.VERTICAL);\r
+ _initList.SetLayoutManager(layoutManager);\r
+ _initList.FocusedItemIndex = 0;
+ _initList.ItemClicked += (obj, e) =>\r
+ {\r
+ Button button = e.ClickedView.ItemView as Button;\r
+ if (button)\r
+ {\r
+ Tizen.Log.Fatal("TBT", "Item clicked!!::" + button.Name);\r
+ _currentTCNum = int.Parse(button.Name);\r
+ _initView.Hide();\r
+ UpdateDetailPage();\r
+ _caseView.Hide();\r
+ _detailView.Show();\r
+ }\r
+ };
+ }
+
+ private void CreateDetailList()
+ {
+ Tizen.Log.Fatal("NUI", "Print the CreateDetailList::count: " + _currentTCInfo.Count);\r
+ _description.Text = _currentTCInfo[0];\r
+\r
+ _detailList = new FlexibleView();\r
+ _detailList.ParentOrigin = ParentOrigin.TopLeft;
+ _detailList.PivotPoint = PivotPoint.TopLeft;\r
+ _detailList.Size = new Size(Window.Instance.Size.Width - 100, _detailScrollHeight);\r
+ _detailList.Position = new Position(30, 20);\r
+ _detailList.BackgroundColor = Color.Black;\r
+ _detailList.ClippingMode = ClippingModeType.ClipChildren;\r
+ _adapter_detail = new DetailListBridge(_currentTCInfo);\r
+ _detailList.SetAdapter(_adapter_detail);\r
+ LinearLayoutManager layoutManager = new LinearLayoutManager(LinearLayoutManager.VERTICAL);\r
+ _detailList.SetLayoutManager(layoutManager);
+ _detailView.Add(_detailList);
+ }
+
+ //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 (var testcaseItem in _listItem)
+ {
+ foreach (KeyValuePair<string, ITest> pair in _tRunner.GetTestList())
+ {
+ if (testcaseItem.TCName.Equals(pair.Key))
+ {
+ 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,
+ });
+ break;
+ }
+ }
+ 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;
+ }\r
+\r
+ FlexibleViewViewHolder holder = _initList?.FindViewHolderForAdapterPosition(_currentTCNum);\r
+ if (holder != null)\r
+ {\r
+ string testcaseName = "#." + (_currentTCNum + 1).ToString() + _tcIDList[_currentTCNum];\r
+ string resultText = "[" + _listItem[(int)_currentTCNum].Result + "]";\r
+ string text = testcaseName + resultText;\r
+ Button btn = holder.ItemView as Button;\r
+ btn.Text = text;\r
+ _adapter?.UpdateItemData(_currentTCNum, _listItem);\r
+ }
+ SetSummaryResult();
+ _notRun.Text = _listItem[_currentTCNum].Result;
+ }
+ }
+}
--- /dev/null
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using System;
+using Tizen.NUI;
+using Tizen.NUI.UIComponents;
+using Tizen.NUI.BaseComponents;
+using System.Threading.Tasks;
+using Tizen.NUI.WindowSystem;
+using ElmSharp;\r
+using Microsoft.VisualBasic.FileIO;\r
+\r
+namespace Tizen.NUI.WindowSystem.Tests
+{
+ [TestFixture]
+ [Description("Tizen.NUI.WindowSystem.Shell.QuickPanelClient Tests")]
+ public class QuickPanelClientTests
+ {
+ private string TAG = "NUI";
+
+ [SetUp]
+ public void Init()
+ {
+ Tizen.Log.Info(TAG, "Init() is called!");
+ }
+
+ [TearDown]
+ public void Destroy()
+ {
+ Tizen.Log.Info(TAG, "Destroy() is called!");
+ }
+
+ public void OnOrientationEvent(object sender, Window.WindowOrientation state)
+ {
+ ManualTest.Confirm();
+ }
+
+ [Test]
+ [Category("P1")]
+ [Description("Check whether Orientation event handler add/remove successfully or not.")]
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.OrientationChanged E")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "EVL")]
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]
+ [Precondition(1, "Turn on the Auto Rotation option")]
+ [Precondition(2, "Currently this TC is only run in mobile profile. If not, this TC will be PASS.")]
+ [Step(1, "Click run TC")]
+ [Step(2, "Rotate Device")]
+ [Step(3, "Check the label on the right of the home button is changed to \"Pass\"")]
+ [Postcondition(1, "N/A")]
+ public async Task OrientationChanged_EVENT()
+ {
+ /* TEST CODE */
+ Shell.TizenShell tzsh = new Shell.TizenShell();
+ Window win = NUIApplication.GetDefaultWindow();
+ var qpClient = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.SystemDefault);
+
+ if (!ManualTest.IsMobile())\r
+ {\r
+ ManualTest.Confirm();\r
+ }
+ else\r
+ {\r
+ qpClient.OrientationChanged += OnOrientationEvent;\r
+ await ManualTest.WaitForConfirm();\r
+ qpClient.OrientationChanged -= OnOrientationEvent;\r
+ }
+ }
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="8" package="Tizen.NUI.WindowSystem.Manual.Tests" version="1.0.0">
+ <profile name="common" />
+ <ui-application appid="Tizen.NUI.WindowSystem.Manual.Tests"
+ exec="Tizen.NUI.WindowSystem.Manual.Tests.dll"
+ type="dotnet"
+ multiple="false"
+ taskmanage="true"
+ launch_mode="single">
+ <icon>Tizen.NUI.WindowSystem.Manual.Tests.png</icon>
+ <label>Tizen.NUI.WindowSystem.Manual.Tests</label>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ </privileges>
+</manifest>
--- /dev/null
+/*
+ * Copyright (c) 2018 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;
+
+namespace Tizen.NUI.Test
+{
+ class Program : Tizen.NUI.NUIApplication
+ {
+ public static Window win;
+ static TextLabel MainTitle;
+ static readonly string Title = "Tizen.NUI.WindowSystem Auto TCT \n\n";
+ static readonly float TextSize = 10.0f;
+
+ protected override void OnCreate()
+ {
+ base.OnCreate();
+ Random rand = new Random();
+
+ Console.WriteLine("TCT : OnCreate()");
+ win = this.Window;
+ win.Title = "NUIWindowSystemTest";
+ win.BackgroundColor = Color.Red;
+
+ 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(win.WindowSize.Width / 2, win.WindowSize.Height / 2);
+ MainTitle.PositionUsesPivotPoint = true;
+ MainTitle.ParentOrigin = ParentOrigin.Center;
+ MainTitle.PivotPoint = PivotPoint.Center;
+ win.Add(MainTitle);
+ }
+
+ protected override void OnResume()
+ {
+ base.OnResume();
+
+ TRunner t = new TRunner();
+ t.LoadTestsuite();
+ t.Execute();
+ }
+
+ protected override void OnTerminate()
+ {
+ base.OnTerminate();
+ Exit();
+ }
+
+ static void Main(string[] args)
+ {
+ Console.WriteLine("TCT : Main()");
+ var app = new Program();
+ app.Run(args);
+ }
+ }
+}
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <!-- Property Group for .NET Core Project -->
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>tizen80</TargetFramework>
+ <TargetFrameworkIdentifier>Tizen</TargetFrameworkIdentifier>
+ </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\r
+# Visual Studio Version 16\r
+VisualStudioVersion = 16.0.29920.165\r
+MinimumVisualStudioVersion = 15.0.26124.0\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.WindowSystem.Tests", "Tizen.NUI.WindowSystem.Tests.csproj", "{D92BEEAC-3B2A-45F8-8C53-53B92550404A}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunit.framework", "..\nunit.framework\nunit.framework.csproj", "{B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunitlite", "..\nunitlite\nunitlite.csproj", "{FDB8025A-C029-461F-895E-287B4C65939B}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoTemplate", "..\Template\AutoTemplate\AutoTemplate.csproj", "{B11ABB0C-C3C1-4B5C-8251-A15628A775F3}"\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Any CPU = Debug|Any CPU\r
+ Debug|x64 = Debug|x64\r
+ Debug|x86 = Debug|x86\r
+ Release|Any CPU = Release|Any CPU\r
+ Release|x64 = Release|x64\r
+ Release|x86 = Release|x86\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x64.Build.0 = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x86.Build.0 = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x64.Build.0 = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x86.Build.0 = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x64.Build.0 = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x86.Build.0 = Release|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|x64.Build.0 = Debug|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|x86.Build.0 = Debug|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|x64.ActiveCfg = Release|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|x64.Build.0 = Release|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|x86.ActiveCfg = Release|Any CPU\r
+ {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|x86.Build.0 = Release|Any CPU\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+ GlobalSection(ExtensibilityGlobals) = postSolution\r
+ SolutionGuid = {ED382B91-9930-40B6-B3D7-362304C78680}\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+using NUnit.Framework;\r
+using NUnit.Framework.TUnit;\r
+using System;\r
+using Tizen.NUI;\r
+using Tizen.NUI.UIComponents;\r
+using Tizen.NUI.BaseComponents;\r
+using System.Threading.Tasks;\r
+using Tizen.NUI.WindowSystem;\r
+\r
+namespace Tizen.NUI.WindowSystem.Tests\r
+{\r
+ [TestFixture]\r
+ [Description("Tizen.NUI.WindowSystem.Shell.QuickPanelClient Tests")]\r
+ public class QuickPanelClientTests\r
+ {\r
+ private string TAG = "NUI";\r
+ private bool _triggered = false;\r
+\r
+ [SetUp]\r
+ public void Init()\r
+ {\r
+ Tizen.Log.Info(TAG, "Init() is called!");\r
+ }\r
+\r
+ [TearDown]\r
+ public void Destroy()\r
+ {\r
+ Tizen.Log.Info(TAG, "Destroy() is called!");\r
+ }\r
+\r
+ [Test]\r
+ [Category("P1")]\r
+ [Description("Create a QuickPanelClient. Check whether QuickPanelClient is successfully created or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.QuickPanelClient C")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "CONSTR")]\r
+ [Property("COVPARAM", "TizenShell, Window, Types")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void QuickPanelClient_INIT()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ var qpClientDefault = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.SystemDefault);\r
+ Assert.IsNotNull(qpClientDefault, "The instance should be not null");\r
+ Assert.IsInstanceOf<Shell.QuickPanelClient>(qpClientDefault, "Should return QuickPanelClient instance.");\r
+\r
+ var qpClientContext = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.ContextMenu);\r
+ Assert.IsNotNull(qpClientContext, "The instance should be not null");\r
+ Assert.IsInstanceOf<Shell.QuickPanelClient>(qpClientContext, "Should return QuickPanelClient instance.");\r
+\r
+ var qpClientApps = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.AppsMenu);\r
+ Assert.IsNotNull(qpClientApps, "The instance should be not null");\r
+ Assert.IsInstanceOf<Shell.QuickPanelClient>(qpClientApps, "Should return QuickPanelClient instance.");\r
+ }\r
+\r
+ [Test]\r
+ [Category("P2")]\r
+ [Description("Create a QuickPanelClient. Check whether QuickPanelClient created failed with null TizenShell or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.QuickPanelClient C")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "CONSTX")]\r
+ [Property("COVPARAM", "TizenShell, Window, Types")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void QuickPanelClient_INIT_FAILED1()\r
+ {\r
+ /* TEST CODE */\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ try\r
+ {\r
+ var qpClientDefault = new Shell.QuickPanelClient(null, win, Shell.QuickPanelClient.Types.SystemDefault);\r
+ }\r
+ catch (ArgumentNullException e)\r
+ {\r
+ Assert.Pass("ArgumentException: passed.");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ [Category("P2")]\r
+ [Description("Create a QuickPanelClient. Check whether QuickPanelClient created failed with null Window or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.QuickPanelClient C")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "CONSTX")]\r
+ [Property("COVPARAM", "TizenShell, Window, Types")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void QuickPanelClient_INIT_FAILED2()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ try\r
+ {\r
+ var qpClientDefault = new Shell.QuickPanelClient(tzsh, null, Shell.QuickPanelClient.Types.SystemDefault);\r
+ }\r
+ catch (ArgumentNullException e)\r
+ {\r
+ Assert.Pass("ArugumentNullException: passed.");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ [Category("P2")]\r
+ [Description("Create a QuickPanelClient. Check whether QuickPanelClient created failed with Unknown Type or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.QuickPanelClient C")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "CONSTX")]\r
+ [Property("COVPARAM", "TizenShell, Window, Types")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void QuickPanelClient_INIT_FAILED3()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ try\r
+ {\r
+ var qpClientDefault = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.Unknown);\r
+ }\r
+ catch (ArgumentException e)\r
+ {\r
+ Assert.Pass("ArugumentException: passed.");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ [Category("P1")]\r
+ [Description("Get a visible state of quickpanel service window. Check whether getting a visible state successfully or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.Visible A")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "PRO")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void Visible_CHECK_RETURN_VALUE()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ var qpClient = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.SystemDefault);\r
+ var visible = Shell.QuickPanelClient.VisibleState.Unknown;\r
+\r
+ try\r
+ {\r
+ visible = qpClient.Visible;\r
+ Assert.AreNotEqual(Shell.QuickPanelClient.VisibleState.Unknown, visible, "Get a invalid visible state");\r
+ }\r
+ catch (InvalidOperationException e)\r
+ {\r
+ Tizen.Log.Info(TAG, "This system has no quickpanel: " + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "This system has no quickpanel: " + e.ToString());\r
+ Assert.Pass("This system has no quickpanel");\r
+ }\r
+ catch (ArgumentException e)\r
+ {\r
+ Tizen.Log.Error(TAG, "Caught Exception" + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());\r
+ Assert.Fail("Caught Exception" + e.ToString());\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Assert.True(false, "should not throw exception(" + e.Message + ")");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ [Category("P1")]\r
+ [Description("Get/set a scrollable state of quickpanel service window. Check whether getting/setting a scrollable state successfully or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.Scrollable A")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "PRW")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void Scrollable_CHECK_RETURN_VALUE()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ var qpClient = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.SystemDefault);\r
+ var scrollable = Shell.QuickPanelClient.ScrollableState.Unknown;\r
+\r
+ try\r
+ {\r
+ scrollable = Shell.QuickPanelClient.ScrollableState.Unset;\r
+ qpClient.Scrollable = scrollable;\r
+ Assert.AreEqual(qpClient.Scrollable, scrollable, "Scrollable property is invalid");\r
+\r
+ scrollable = Shell.QuickPanelClient.ScrollableState.Set;\r
+ qpClient.Scrollable = scrollable;\r
+ Assert.AreEqual(qpClient.Scrollable, scrollable, "Scrollable property is invalid");\r
+ }\r
+ catch (InvalidOperationException e)\r
+ {\r
+ Tizen.Log.Info(TAG, "This system has no quickpanel: " + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "This system has no quickpanel: " + e.ToString());\r
+ Assert.Pass("This system has no quickpanel");\r
+ }\r
+ catch (ArgumentException e)\r
+ {\r
+ Tizen.Log.Error(TAG, "Caught Exception" + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());\r
+ Assert.Fail("Caught Exception" + e.ToString());\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Assert.True(false, "should not throw exception(" + e.Message + ")");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ [Category("P2")]\r
+ [Description("Set a scrollable state of quickpanel service window. Check whether setting a scrollable state failed with Unknown State.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.Scrollable A")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "PEX")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void Scrollable_CHECK_RETURN_VALUE_FAILED()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ var qpClient = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.SystemDefault);\r
+ var scrollable = Shell.QuickPanelClient.ScrollableState.Unknown;\r
+\r
+ try\r
+ {\r
+ qpClient.Scrollable = scrollable;\r
+ Assert.IsTrue(false, "This operation should raise ArgumentException");\r
+ }\r
+ catch (InvalidOperationException e)\r
+ {\r
+ Tizen.Log.Info(TAG, "This system has no quickpanel: " + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "This system has no quickpanel: " + e.ToString());\r
+ Assert.Pass("This system has no quickpanel");\r
+ }\r
+ catch (ArgumentException e)\r
+ {\r
+ Assert.Pass("ArugumentException: passed.");\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Assert.True(false, "should not throw exception(" + e.Message + ")");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ [Category("P1")]\r
+ [Description("Get a orientation state of quickpanel service window. Check whether getting a orientation state successfully or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.Orientation A")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "PRO")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void Orientation_CHECK_RETURN_VALUE()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ var qpClient = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.SystemDefault);\r
+ var orientation = Window.WindowOrientation.Portrait;\r
+\r
+ try\r
+ {\r
+ orientation = qpClient.Orientation;\r
+ Assert.IsInstanceOf<Window.WindowOrientation>(orientation, "Should return Window.WindowOrientation instance.");\r
+ }\r
+ catch (InvalidOperationException e)\r
+ {\r
+ Tizen.Log.Info(TAG, "This system has no quickpanel: " + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "This system has no quickpanel: " + e.ToString());\r
+ Assert.Pass("This system has no quickpanel");\r
+ }\r
+ catch (ArgumentException e)\r
+ {\r
+ Tizen.Log.Error(TAG, "Caught Exception" + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());\r
+ Assert.Fail("Caught Exception" + e.ToString());\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Assert.True(false, "should not throw exception(" + e.Message + ")");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ [Category("P1")]\r
+ [Description("Show a quickpanel service window. Check whether show a quickpanel service window successfully or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.Show M")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "MR")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void Show_CHECK()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ var qpClient = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.SystemDefault);\r
+\r
+ try\r
+ {\r
+ qpClient.Show();\r
+ }\r
+ catch (InvalidOperationException e)\r
+ {\r
+ Tizen.Log.Info(TAG, "This system has no quickpanel: " + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "This system has no quickpanel: " + e.ToString());\r
+ Assert.Pass("This system has no quickpanel");\r
+ }\r
+ catch (ArgumentException e)\r
+ {\r
+ Tizen.Log.Error(TAG, "Caught Exception" + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());\r
+ Assert.Fail("Caught Exception" + e.ToString());\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Assert.True(false, "should not throw exception(" + e.Message + ")");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ [Category("P1")]\r
+ [Description("Hide a quickpanel service window. Check whether hide a quickpanel service window successfully or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.Hide M")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "MR")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void Hide_CHECK()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ var qpClient = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.SystemDefault);\r
+\r
+ try\r
+ {\r
+ qpClient.Hide();\r
+ }\r
+ catch (InvalidOperationException e)\r
+ {\r
+ Tizen.Log.Info(TAG, "This system has no quickpanel: " + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "This system has no quickpanel: " + e.ToString());\r
+ Assert.Pass("This system has no quickpanel");\r
+ }\r
+ catch (ArgumentException e)\r
+ {\r
+ Tizen.Log.Error(TAG, "Caught Exception" + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());\r
+ Assert.Fail("Caught Exception" + e.ToString());\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Assert.True(false, "should not throw exception(" + e.Message + ")");\r
+ }\r
+ }\r
+\r
+ public void OnVisibleEvent(object sender, Shell.QuickPanelClient.VisibleState state)\r
+ {\r
+ _triggered = true;\r
+ }\r
+\r
+ [Test]\r
+ [Category("P1")]\r
+ [Description("Check whether VisibleChanged event is triggered.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.QuickPanelClient.VisibleChanged E")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "EVL")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public async Task VisibleChanged_EVENT()\r
+ {\r
+ /* TEST CODE */\r
+ Shell.TizenShell tzsh = new Shell.TizenShell();\r
+ Window win = NUIApplication.GetDefaultWindow();\r
+ var qpClient = new Shell.QuickPanelClient(tzsh, win, Shell.QuickPanelClient.Types.SystemDefault);\r
+\r
+ qpClient.VisibleChanged += OnVisibleEvent;\r
+ _triggered = false;\r
+\r
+ try\r
+ {\r
+ qpClient.Show();\r
+ }\r
+ catch (InvalidOperationException e)\r
+ {\r
+ Tizen.Log.Info(TAG, "This system has no quickpanel: " + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "This system has no quickpanel: " + e.ToString());\r
+ Assert.Pass("This system has no quickpanel");\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Assert.True(false, "should not throw exception(" + e.Message + ")");\r
+ }\r
+\r
+ try\r
+ {\r
+ qpClient.Hide();\r
+ }\r
+ catch (InvalidOperationException e)\r
+ {\r
+ Tizen.Log.Info(TAG, "This system has no quickpanel: " + e.ToString());\r
+ LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "This system has no quickpanel: " + e.ToString());\r
+ Assert.Pass("This system has no quickpanel");\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Assert.True(false, "should not throw exception(" + e.Message + ")");\r
+ }\r
+\r
+ await Task.Delay(500);\r
+ Assert.AreEqual(true, _triggered, "Should be true");\r
+ qpClient.VisibleChanged -= OnVisibleEvent;\r
+ _triggered = false;\r
+ }\r
+ }\r
+}\r
--- /dev/null
+using NUnit.Framework;\r
+using NUnit.Framework.TUnit;\r
+using System;\r
+using Tizen.NUI;\r
+using Tizen.NUI.UIComponents;\r
+using Tizen.NUI.BaseComponents;\r
+using System.Threading.Tasks;\r
+using Tizen.NUI.WindowSystem;\r
+\r
+namespace Tizen.NUI.WindowSystem.Tests\r
+{\r
+ [TestFixture]\r
+ [Description("Tizen.NUI.WindowSystem.Shell.TizenShell Tests")]\r
+ public class TizenShellTests\r
+ {\r
+ private string TAG = "NUI";\r
+\r
+ [SetUp]\r
+ public void Init()\r
+ {\r
+ Tizen.Log.Info(TAG, "Init() is called!");\r
+ }\r
+\r
+ [TearDown]\r
+ public void Destroy()\r
+ {\r
+ Tizen.Log.Info(TAG, "Destroy() is called!");\r
+ }\r
+\r
+ [Test]\r
+ [Category("P1")]\r
+ [Description("Create a TIzen Shell. Check whether tizen shell is successfully created or not.")]\r
+ [Property("SPEC", "Tizen.NUI.WindowSystem.Shell.TizenShell.TizenShell C")]\r
+ [Property("SPEC_URL", "-")]\r
+ [Property("CRITERIA", "CONSTR")]\r
+ [Property("AUTHOR", "JeongHyun Kang, jhyuni.kang@samsung.com")]\r
+ public void TizenShell_INIT()\r
+ {\r
+ /* TEST CODE */\r
+ var tzsh = new Shell.TizenShell();\r
+ Assert.IsNotNull(tzsh, "The instance should be not null");\r
+ Assert.IsInstanceOf<Shell.TizenShell>(tzsh, "Should return TizenShell instance.");\r
+ }\r
+ }\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="8" package="Tizen.NUI.WindowSystem.Tests" version="1.0.0">
+ <profile name="common" />
+ <ui-application appid="Tizen.NUI.WindowSystem.Tests"
+ exec="Tizen.NUI.WindowSystem.Tests.dll"
+ type="dotnet"
+ multiple="false"
+ taskmanage="true"
+ launch_mode="single">
+ <icon>Tizen.NUI.WindowSystem.Tests.png</icon>
+ <label>Tizen.NUI.WindowSystem.Tests</label>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ </privileges>
+</manifest>