0
|
1 using System;
|
|
2 using System.ComponentModel;
|
|
3 using System.IO;
|
|
4 using System.Runtime.Serialization.Formatters.Binary;
|
|
5 using System.Windows.Forms;
|
|
6
|
|
7 using NUnit.Framework;
|
|
8
|
|
9 using BLToolkit.EditableObjects;
|
|
10 using BLToolkit.Reflection;
|
|
11
|
|
12 namespace EditableObjects
|
|
13 {
|
|
14 [Serializable]
|
|
15 public abstract class SerializableObject : EditableObject
|
|
16 {
|
|
17 public abstract int ID { get; set; }
|
|
18 public abstract Guid UUID { get; set; }
|
|
19 public abstract string Name { get; set; }
|
|
20
|
|
21 public abstract EditableList<string> Array { get; set; }
|
|
22 }
|
|
23
|
|
24 [TestFixture]
|
|
25 public class EditableArrayListTest
|
|
26 {
|
|
27 public abstract class EditableTestObject : EditableObject
|
|
28 {
|
|
29 public abstract int ID { get; set; }
|
|
30 public abstract string Name { get; set; }
|
|
31 public abstract int Seconds { get; set; }
|
|
32
|
|
33 public static EditableTestObject CreateInstance()
|
|
34 {
|
|
35 return (EditableTestObject)TypeAccessor.CreateInstance(typeof(EditableTestObject));
|
|
36 }
|
|
37
|
|
38 public static EditableTestObject CreateInstance(int id, string name, int seconds)
|
|
39 {
|
|
40 var instance = CreateInstance();
|
|
41
|
|
42 instance.ID = id;
|
|
43 instance.Name = name;
|
|
44 instance.Seconds = seconds;
|
|
45
|
|
46 return instance;
|
|
47 }
|
|
48
|
|
49 public override string ToString()
|
|
50 {
|
|
51 return string.Format("EditableTestObject - ID:({0}) Name: ({1}) Seconds({2})", ID, Name, Seconds);
|
|
52 }
|
|
53 }
|
|
54
|
|
55 private static readonly EditableTestObject[] _testObjects = new EditableTestObject[]
|
|
56 {
|
|
57 EditableTestObject.CreateInstance(0, "Smith", 24),
|
|
58 EditableTestObject.CreateInstance(1, "John", 22),
|
|
59 EditableTestObject.CreateInstance(2, "Anna", 48),
|
|
60 EditableTestObject.CreateInstance(3, "Tim", 56),
|
|
61 EditableTestObject.CreateInstance(4, "Xiniu", 39),
|
|
62 EditableTestObject.CreateInstance(5, "Kirill", 30)
|
|
63 };
|
|
64
|
|
65 public EditableArrayListTest()
|
|
66 {
|
|
67 _testList = new EditableArrayList(typeof(EditableTestObject));
|
|
68 _testList.ListChanged += TestList_ListChanged;
|
|
69 }
|
|
70
|
|
71 private readonly EditableArrayList _testList;
|
|
72
|
|
73 private void TestList_ListChanged(object sender, ListChangedEventArgs e)
|
|
74 {
|
|
75 var array = sender as EditableArrayList;
|
|
76
|
|
77 Assert.IsNotNull(array);
|
|
78 if (e.ListChangedType != ListChangedType.Reset)
|
|
79 Assert.That(array.IsDirty);
|
|
80
|
|
81 if(e.ListChangedType == ListChangedType.ItemAdded)
|
|
82 {
|
|
83 var o = array[e.NewIndex];
|
|
84
|
|
85 Assert.IsNotNull(o);
|
|
86 Assert.That(array.NewItems.Contains(o));
|
|
87 }
|
|
88
|
|
89 if (e.ListChangedType != ListChangedType.ItemDeleted && e.ListChangedType != ListChangedType.Reset)
|
|
90 Console.WriteLine("ListChanged (ID:{3}). Type: {0}, OldIndex: {1}, NewIndex: {2}", e.ListChangedType, e.OldIndex, e.NewIndex, (e.NewIndex >= 0 && e.NewIndex < _testList.Count) ? ((EditableTestObject)_testList[e.NewIndex]).ID : -1);
|
|
91 else
|
|
92 Console.WriteLine("ListChanged (ID:???). Type: {0}, OldIndex: {1}, NewIndex: {2}", e.ListChangedType, e.OldIndex, e.NewIndex);
|
|
93 }
|
|
94
|
|
95 [Test]
|
|
96 public void TestAdd()
|
|
97 {
|
|
98 Console.WriteLine("--- TestAdd ---");
|
|
99 _testList.Clear();
|
|
100 _testList.RemoveSort();
|
|
101
|
|
102 for (var i = 0; i < 3; i++)
|
|
103 _testList.Add(_testObjects[i]);
|
|
104
|
|
105 Assert.AreEqual(_testList.Count, 3);
|
|
106 Assert.AreEqual(_testList[0], _testObjects[0]);
|
|
107 Assert.AreEqual(_testList[1], _testObjects[1]);
|
|
108 Assert.AreEqual(_testList[2], _testObjects[2]);
|
|
109
|
|
110 var _subArray = new EditableTestObject[3];
|
|
111
|
|
112 for (var i = 3; i < _testObjects.Length; i++)
|
|
113 _subArray[i-3] = _testObjects[i];
|
|
114
|
|
115 _testList.AddRange(_subArray);
|
|
116 Assert.AreEqual(_testList.Count, 6);
|
|
117
|
|
118 for (var i = 3; i < _testObjects.Length; i++)
|
|
119 Assert.AreEqual(_subArray[i - 3], _testObjects[i]);
|
|
120
|
|
121 PrintList();
|
|
122
|
|
123 _testList.Clear();
|
|
124 }
|
|
125
|
|
126 [Test]
|
|
127 public void TestAddNew()
|
|
128 {
|
|
129 var list = new EditableList<EditableTestObject>();
|
|
130 var listChangedFired = false;
|
|
131
|
|
132 list.ListChanged += (sender, args) => listChangedFired = true;
|
|
133
|
|
134 list.AddNew();
|
|
135 Assert.That(listChangedFired);
|
|
136 Assert.AreEqual(1, list.Count);
|
|
137 Assert.AreEqual(1, list.NewItems.Count);
|
|
138
|
|
139 listChangedFired = false;
|
|
140 list.CancelNew(0);
|
|
141 Assert.That(listChangedFired);
|
|
142 Assert.IsEmpty(list);
|
|
143 Assert.IsEmpty(list.NewItems);
|
|
144 }
|
|
145
|
|
146 [Test]
|
|
147 public void TestInsert()
|
|
148 {
|
|
149 Console.WriteLine("--- TestInsert ---");
|
|
150 _testList.Clear();
|
|
151 _testList.RemoveSort();
|
|
152
|
|
153 for (var i = 0; i < 3; i++)
|
|
154 _testList.Insert(0, _testObjects[i]);
|
|
155
|
|
156 Assert.AreEqual(_testList.Count, 3);
|
|
157 Assert.AreEqual(_testList[0], _testObjects[2]);
|
|
158 Assert.AreEqual(_testList[1], _testObjects[1]);
|
|
159 Assert.AreEqual(_testList[2], _testObjects[0]);
|
|
160
|
|
161 var _subArray = new EditableTestObject[3];
|
|
162
|
|
163 for (var i = 3; i < _testObjects.Length; i++)
|
|
164 _subArray[i-3] = _testObjects[i];
|
|
165
|
|
166 _testList.InsertRange(0, _subArray);
|
|
167 Assert.AreEqual(_testList.Count, 6);
|
|
168
|
|
169 Assert.AreEqual(_testList[0], _testObjects[3]);
|
|
170 Assert.AreEqual(_testList[1], _testObjects[4]);
|
|
171 Assert.AreEqual(_testList[2], _testObjects[5]);
|
|
172
|
|
173 PrintList();
|
|
174
|
|
175 _testList.Clear();
|
|
176 }
|
|
177
|
|
178 [Test]
|
|
179 public void TestRemove()
|
|
180 {
|
|
181 Console.WriteLine("--- TestRemove ---");
|
|
182
|
|
183 _testList.Clear();
|
|
184 _testList.RemoveSort();
|
|
185 _testList.AddRange(_testObjects);
|
|
186
|
|
187 _testList.RemoveAt(2);
|
|
188 Assert.AreEqual(_testList.Count, 5);
|
|
189 Assert.IsEmpty(_testList.DelItems);
|
|
190
|
|
191 _testList.AcceptChanges();
|
|
192 Assert.IsEmpty(_testList.NewItems);
|
|
193
|
|
194 _testList.Remove(_testList[0]);
|
|
195 Assert.AreEqual(_testList.Count, 4);
|
|
196 Assert.IsNotEmpty(_testList.DelItems);
|
|
197
|
|
198 _testList.Clear();
|
|
199 Assert.AreEqual(_testList.Count, 0);
|
|
200 }
|
|
201
|
|
202 [Test]
|
|
203 public void TestRemoveRange()
|
|
204 {
|
|
205 Console.WriteLine("--- TestRemoveRange ---");
|
|
206
|
|
207 _testList.Clear();
|
|
208 _testList.RemoveSort();
|
|
209 _testList.AcceptChanges();
|
|
210 _testList.AddRange(_testObjects);
|
|
211
|
|
212 Assert.AreEqual(6, _testList.Count);
|
|
213 Assert.AreEqual(6, _testList.NewItems.Count);
|
|
214 Assert.AreEqual(0, _testList.DelItems.Count);
|
|
215
|
|
216 _testList.RemoveRange(1, 3);
|
|
217
|
|
218 Assert.AreEqual(3, _testList.Count);
|
|
219 Assert.AreEqual(3, _testList.NewItems.Count);
|
|
220 Assert.AreEqual(0, _testList.DelItems.Count);
|
|
221 Assert.AreEqual(0, ((EditableTestObject)_testList[0]).ID);
|
|
222 Assert.AreEqual(4, ((EditableTestObject)_testList[1]).ID);
|
|
223
|
|
224 _testList.AcceptChanges();
|
|
225
|
|
226 Assert.AreEqual(3, _testList.Count);
|
|
227 Assert.AreEqual(0, _testList.NewItems.Count);
|
|
228 Assert.AreEqual(0, _testList.DelItems.Count);
|
|
229
|
|
230 _testList.RemoveRange(0, 1);
|
|
231
|
|
232 Assert.AreEqual(2, _testList.Count);
|
|
233 Assert.AreEqual(0, _testList.NewItems.Count);
|
|
234 Assert.AreEqual(1, _testList.DelItems.Count);
|
|
235
|
|
236 _testList.Clear();
|
|
237
|
|
238 Assert.AreEqual(0, _testList.Count);
|
|
239 Assert.AreEqual(0, _testList.NewItems.Count);
|
|
240 Assert.AreEqual(3, _testList.DelItems.Count);
|
|
241
|
|
242 _testList.AcceptChanges();
|
|
243
|
|
244 Assert.AreEqual(0, _testList.Count);
|
|
245 Assert.AreEqual(0, _testList.NewItems.Count);
|
|
246 Assert.AreEqual(0, _testList.DelItems.Count);
|
|
247 }
|
|
248
|
|
249 [Test]
|
|
250 public void TestSortedAdd()
|
|
251 {
|
|
252 Console.WriteLine("--- TestSortedAdd ---");
|
|
253 _testList.Clear();
|
|
254 _testList.RemoveSort();
|
|
255 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Descending);
|
|
256
|
|
257 for (var i = 0; i < 3; i++)
|
|
258 _testList.Add(_testObjects[i]);
|
|
259
|
|
260 Assert.AreEqual(_testList.Count, 3);
|
|
261 Assert.AreEqual(_testList[1], _testObjects[0]);
|
|
262 Assert.AreEqual(_testList[2], _testObjects[1]);
|
|
263 Assert.AreEqual(_testList[0], _testObjects[2]);
|
|
264
|
|
265 var _subArray = new EditableTestObject[3];
|
|
266
|
|
267 for (var i = 3; i < _testObjects.Length; i++)
|
|
268 _subArray[i-3] = _testObjects[i];
|
|
269
|
|
270 _testList.AddRange(_subArray);
|
|
271 Assert.AreEqual(_testList.Count, 6);
|
|
272
|
|
273 Assert.AreEqual(_testList[0], _testObjects[3]);
|
|
274 Assert.AreEqual(_testList[2], _testObjects[4]);
|
|
275 Assert.AreEqual(_testList[3], _testObjects[5]);
|
|
276
|
|
277 PrintList();
|
|
278
|
|
279 _testList.Clear();
|
|
280 Assert.AreEqual(_testList.Count, 0);
|
|
281
|
|
282 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Ascending);
|
|
283
|
|
284 for (var i = 0; i < 3; i++)
|
|
285 _testList.Add(_testObjects[i]);
|
|
286
|
|
287 Assert.AreEqual(_testList.Count, 3);
|
|
288 Assert.AreEqual(_testList[1], _testObjects[0]);
|
|
289 Assert.AreEqual(_testList[0], _testObjects[1]);
|
|
290 Assert.AreEqual(_testList[2], _testObjects[2]);
|
|
291
|
|
292 _testList.AddRange(_subArray);
|
|
293 Assert.AreEqual(_testList.Count, 6);
|
|
294
|
|
295 Assert.AreEqual(_testList[5], _testObjects[3]);
|
|
296 Assert.AreEqual(_testList[3], _testObjects[4]);
|
|
297 Assert.AreEqual(_testList[2], _testObjects[5]);
|
|
298
|
|
299 PrintList();
|
|
300
|
|
301 _testList.Clear();
|
|
302 }
|
|
303
|
|
304 [Test]
|
|
305 public void TestSortedInsert()
|
|
306 {
|
|
307 Console.WriteLine("--- TestSortedInsert ---");
|
|
308 _testList.Clear();
|
|
309 _testList.RemoveSort();
|
|
310 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Descending);
|
|
311
|
|
312 for (var i = 0; i < 3; i++)
|
|
313 _testList.Insert(0, _testObjects[i]);
|
|
314
|
|
315 Assert.AreEqual(_testList.Count, 3);
|
|
316 Assert.AreEqual(_testList[0], _testObjects[2]);
|
|
317 Assert.AreEqual(_testList[1], _testObjects[0]);
|
|
318 Assert.AreEqual(_testList[2], _testObjects[1]);
|
|
319
|
|
320 var _subArray = new EditableTestObject[3];
|
|
321
|
|
322 for (var i = 3; i < _testObjects.Length; i++)
|
|
323 _subArray[i-3] = _testObjects[i];
|
|
324
|
|
325 _testList.InsertRange(0, _subArray);
|
|
326 Assert.AreEqual(_testList.Count, 6);
|
|
327
|
|
328 Assert.AreEqual(_testList[0], _testObjects[3]);
|
|
329 Assert.AreEqual(_testList[2], _testObjects[4]);
|
|
330 Assert.AreEqual(_testList[3], _testObjects[5]);
|
|
331
|
|
332 PrintList();
|
|
333
|
|
334 _testList.Clear();
|
|
335 Assert.AreEqual(_testList.Count, 0);
|
|
336
|
|
337 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Ascending);
|
|
338
|
|
339 for (var i = 0; i < 3; i++)
|
|
340 _testList.Insert(0, _testObjects[i]);
|
|
341
|
|
342 Assert.AreEqual(_testList.Count, 3);
|
|
343 Assert.AreEqual(_testList[0], _testObjects[1]);
|
|
344 Assert.AreEqual(_testList[1], _testObjects[0]);
|
|
345 Assert.AreEqual(_testList[2], _testObjects[2]);
|
|
346
|
|
347 _testList.InsertRange(0, _subArray);
|
|
348 Assert.AreEqual(_testList.Count, 6);
|
|
349
|
|
350 Assert.AreEqual(_testList[2], _testObjects[5]);
|
|
351 Assert.AreEqual(_testList[3], _testObjects[4]);
|
|
352 Assert.AreEqual(_testList[5], _testObjects[3]);
|
|
353
|
|
354 PrintList();
|
|
355
|
|
356 _testList.Clear();
|
|
357 }
|
|
358
|
|
359 [Test]
|
|
360 public void TestSortedPropertyChange()
|
|
361 {
|
|
362 Console.WriteLine("--- TestSortedPropertyChange ---");
|
|
363 _testList.Clear();
|
|
364 _testList.RemoveSort();
|
|
365 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Descending);
|
|
366 _testList.AddRange(_testObjects);
|
|
367
|
|
368 var eto = EditableTestObject.CreateInstance(6, "Dummy", 10);
|
|
369
|
|
370 _testList.Add(eto);
|
|
371 Assert.AreEqual(_testList.Count, 7);
|
|
372 Assert.AreEqual(_testList[6], eto);
|
|
373
|
|
374 eto.Seconds = 20;
|
|
375 Assert.AreEqual(_testList[6], eto);
|
|
376
|
|
377 eto.Seconds = 23;
|
|
378 Assert.AreEqual(_testList[5], eto);
|
|
379
|
|
380 eto.Seconds = 30;
|
|
381 Assert.AreEqual(_testList[4], eto);
|
|
382
|
|
383 eto.Seconds = 40;
|
|
384 Assert.AreEqual(_testList[2], eto);
|
|
385
|
|
386 eto.Seconds = 50;
|
|
387 Assert.AreEqual(_testList[1], eto);
|
|
388
|
|
389 eto.Seconds = 60;
|
|
390 Assert.AreEqual(_testList[0], eto);
|
|
391 }
|
|
392
|
|
393 private void PrintList()
|
|
394 {
|
|
395 Console.WriteLine("--- Print List ---");
|
|
396 foreach (EditableTestObject o in _testList)
|
|
397 Console.WriteLine(o);
|
|
398 }
|
|
399
|
|
400 [Test]
|
|
401 public void SerializationTest()
|
|
402 {
|
|
403 //Configuration.NotifyOnEqualSet = true;
|
|
404
|
|
405 var test = TypeAccessor<SerializableObject>.CreateInstance();
|
|
406 var stream = new MemoryStream();
|
|
407 var bf = new BinaryFormatter();
|
|
408
|
|
409 bf.Serialize(stream, test);
|
|
410
|
|
411 //Configuration.NotifyOnChangesOnly = false;
|
|
412 }
|
|
413
|
|
414 //////[Test] Resharpe 8 issue
|
|
415 public void SerializationTest2()
|
|
416 {
|
|
417 //Configuration.NotifyOnChangesOnly = true;
|
|
418
|
|
419 var list = new EditableList<SerializableObject> { TypeAccessor<SerializableObject>.CreateInstance() };
|
|
420
|
|
421 var formatter = new BinaryFormatter();
|
|
422
|
|
423 using (var stream = new MemoryStream())
|
|
424 {
|
|
425 formatter.Serialize(stream, list);
|
|
426 stream.Position = 0;
|
|
427
|
|
428 var result = formatter.Deserialize(stream);
|
|
429
|
|
430 Assert.IsNotNull(result);
|
|
431
|
|
432 var eal = (EditableList<SerializableObject>)result;
|
|
433
|
|
434 Console.WriteLine(eal.Count);
|
|
435
|
|
436 eal.ListChanged += eal_ListChanged;
|
|
437
|
|
438 eal[0].ID = 0;
|
|
439 _notificationCount = 0;
|
|
440 eal[0].ID = -100;
|
|
441 eal[0].ID = -100;
|
|
442 eal[0].ID = -100;
|
|
443 eal[0].ID = -100;
|
|
444 eal[0].ID = -100;
|
|
445 eal[0].ID = -100;
|
|
446
|
|
447 Console.WriteLine(eal.Count);
|
|
448
|
|
449 //Assert.AreEqual(_notificationCount, 1);
|
|
450 }
|
|
451
|
|
452 //Configuration.NotifyOnChangesOnly = false;
|
|
453 }
|
|
454
|
|
455 private static int _notificationCount;
|
|
456
|
|
457 static void eal_ListChanged(object sender, ListChangedEventArgs e)
|
|
458 {
|
|
459 Console.WriteLine(e.ListChangedType);
|
|
460 _notificationCount++;
|
|
461 }
|
|
462
|
|
463 [Test]
|
|
464 public void SortTest()
|
|
465 {
|
|
466 var dataList = new EditableList<EditableTestObject>
|
|
467 {
|
|
468 EditableTestObject.CreateInstance(1, "John", 60),
|
|
469 EditableTestObject.CreateInstance(1, "John", 60),
|
|
470 EditableTestObject.CreateInstance(1, "John", 60),
|
|
471 EditableTestObject.CreateInstance(2, "Tester", 70),
|
|
472 EditableTestObject.CreateInstance(2, "Tester", 70),
|
|
473 EditableTestObject.CreateInstance(2, "Tester", 70),
|
|
474 EditableTestObject.CreateInstance(3, "Tester", 70),
|
|
475 EditableTestObject.CreateInstance(3, "Tester", 70),
|
|
476 EditableTestObject.CreateInstance(3, "Tester", 70)
|
|
477 };
|
|
478
|
|
479 var bindingSource = new BindingSource(dataList, null) { Sort = "ID" };
|
|
480 var prev = 0;
|
|
481
|
|
482 foreach (var o in dataList)
|
|
483 {
|
|
484 Assert.IsTrue(o.ID >= prev);
|
|
485 prev = o.ID;
|
|
486 }
|
|
487
|
|
488 bindingSource[0] = EditableTestObject.CreateInstance(2, "John", 60);
|
|
489
|
|
490 prev = 0;
|
|
491
|
|
492 foreach (var o in dataList)
|
|
493 {
|
|
494 Assert.IsTrue(o.ID >= prev);
|
|
495 prev = o.ID;
|
|
496 }
|
|
497 }
|
|
498
|
|
499 public class DerivedEditableList<T> : EditableList<T>
|
|
500 {
|
|
501 public event EventHandler OnListChangedCalled;
|
|
502
|
|
503 protected void OnOnListChangedCalled()
|
|
504 {
|
|
505 if (OnListChangedCalled != null)
|
|
506 OnListChangedCalled(this, EventArgs.Empty);
|
|
507 }
|
|
508
|
|
509 protected override void OnListChanged(ListChangedEventArgs e)
|
|
510 {
|
|
511 OnOnListChangedCalled();
|
|
512 base.OnListChanged(e);
|
|
513 }
|
|
514 }
|
|
515
|
|
516
|
|
517 [Test]
|
|
518 public void DerivedOnListChanged()
|
|
519 {
|
|
520 var called = false;
|
|
521 var list = new DerivedEditableList<int>();
|
|
522
|
|
523 list.OnListChangedCalled += (sender, args) => called = true;
|
|
524
|
|
525 list.Add(1);
|
|
526
|
|
527 Assert.IsTrue(called);
|
|
528 Assert.AreEqual(1, list.NewItems.Count);
|
|
529 Assert.AreEqual(1, list.Count);
|
|
530 Assert.AreEqual(0, list.DelItems.Count);
|
|
531
|
|
532 called = false;
|
|
533 list.RemoveAt(0);
|
|
534
|
|
535 Assert.IsTrue(called);
|
|
536 Assert.AreEqual(0, list.NewItems.Count);
|
|
537 Assert.AreEqual(0, list.Count);
|
|
538 Assert.AreEqual(0, list.DelItems.Count);
|
|
539 }
|
|
540
|
|
541 [Test]
|
|
542 public void CloneTest()
|
|
543 {
|
|
544 var src = new EditableList<int> { 1, 2, 3 };
|
|
545 var clone = (EditableList<int>)src.Clone();
|
|
546
|
|
547 Assert.AreEqual(src.Count, clone.Count);
|
|
548 Assert.AreEqual(src.NewItems.Count, clone.NewItems.Count);
|
|
549 Assert.AreEqual(src.DelItems.Count, clone.DelItems.Count);
|
|
550
|
|
551 src.AcceptChanges();
|
|
552
|
|
553 clone = (EditableList<int>)src.Clone();
|
|
554
|
|
555 Assert.AreEqual(src.Count, clone.Count);
|
|
556 Assert.AreEqual(src.NewItems.Count, clone.NewItems.Count);
|
|
557 Assert.AreEqual(src.DelItems.Count, clone.DelItems.Count);
|
|
558
|
|
559 src.RemoveAt(1);
|
|
560
|
|
561 clone = (EditableList<int>)src.Clone();
|
|
562
|
|
563 Assert.AreEqual(src.Count, clone.Count);
|
|
564 Assert.AreEqual(src.NewItems.Count, clone.NewItems.Count);
|
|
565 Assert.AreEqual(src.DelItems.Count, clone.DelItems.Count);
|
|
566 }
|
|
567
|
|
568 [Test]
|
|
569 public void CreateCleanTest()
|
|
570 {
|
|
571 var list = new EditableList<int>(new[] { 1, 2, 3 });
|
|
572
|
|
573 Assert.IsFalse(list.IsDirty);
|
|
574
|
|
575 Assert.AreEqual(3, list.Count);
|
|
576 Assert.AreEqual(0, list.NewItems.Count);
|
|
577 Assert.AreEqual(0, list.DelItems.Count);
|
|
578
|
|
579 list = new EditableList<int>(new int[] { });
|
|
580
|
|
581 Assert.IsFalse(list.IsDirty);
|
|
582
|
|
583 Assert.AreEqual(0, list.Count);
|
|
584 Assert.AreEqual(0, list.NewItems.Count);
|
|
585 Assert.AreEqual(0, list.DelItems.Count);
|
|
586 }
|
|
587
|
|
588 [Test]
|
|
589 public void IsDirtyTest()
|
|
590 {
|
|
591 var list = new EditableList<EditableTestObject>();
|
|
592
|
|
593 list.AddNew();
|
|
594 list.AddNew();
|
|
595
|
|
596 Assert.IsTrue(list.IsDirty);
|
|
597
|
|
598 list.AcceptChanges();
|
|
599
|
|
600 Assert.IsFalse(list.IsDirty);
|
|
601
|
|
602 list[1].ID = 101;
|
|
603
|
|
604 Assert.IsTrue(list[1].IsDirty);
|
|
605 Assert.IsTrue(list.IsDirty);
|
|
606 }
|
|
607
|
|
608 [Test]
|
|
609 public void CreateWithDirtyTest()
|
|
610 {
|
|
611 var to = EditableTestObject.CreateInstance();
|
|
612
|
|
613 to.ID = 10;
|
|
614
|
|
615 Assert.IsTrue(to.IsDirty);
|
|
616
|
|
617 var list = new EditableList<EditableTestObject>(new[] { to });
|
|
618
|
|
619 Assert.IsTrue(to.IsDirty);
|
|
620 Assert.IsTrue(list.IsDirty);
|
|
621 }
|
|
622 }
|
|
623 } |