annotate UnitTests/CS/EditableObjects/NotifyCollectionChangeTest.cs @ 3:1ef98bd70424

!bug 100 +3h Исправление проблемы BLToolkit + mono 3.4
author cin
date Fri, 22 Aug 2014 17:34:46 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections.Specialized;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.ComponentModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.IO;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using System.Runtime.Serialization.Formatters.Binary;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using System.Windows.Forms;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.EditableObjects;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using BLToolkit.Reflection;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 namespace EditableObjects
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public class NotifyCollectionChangeTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public abstract class EditableTestObject : EditableObject
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 public abstract int ID { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 public abstract string Name { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 public abstract int Seconds { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public static EditableTestObject CreateInstance()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 return TypeAccessor<EditableTestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 public static EditableTestObject CreateInstance(int id, string name, int seconds)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 EditableTestObject instance = CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 instance.ID = id;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 instance.Name = name;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 instance.Seconds = seconds;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 return instance;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public override string ToString()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 return string.Format("EditableTestObject - ID:({0}) Name: ({1}) Seconds({2})", ID, Name, Seconds);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 private static readonly EditableTestObject[] _testObjects = new EditableTestObject[6]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 EditableTestObject.CreateInstance(0, "Smith", 24),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 EditableTestObject.CreateInstance(1, "John", 22),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 EditableTestObject.CreateInstance(2, "Anna", 48),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 EditableTestObject.CreateInstance(3, "Tim", 56),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 EditableTestObject.CreateInstance(4, "Xiniu", 39),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 EditableTestObject.CreateInstance(5, "Kirill", 30)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public NotifyCollectionChangeTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 _testList = new EditableList<EditableTestObject>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 _testList.CollectionChanged += TestList_CollectionChanged;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 private readonly EditableArrayList _testList;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 private void TestList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 EditableArrayList array = sender as EditableArrayList;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 if (e.Action != NotifyCollectionChangedAction.Reset)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 Assert.That(array.IsDirty);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 EditableTestObject o = (EditableTestObject)(e.NewItems != null? e.NewItems[0]:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 e.OldItems != null ? e.OldItems[0]: null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 Console.WriteLine("CollectionChanged (ID:{3}). Type: {0}, OldIndex: {1}, NewIndex: {2}",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 e.Action, e.OldStartingIndex, e.NewStartingIndex, o != null? o.ID: -1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 public void TestAdd()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 Console.WriteLine("--- TestAdd ---");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 _testList.RemoveSort();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 for (int i = 0; i < 3; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 _testList.Add(_testObjects[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 Assert.AreEqual(_testList.Count, 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 Assert.AreEqual(_testList[0], _testObjects[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 Assert.AreEqual(_testList[1], _testObjects[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 Assert.AreEqual(_testList[2], _testObjects[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 EditableTestObject[] subArray = new EditableTestObject[3];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 for (int i = 3; i < _testObjects.Length; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 subArray[i-3] = _testObjects[i];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 _testList.AddRange(subArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 Assert.AreEqual(_testList.Count, 6);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 for (int i = 3; i < _testObjects.Length; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 Assert.AreEqual(subArray[i - 3], _testObjects[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 PrintList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 public void TestAddNew()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 EditableList<EditableTestObject> list = new EditableList<EditableTestObject>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 bool collectionChangedFired = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 list.CollectionChanged += delegate { collectionChangedFired = true; };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 list.AddNew();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 Assert.That(collectionChangedFired);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 Assert.AreEqual(1, list.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 Assert.AreEqual(1, list.NewItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 Assert.AreEqual(0, list.DelItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 collectionChangedFired = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 list.CancelNew(0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 Assert.That(collectionChangedFired);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 Assert.IsEmpty(list);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 Assert.IsEmpty(list.NewItems);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 Assert.IsEmpty(list.DelItems);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 public void TestInsert()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 Console.WriteLine("--- TestInsert ---");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 _testList.RemoveSort();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 for (int i = 0; i < 3; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 _testList.Insert(0, _testObjects[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 Assert.AreEqual(_testList.Count, 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 Assert.AreEqual(_testList[0], _testObjects[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 Assert.AreEqual(_testList[1], _testObjects[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 Assert.AreEqual(_testList[2], _testObjects[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 EditableTestObject[] _subArray = new EditableTestObject[3];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 for (int i = 3; i < _testObjects.Length; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 _subArray[i-3] = _testObjects[i];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 _testList.InsertRange(0, _subArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 Assert.AreEqual(_testList.Count, 6);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 Assert.AreEqual(_testList[0], _testObjects[3]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 Assert.AreEqual(_testList[1], _testObjects[4]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 Assert.AreEqual(_testList[2], _testObjects[5]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 PrintList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 public void TestRemove()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 Console.WriteLine("--- TestRemove ---");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 _testList.RemoveSort();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 _testList.AddRange(_testObjects);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 _testList.RemoveAt(2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 Assert.AreEqual(_testList.Count, 5);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 _testList.Remove(_testList[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 Assert.AreEqual(_testList.Count, 4);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 Assert.AreEqual(_testList.Count, 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 public void TestRemoveRange()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 Console.WriteLine("--- TestRemoveRange ---");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 _testList.RemoveSort();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 _testList.AcceptChanges();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 _testList.AddRange(_testObjects);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 Assert.AreEqual(6, _testList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 Assert.AreEqual(6, _testList.NewItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 Assert.AreEqual(0, _testList.DelItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 _testList.RemoveRange(1, 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 Assert.AreEqual(3, _testList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 Assert.AreEqual(3, _testList.NewItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 Assert.AreEqual(0, _testList.DelItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 Assert.AreEqual(0, ((EditableTestObject)_testList[0]).ID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 Assert.AreEqual(4, ((EditableTestObject)_testList[1]).ID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 _testList.AcceptChanges();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 Assert.AreEqual(3, _testList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 Assert.AreEqual(0, _testList.NewItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 Assert.AreEqual(0, _testList.DelItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 _testList.RemoveRange(0, 1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 Assert.AreEqual(2, _testList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 Assert.AreEqual(0, _testList.NewItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 Assert.AreEqual(1, _testList.DelItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 Assert.AreEqual(0, _testList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 Assert.AreEqual(0, _testList.NewItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 Assert.AreEqual(3, _testList.DelItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 _testList.AcceptChanges();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 Assert.AreEqual(0, _testList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 Assert.AreEqual(0, _testList.NewItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 Assert.AreEqual(0, _testList.DelItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 public void TestSortedAdd()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 Console.WriteLine("--- TestSortedAdd ---");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 _testList.RemoveSort();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Descending);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 for (int i = 0; i < 3; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 _testList.Add(_testObjects[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 Assert.AreEqual(_testList.Count, 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 Assert.AreEqual(_testList[1], _testObjects[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 Assert.AreEqual(_testList[2], _testObjects[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239 Assert.AreEqual(_testList[0], _testObjects[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 EditableTestObject[] _subArray = new EditableTestObject[3];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 for (int i = 3; i < _testObjects.Length; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 _subArray[i-3] = _testObjects[i];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 _testList.AddRange(_subArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247 Assert.AreEqual(_testList.Count, 6);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 Assert.AreEqual(_testList[0], _testObjects[3]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 Assert.AreEqual(_testList[2], _testObjects[4]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 Assert.AreEqual(_testList[3], _testObjects[5]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 PrintList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 Assert.AreEqual(_testList.Count, 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Ascending);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 for (int i = 0; i < 3; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 _testList.Add(_testObjects[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 Assert.AreEqual(_testList.Count, 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 Assert.AreEqual(_testList[1], _testObjects[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 Assert.AreEqual(_testList[0], _testObjects[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 Assert.AreEqual(_testList[2], _testObjects[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 _testList.AddRange(_subArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 Assert.AreEqual(_testList.Count, 6);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 Assert.AreEqual(_testList[5], _testObjects[3]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 Assert.AreEqual(_testList[3], _testObjects[4]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273 Assert.AreEqual(_testList[2], _testObjects[5]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275 PrintList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 public void TestSortedInsert()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283 Console.WriteLine("--- TestSortedInsert ---");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285 _testList.RemoveSort();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Descending);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288 for (int i = 0; i < 3; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 _testList.Insert(0, _testObjects[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 Assert.AreEqual(_testList.Count, 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 Assert.AreEqual(_testList[0], _testObjects[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 Assert.AreEqual(_testList[1], _testObjects[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294 Assert.AreEqual(_testList[2], _testObjects[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 EditableTestObject[] _subArray = new EditableTestObject[3];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298 for (int i = 3; i < _testObjects.Length; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 _subArray[i-3] = _testObjects[i];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 _testList.InsertRange(0, _subArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302 Assert.AreEqual(_testList.Count, 6);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304 Assert.AreEqual(_testList[0], _testObjects[3]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305 Assert.AreEqual(_testList[2], _testObjects[4]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 Assert.AreEqual(_testList[3], _testObjects[5]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 PrintList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311 Assert.AreEqual(_testList.Count, 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Ascending);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315 for (int i = 0; i < 3; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 _testList.Insert(0, _testObjects[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318 Assert.AreEqual(_testList.Count, 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319 Assert.AreEqual(_testList[0], _testObjects[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320 Assert.AreEqual(_testList[1], _testObjects[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321 Assert.AreEqual(_testList[2], _testObjects[2]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323 _testList.InsertRange(0, _subArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324 Assert.AreEqual(_testList.Count, 6);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
325
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
326 Assert.AreEqual(_testList[2], _testObjects[5]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
327 Assert.AreEqual(_testList[3], _testObjects[4]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
328 Assert.AreEqual(_testList[5], _testObjects[3]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
329
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
330 PrintList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
331
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
332 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
333 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
334
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
335 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
336 public void TestSortedPropertyChange()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
337 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
338 Console.WriteLine("--- TestSortedPropertyChange ---");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
339 _testList.Clear();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
340 _testList.RemoveSort();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
341 _testList.ApplySort(_testList.GetItemProperties(null)["Seconds"], ListSortDirection.Descending);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
342 _testList.AddRange(_testObjects);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
343
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
344 EditableTestObject eto = EditableTestObject.CreateInstance(6, "Dummy", 10);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
345
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
346 _testList.Add(eto);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
347 Assert.AreEqual(_testList.Count, 7);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
348 Assert.AreEqual(_testList[6], eto);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
349
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
350 eto.Seconds = 20;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
351 Assert.AreEqual(_testList[6], eto);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
352
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
353 eto.Seconds = 23;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
354 Assert.AreEqual(_testList[5], eto);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
355
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
356 eto.Seconds = 30;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
357 Assert.AreEqual(_testList[4], eto);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
358
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
359 eto.Seconds = 40;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
360 Assert.AreEqual(_testList[2], eto);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
361
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
362 eto.Seconds = 50;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
363 Assert.AreEqual(_testList[1], eto);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
364
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
365 eto.Seconds = 60;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
366 Assert.AreEqual(_testList[0], eto);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
367 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
368
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
369 private void PrintList()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
370 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
371 Console.WriteLine("--- Print List ---");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
372 foreach (EditableTestObject o in _testList)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
373 Console.WriteLine(o);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
374 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
375
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
376 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
377 public void SerializationTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
378 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
379 //Configuration.NotifyOnEqualSet = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
380
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
381 SerializableObject test = TypeAccessor<SerializableObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
382
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
383 MemoryStream stream = new MemoryStream();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
384 BinaryFormatter bf = new BinaryFormatter();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
385
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
386 bf.Serialize(stream, test);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
387
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
388 //Configuration.NotifyOnChangesOnly = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
389 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
390
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
391 //////[Test] Resharpe 8 issue
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
392 public void SerializationTest2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
393 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
394 //Configuration.NotifyOnChangesOnly = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
395
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
396 EditableList<SerializableObject> list = new EditableList<SerializableObject>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
397
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
398 list.Add(TypeAccessor<SerializableObject>.CreateInstance());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
399
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
400 BinaryFormatter formatter = new BinaryFormatter();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
401
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
402 using (MemoryStream stream = new MemoryStream())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
403 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
404 formatter.Serialize(stream, list);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
405 stream.Position = 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
406
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
407 object result = formatter.Deserialize(stream);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
408
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
409 Assert.IsNotNull(result);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
410
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
411 EditableList<SerializableObject> eal = (EditableList<SerializableObject>)result;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
412
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
413 Console.WriteLine(eal.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
414
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
415 eal.CollectionChanged += eal_CollectionChanged;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
416
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
417 eal[0].ID = 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
418 _notificationCount = 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
419 eal[0].ID = -100;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
420 eal[0].ID = -100;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
421 eal[0].ID = -100;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
422 eal[0].ID = -100;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
423 eal[0].ID = -100;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
424 eal[0].ID = -100;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
425
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
426 Console.WriteLine(eal.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
427
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
428 //Assert.AreEqual(_notificationCount, 1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
429 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
430
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
431 //Configuration.NotifyOnChangesOnly = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
432 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
433
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
434 private static int _notificationCount = 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
435
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
436 static void eal_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
437 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
438 Console.WriteLine(e.Action);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
439 _notificationCount++;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
440 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
441
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
442 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
443 public void SortTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
444 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
445 EditableList<EditableTestObject> dataList = new EditableList<EditableTestObject>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
446
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
447 dataList.Add(EditableTestObject.CreateInstance(1, "John", 60));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
448 dataList.Add(EditableTestObject.CreateInstance(1, "John", 60));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
449 dataList.Add(EditableTestObject.CreateInstance(1, "John", 60));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
450 dataList.Add(EditableTestObject.CreateInstance(2, "Tester", 70));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
451 dataList.Add(EditableTestObject.CreateInstance(2, "Tester", 70));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
452 dataList.Add(EditableTestObject.CreateInstance(2, "Tester", 70));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
453 dataList.Add(EditableTestObject.CreateInstance(3, "Tester", 70));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
454 dataList.Add(EditableTestObject.CreateInstance(3, "Tester", 70));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
455 dataList.Add(EditableTestObject.CreateInstance(3, "Tester", 70));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
456
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
457 BindingSource bindingSource = new BindingSource(dataList, null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
458 bindingSource.Sort = "ID";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
459
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
460 int prev = 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
461 foreach (EditableTestObject o in dataList)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
462 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
463 Assert.IsTrue(o.ID >= prev);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
464 prev = o.ID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
465 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
466
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
467 bindingSource[0] = EditableTestObject.CreateInstance(2, "John", 60);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
468
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
469 prev = 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
470 foreach (EditableTestObject o in dataList)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
471 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
472 Assert.IsTrue(o.ID >= prev);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
473 prev = o.ID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
474 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
475 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
476
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
477 public class DerivedEditableList<T> : EditableList<T>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
478 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
479 public event EventHandler OnListChangedCalled;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
480
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
481 protected void OnOnListChangedCalled()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
482 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
483 if (OnListChangedCalled != null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
484 OnListChangedCalled(this, EventArgs.Empty);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
485 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
486
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
487 protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
488 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
489 OnOnListChangedCalled();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
490 base.OnCollectionChanged(e);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
491 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
492 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
493
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
494
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
495 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
496 public void DerivedOnListChanged()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
497 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
498 bool called = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
499
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
500 DerivedEditableList<int> list = new DerivedEditableList<int>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
501 list.OnListChangedCalled += delegate
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
502 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
503 called = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
504 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
505
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
506 list.Add(1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
507
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
508 Assert.IsTrue(called);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
509 Assert.AreEqual(1, list.NewItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
510 Assert.AreEqual(1, list.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
511 Assert.AreEqual(0, list.DelItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
512
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
513 called = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
514 list.RemoveAt(0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
515
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
516 Assert.IsTrue(called);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
517 Assert.AreEqual(0, list.NewItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
518 Assert.AreEqual(0, list.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
519 Assert.AreEqual(0, list.DelItems.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
520 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
521
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
522 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
523 }