1 using NUnit.Framework;
3 using System.Collections.Generic;
5 using System.Threading.Tasks;
6 using Tizen.NUI.BaseComponents;
8 namespace Tizen.NUI.Components.Devel.Tests
10 using tlog = Tizen.Log;
13 [Description("Controls/FlexibleView/FlexibleViewAdapter")]
14 public class FlexibleViewAdapterTest
16 private const string tag = "NUITEST";
18 private Vector2 scrnSize;
19 private ListBridge adapter;
20 private FlexibleView horizontalFlexibleView;
21 private LinearLayoutManager horizontalLayoutManager;
26 tlog.Info(tag, "Init() is called!");
27 scrnSize = new Vector2(1920, 1080);
34 tlog.Info(tag, "Destroy() is called!");
37 public class ListItemData
41 public ListItemData(int i)
43 str = "Text" + i.ToString();
46 public string TextString
55 public class ListItemView : View
57 private TextLabel mText;
61 mText = new TextLabel();
62 mText.WidthResizePolicy = ResizePolicyType.FillToParent;
63 mText.HeightResizePolicy = ResizePolicyType.FillToParent;
65 mText.HorizontalAlignment = HorizontalAlignment.Center;
66 mText.VerticalAlignment = VerticalAlignment.Center;
70 public string MainText
83 public class ListBridge : FlexibleViewAdapter
85 private List<ListItemData> mDatas;
86 public ListBridge(List<ListItemData> datas)
91 public void InsertData(int position)
93 mDatas.Insert(position, new ListItemData(1000 + position));
94 NotifyItemInserted(position);
97 public void RemoveData(int position)
99 mDatas.RemoveAt(position);
100 NotifyItemRemoved(position);
103 public override FlexibleViewViewHolder OnCreateViewHolder(int viewType)
105 FlexibleViewViewHolder viewHolder = new FlexibleViewViewHolder(new ListItemView());
109 public override void OnBindViewHolder(FlexibleViewViewHolder holder, int position)
111 ListItemData listItemData = mDatas[position];
113 ListItemView listItemView = holder.ItemView as ListItemView;
114 listItemView.Name = "Item" + position;
115 listItemView.SizeWidth = 150;
116 listItemView.SizeHeight = 60;
117 if (listItemView != null)
119 listItemView.MainText = String.Format("{0:D2}", position) + " : " + listItemData.TextString;
121 listItemView.Margin = new Extents(2, 2, 2, 2);
122 if (position % 2 == 0)
123 listItemView.BackgroundColor = Color.Cyan;
125 listItemView.BackgroundColor = Color.Yellow;
128 public override void OnDestroyViewHolder(FlexibleViewViewHolder holder)
130 if (holder.ItemView != null)
132 holder.ItemView.Dispose();
136 public override int GetItemCount()
141 public override void OnFocusChange(FlexibleView flexibleView, int previousFocus, int currentFocus)
143 FlexibleViewViewHolder previousFocusView = flexibleView.FindViewHolderForAdapterPosition(previousFocus);
144 if (previousFocusView != null)
146 if (previousFocusView.AdapterPosition % 2 == 0)
147 previousFocusView.ItemView.BackgroundColor = Color.Cyan;
149 previousFocusView.ItemView.BackgroundColor = Color.Yellow;
151 FlexibleViewViewHolder currentFocusView = flexibleView.FindViewHolderForAdapterPosition(currentFocus);
152 if (currentFocusView != null)
154 currentFocusView.ItemView.BackgroundColor = Color.Magenta;
159 private FlexibleView GetHorizontalFlexibleView()
161 horizontalFlexibleView = new FlexibleView();
162 Assert.IsNotNull(horizontalFlexibleView, "should be not null");
163 Assert.IsInstanceOf<FlexibleView>(horizontalFlexibleView, "should be an instance of testing target class!");
165 horizontalFlexibleView.Name = "FlexibleView";
166 horizontalFlexibleView.WidthSpecification = 400;
167 horizontalFlexibleView.HeightSpecification = 450;
168 horizontalFlexibleView.Padding = new Extents(10, 10, 10, 10);
169 horizontalFlexibleView.BackgroundColor = new Color(0.0f, 0.0f, 0.0f, 0.4f);
171 List<ListItemData> dataList = new List<ListItemData>();
172 for (int i = 0; i < 4; ++i)
174 dataList.Add(new ListItemData(i));
176 adapter = new ListBridge(dataList);
177 horizontalFlexibleView.SetAdapter(adapter);
178 horizontalFlexibleView.OnRelayout(scrnSize, null);
180 horizontalLayoutManager = new LinearLayoutManager(LinearLayoutManager.HORIZONTAL);
181 horizontalFlexibleView.SetLayoutManager(horizontalLayoutManager);
182 horizontalFlexibleView.OnRelayout(scrnSize, null);
184 return horizontalFlexibleView;
189 [Description("FlexibleViewAdapter NotifyItemChanged.")]
190 [Property("SPEC", "Tizen.NUI.Components.FlexibleView.FlexibleViewAdapter.NotifyItemChanged M")]
191 [Property("SPEC_URL", "-")]
192 [Property("CRITERIA", "MR")]
193 [Property("COVPARAM", "")]
194 [Property("AUTHOR", "guowei.wang@samsung.com")]
195 public void FlexibleViewAdapterNotifyItemChanged()
197 tlog.Debug(tag, $"FlexibleViewAdapterNotifyItemChanged START");
199 var testingTarget = GetHorizontalFlexibleView();
200 Assert.IsNotNull(testingTarget, "should be not null");
201 Assert.IsInstanceOf<FlexibleView>(testingTarget, "should be an instance of testing target class!");
205 testingTarget.GetAdapter().NotifyItemChanged(2);
209 tlog.Debug(tag, e.Message.ToString());
210 Assert.Fail("Caught Exception : Failed!");
213 testingTarget.Dispose();
214 tlog.Debug(tag, $"FlexibleViewAdapterNotifyItemChanged END (OK)");
219 [Description("FlexibleViewAdapter NotifyItemRangeChanged.")]
220 [Property("SPEC", "Tizen.NUI.Components.FlexibleView.FlexibleViewAdapter.NotifyItemRangeChanged M")]
221 [Property("SPEC_URL", "-")]
222 [Property("CRITERIA", "MR")]
223 [Property("COVPARAM", "")]
224 [Property("AUTHOR", "guowei.wang@samsung.com")]
225 public void FlexibleViewAdapterNotifyItemRangeChanged()
227 tlog.Debug(tag, $"FlexibleViewAdapterNotifyItemRangeChanged START");
229 var testingTarget = GetHorizontalFlexibleView();
230 Assert.IsNotNull(testingTarget, "should be not null");
231 Assert.IsInstanceOf<FlexibleView>(testingTarget, "should be an instance of testing target class!");
235 testingTarget.GetAdapter().NotifyItemRangeChanged(2, 2);
239 tlog.Debug(tag, e.Message.ToString());
240 Assert.Fail("Caught Exception : Failed!");
243 testingTarget.Dispose();
244 tlog.Debug(tag, $"FlexibleViewAdapterNotifyItemRangeChanged END (OK)");