annotate UnitTests/CS/EditableObjects/EditableArrayListTest.cs @ 4:f757da6161a1

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