1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 // Copyright (c) 2006 Novell, Inc.
23 // Jackson Harper jackson@ximian.com
28 using System.Collections;
29 using System.ComponentModel;
30 using System.Windows.Forms;
32 using NUnit.Framework;
34 namespace MonoTests.System.Windows.Forms {
37 public class CurrencyManagerTest {
40 public void Defaults ()
42 BindingContext bc = new BindingContext ();
43 ArrayList data_source = new ArrayList ();
44 CurrencyManager cm = bc [data_source] as CurrencyManager;
46 Assert.AreSame (data_source, cm.List, "DEFAULTS1");
47 Assert.AreEqual (0, cm.Count, "DEFAULTS2");
48 Assert.AreEqual (-1, cm.Position, "DEFAULTS3");
52 [ExpectedException (typeof (IndexOutOfRangeException))]
53 public void UninitializedCurrent ()
55 BindingContext bc = new BindingContext ();
56 ArrayList data_source = new ArrayList ();
57 CurrencyManager cm = bc [data_source] as CurrencyManager;
59 // This line should throw
60 Assert.AreSame (null, cm.Current, "CurrentOfEmpty");
64 public void DataSetList ()
66 DataSet dataset = new DataSet ("DataSet");
67 DataTable table = new DataTable ("Table");
68 BindingContext bc = new BindingContext ();
71 dataset.Tables.Add (table);
72 cm = bc [dataset] as CurrencyManager;
74 Assert.AreEqual (typeof (DataViewManager), cm.List.GetType (), "DATASETLIST1");
75 Assert.AreEqual (1, cm.Count, "DATASETLIST2");
76 Assert.AreEqual (0, cm.Position, "DATASETLIST3");
77 // Assert.AreEqual (typeof (DataViewManagerListItemTypeDescriptor), cm.Current.GetType (),
82 public void DataSetListTable ()
84 DataSet dataset = new DataSet ("DataSet");
85 DataTable table = new DataTable ("Table");
86 BindingContext bc = new BindingContext ();
89 dataset.Tables.Add (table);
90 cm = bc [dataset, "Table"] as CurrencyManager;
92 Assert.AreEqual (typeof (DataView), cm.List.GetType (), "DATASETLIST1");
93 Assert.AreEqual (0, cm.Count, "DATASETLIST2");
94 Assert.AreEqual (-1, cm.Position, "DATASETLIST3");
98 [ExpectedException (typeof (ArgumentException))]
99 public void DataSetListTableBogusField ()
101 DataSet dataset = new DataSet ("DataSet");
102 DataTable table = new DataTable ("Table.Column");
103 BindingContext bc = new BindingContext ();
106 dataset.Tables.Add (table);
108 // child list can't be created
109 cm = bc [dataset, "Table"] as CurrencyManager;
113 public void MoveArrayListForward ()
115 ArrayList data_source = new ArrayList ();
116 BindingContext bc = new BindingContext ();
118 for (int i = 0; i < 10; i++)
119 data_source.Add (new object ());
121 CurrencyManager cm = bc [data_source] as CurrencyManager;
122 for (int i = 0; i < 10; i++) {
123 Assert.AreSame (data_source [i], cm.Current, "MOVEALF" + i);
130 Assert.AreSame (data_source [9], cm.Current, "MOVEALFEND");
134 public void MoveArrayListBackward ()
136 ArrayList data_source = new ArrayList ();
137 BindingContext bc = new BindingContext ();
139 for (int i = 0; i < 10; i++)
140 data_source.Add (new object ());
142 CurrencyManager cm = bc [data_source] as CurrencyManager;
144 for (int i = 9; i >= 0; i--) {
145 Assert.AreSame (data_source [i], cm.Current, "MOVEALB" + i);
152 Assert.AreSame (data_source [0], cm.Current, "MOVEALBSTART");
156 public void SetPositionArrayList ()
158 ArrayList data_source = new ArrayList ();
159 BindingContext bc = new BindingContext ();
161 for (int i = 0; i < 10; i++)
162 data_source.Add (new object ());
164 CurrencyManager cm = bc [data_source] as CurrencyManager;
165 for (int i = 3; i >= 0; i--) {
167 Assert.AreSame (data_source [i], cm.Current, "MOVEAL1-" + i);
172 for (int i = 0; i < 10; i++) {
174 Assert.AreSame (data_source [i], cm.Current, "MOVEAL2-" + i);
177 for (int i = 5; i < 10; i++) {
179 Assert.AreSame (data_source [i], cm.Current, "MOVEAL3-" + i);
184 public void LateBuildDataTable ()
186 DataTable data_source = new DataTable ("Table");
187 BindingContext bc = new BindingContext ();
188 CurrencyManager cm = bc [data_source] as CurrencyManager;
190 Assert.AreEqual (-1, cm.Position, "LATEBUILDTABLE1");
191 Assert.AreEqual (0, cm.Count, "LATEBUILDTABLE2");
193 DataColumn column = new DataColumn ("Column");
194 column.DataType = typeof (int);
195 data_source.Columns.Add (column);
197 for (int i = 0; i < 10; i++) {
198 DataRow row = data_source.NewRow ();
200 data_source.Rows.Add (row);
203 Assert.AreEqual (0, cm.Position, "LATEBUILDTABLE3");
204 Assert.AreEqual (10, cm.Count, "LATEBUILDTABLE4");
208 public void LateBuildArrayList ()
210 ArrayList data_source = new ArrayList ();
211 BindingContext bc = new BindingContext ();
212 CurrencyManager cm = bc [data_source] as CurrencyManager;
214 Assert.AreEqual (-1, cm.Position, "LATEBUILDLIST1");
215 Assert.AreEqual (0, cm.Count, "LATEBUILDLIST2");
217 data_source.AddRange (new object [] { 1, 2, 3, 4, 5, 6, 7 });
219 Assert.AreEqual (-1, cm.Position, "LATEBUILDLIST3");
220 Assert.AreEqual (7, cm.Count, "LATEBUILDLIST4");
224 public void MoveDataTableForward ()
226 DataTable data_source = new DataTable ("Table");
227 BindingContext bc = new BindingContext ();
228 CurrencyManager cm = bc [data_source] as CurrencyManager;
229 DataColumn column = new DataColumn ("Column");
231 column.DataType = typeof (int);
232 data_source.Columns.Add (column);
233 for (int i = 0; i < 10; i++) {
234 DataRow row = data_source.NewRow ();
236 data_source.Rows.Add (row);
240 for (int i = 0; i < 10; i++) {
241 DataRowView row = cm.Current as DataRowView;
242 Assert.IsFalse (row == null, "MOVETABLEF-NULL-" + i);
243 Assert.AreEqual (row ["Column"], i, "MOVETABLEF-" + i);
250 Assert.AreEqual (9, ((DataRowView) cm.Current) ["Column"], "MOVETABLEF-END");
254 public void MoveDataTableBackward ()
256 DataTable data_source = new DataTable ("Table");
257 BindingContext bc = new BindingContext ();
258 CurrencyManager cm = bc [data_source] as CurrencyManager;
259 DataColumn column = new DataColumn ("Column");
261 column.DataType = typeof (int);
262 data_source.Columns.Add (column);
263 for (int i = 0; i < 10; i++) {
264 DataRow row = data_source.NewRow ();
266 data_source.Rows.Add (row);
271 for (int i = 9; i >= 0; i--) {
272 DataRowView row = cm.Current as DataRowView;
273 Assert.IsFalse (row == null, "MOVETABLEB-NULL-" + i);
274 Assert.AreEqual (row ["Column"], i, "MOVETABLEB-" + i);
281 Assert.AreEqual (0, ((DataRowView) cm.Current) ["Column"], "MOVETABLEB-START");
285 public void SetPositionDataTable ()
287 DataTable data_source = new DataTable ("Table");
288 BindingContext bc = new BindingContext ();
289 CurrencyManager cm = bc [data_source] as CurrencyManager;
290 DataColumn column = new DataColumn ("Column");
292 column.DataType = typeof (int);
293 data_source.Columns.Add (column);
294 for (int i = 0; i < 10; i++) {
295 DataRow row = data_source.NewRow ();
297 data_source.Rows.Add (row);
301 for (int i = 5; i < 10; i++) {
303 DataRowView row = cm.Current as DataRowView;
304 Assert.IsFalse (row == null, "SETTABLE1-NULL-" + i);
305 Assert.AreEqual (row ["Column"], i, "SETTABLE1-" + i);
308 for (int i = 5; i >= 0; i--) {
310 DataRowView row = cm.Current as DataRowView;
311 Assert.IsFalse (row == null, "SETTABLE2-NULL-" + i);
312 Assert.AreEqual (row ["Column"], i, "SETTABLE2-" + i);
317 public void NavigateDataSetToTable ()
319 DataSet data_source = new DataSet ("DataSet");
320 DataTable table = new DataTable ("Table");
321 DataColumn column = new DataColumn ("Column");
322 BindingContext bc = new BindingContext ();
324 data_source.Tables.Add (table);
326 column.DataType = typeof (int);
327 table.Columns.Add (column);
328 for (int i = 0; i < 10; i++) {
329 DataRow row = table.NewRow ();
331 table.Rows.Add (row);
334 CurrencyManager cm = bc [data_source, "Table"] as CurrencyManager;
336 Assert.AreEqual (0, cm.Position, "NAVSETTOTABLE1");
337 Assert.AreEqual (10, cm.Count, "NAVSETTOTABLE2");
338 Assert.AreEqual (typeof (DataView), cm.List.GetType (), "NAVSETTOTABLE3");
340 for (int i = 0; i < 10; i++) {
341 DataRowView row = cm.Current as DataRowView;
342 Assert.IsFalse (row == null, "NAVSETTOTABLE-NULL-" + i);
343 Assert.AreEqual (i, row ["Column"], "NAVSETTOTABLE-" + i);
350 Assert.AreEqual (9, ((DataRowView) cm.Current) ["Column"], "NAVSETTOTABLE-END");
354 public void NavigateDataSetToColumn ()
356 DataSet data_source = new DataSet ("DataSet");
357 DataTable table = new DataTable ("Table");
358 DataColumn column = new DataColumn ("Column");
359 BindingContext bc = new BindingContext ();
361 data_source.Tables.Add (table);
363 column.DataType = typeof (int);
364 table.Columns.Add (column);
365 for (int i = 0; i < 10; i++) {
366 DataRow row = table.NewRow ();
368 table.Rows.Add (row);
371 CurrencyManager cm = bc [data_source, "Table.Column"] as CurrencyManager;
373 Assert.AreEqual (null, cm, "NAVSETTOCOLUMN1");
377 public void NavigateDataSetToParentRelation ()
379 DataSet data_source = CreateRelatedDataSet ();
380 BindingContext bc = new BindingContext ();
381 CurrencyManager cm = bc [data_source, "Table1.Relation"] as CurrencyManager;
383 Assert.AreEqual (0, cm.Position, "NAVSETTORELATION1");
384 Assert.AreEqual (1, cm.Count, "NAVSETTORELATION2");
385 Assert.IsTrue (cm.List is DataView, "NAVSETTORELATION3");
387 DataRowView row = cm.Current as DataRowView;
388 Assert.IsFalse (row == null, "NAVSETTORELATION-NULL-VALUE");
389 Assert.AreEqual (0, row ["Two"], "NAVSETTORELATION-VALUE");
394 Assert.AreEqual (0, ((DataRowView) cm.Current) ["Two"], "NAVSETTORELATION-END");
398 [ExpectedException (typeof (ArgumentException))]
399 public void DataSetToChildRelation ()
401 DataSet data_source = CreateRelatedDataSet ();
402 BindingContext bc = new BindingContext ();
404 // Can't create a list on a child relation
405 CurrencyManager cm = bc [data_source, "Table2.Relation"] as CurrencyManager;
409 public void DataSetToParentRelationField ()
411 DataSet data_source = CreateRelatedDataSet ();
412 BindingContext bc = new BindingContext ();
414 CurrencyManager cm = bc [data_source, "Table1.Relation.Two"] as CurrencyManager;
416 Assert.AreEqual (null, cm, "SETTOPARENTRELATIONFIELD");
420 public void MultiColumnedRelation ()
422 DataSet dataset = new DataSet ();
423 DataTable sports = new DataTable ("Sports");
424 DataTable athletes = new DataTable ("Athletes");
429 column = new DataColumn ();
430 column.DataType = typeof (int);
431 column.ColumnName = "SportID";
432 column.Unique = true;
433 sports.Columns.Add (column);
435 column = new DataColumn ();
436 column.DataType = typeof (string);
437 column.ColumnName = "SportName";
438 sports.Columns.Add (column);
441 string [] sports_names = new string [] { "Hockey", "Baseball", "Basketball", "Football", "Boxing", "Surfing" };
442 for (int i = 0; i < sports_names.Length; i++) {
443 row = sports.NewRow ();
445 row ["SportName"] = sports_names [i];
446 sports.Rows.Add (row);
451 column = new DataColumn ();
452 column.DataType = typeof (int);
453 column.ColumnName = "AthleteID";
454 column.Unique = true;
455 athletes.Columns.Add (column);
457 column = new DataColumn ();
458 column.DataType = typeof (int);
459 column.ColumnName = "Sport";
460 athletes.Columns.Add (column);
462 column = new DataColumn ();
463 column.DataType = typeof (string);
464 column.ColumnName = "AthleteName";
465 athletes.Columns.Add (column);
467 string [] athlete_names = new string [] { "@alp", "@lupus", "@tjfontaine", "duncan", "marv", "WindowsUninstall",
468 "@jackson", "@migHome", "_Synced[work]", "GodZhila", "Raboo",
469 "@jchambers", "@mkestner", "barbosa", "IzeBurn", "squinky86",
470 "@kangaroo", "@paco", "Demian", "logiclrd", "tenshiKur0" };
471 for (int i = 0; i < athlete_names.Length; i++) {
472 row = athletes.NewRow ();
473 row ["AthleteID"] = i;
474 row ["Sport"] = i % sports_names.Length;
475 row ["AthleteName"] = athlete_names [i];
476 athletes.Rows.Add (row);
479 dataset.Tables.Add (sports);
480 dataset.Tables.Add (athletes);
481 dataset.Relations.Add ("AthletesSports", sports.Columns ["SportID"], athletes.Columns ["Sport"]);
483 BindingContext bc = new BindingContext ();
484 CurrencyManager cm = bc [dataset, "Sports.AthletesSports"] as CurrencyManager;
486 Assert.AreEqual (0, cm.Position, "MC1");
487 Assert.AreEqual (4, cm.Count, "MC2");
489 DataRowView rowview = cm.Current as DataRowView;
490 Assert.IsFalse (rowview == null, "MC3");
491 Assert.AreEqual (0, rowview ["AthleteID"], "MC4");
492 Assert.AreEqual ("@alp", rowview ["AthleteName"], "MC5");
493 Assert.AreEqual (0, rowview ["Sport"], "MC6");
497 rowview = cm.Current as DataRowView;
498 Assert.IsFalse (rowview == null, "MC7");
499 Assert.AreEqual (6, rowview ["AthleteID"], "MC8");
500 Assert.AreEqual ("@jackson", rowview ["AthleteName"], "MC9");
501 Assert.AreEqual (0, rowview ["Sport"], "MC10");
505 rowview = cm.Current as DataRowView;
506 Assert.IsFalse (rowview == null, "MC11");
507 Assert.AreEqual (12, rowview ["AthleteID"], "MC12");
508 Assert.AreEqual ("@mkestner", rowview ["AthleteName"], "MC13");
509 Assert.AreEqual (0, rowview ["Sport"], "MC14");
513 rowview = cm.Current as DataRowView;
514 Assert.IsFalse (rowview == null, "MC15");
515 Assert.AreEqual (18, rowview ["AthleteID"], "MC16");
516 Assert.AreEqual ("Demian", rowview ["AthleteName"], "MC17");
517 Assert.AreEqual (0, rowview ["Sport"], "MC18");
521 rowview = cm.Current as DataRowView;
522 Assert.IsFalse (rowview == null, "MC19");
523 Assert.AreEqual (18, rowview ["AthleteID"], "MC20");
524 Assert.AreEqual ("Demian", rowview ["AthleteName"], "MC21");
525 Assert.AreEqual (0, rowview ["Sport"], "MC22");
528 private DataSet CreateRelatedDataSet ()
530 DataSet dataset = new DataSet ("DataSet");
531 DataTable dt1 = new DataTable ("Table1");
532 DataTable dt2 = new DataTable ("Table2");
535 column = new DataColumn ("One");
536 column.DataType = typeof (int);
537 column.Unique = true;
538 dt1.Columns.Add (column);
540 for (int i = 0; i < 10; i++) {
541 DataRow row = dt1.NewRow ();
546 column = new DataColumn ("Two");
547 column.DataType = typeof (int);
548 column.Unique = true;
549 dt2.Columns.Add (column);
551 for (int i = 0; i < 10; i++) {
552 DataRow row = dt2.NewRow ();
557 dataset.Tables.Add (dt1);
558 dataset.Tables.Add (dt2);
559 dataset.Relations.Add ("Relation", dt1.Columns ["One"], dt2.Columns ["Two"]);
565 public void EndUninitializedEdit ()
567 ArrayList list = new ArrayList ();
568 BindingContext bc = new BindingContext ();
569 CurrencyManager cm = bc [list] as CurrencyManager;
571 cm.EndCurrentEdit ();
575 public void CancelUninitializedEdit ()
577 ArrayList list = new ArrayList ();
578 BindingContext bc = new BindingContext ();
579 CurrencyManager cm = bc [list] as CurrencyManager;
581 cm.CancelCurrentEdit ();
585 public void CheckPositionOfRelatedSibling1 ()
587 DataSet data_source = CreateRelatedDataSet ();
588 BindingContext bc = new BindingContext ();
589 CurrencyManager cm = bc [data_source, "Table1.Relation"] as CurrencyManager;
590 CurrencyManager scm = bc [data_source, "Table1"] as CurrencyManager;
595 // position is not updated
596 Assert.AreEqual (0, scm.Position, "#8");
600 public void CheckPositionOfRelatedSibling2 ()
602 DataSet data_source = CreateRelatedDataSet ();
603 BindingContext bc = new BindingContext ();
604 CurrencyManager cm = bc [data_source, "Table1.Relation"] as CurrencyManager;
605 CurrencyManager scm = bc [data_source, "Table1"] as CurrencyManager;
607 Assert.AreEqual (0, cm.Position, "#1");
611 Assert.AreEqual (0, cm.Position, "#2");
616 int position_changed;
618 ItemChangedEventArgs item_changed_args;
620 void CurrentChanged (object sender, EventArgs args) { current_changed = ++event_num; /*Console.WriteLine ("current_changed = {0}", current_changed); Console.WriteLine (Environment.StackTrace);*/ }
621 void PositionChanged (object sender, EventArgs args) { position_changed = ++event_num; /*Console.WriteLine ("position_changed = {0}", position_changed); Console.WriteLine (Environment.StackTrace);*/}
622 void ItemChanged (object sender, ItemChangedEventArgs args) { item_changed = ++event_num; item_changed_args = args; /*Console.WriteLine ("item_changed = {0}, index = {1}", item_changed, args.Index); Console.WriteLine (Environment.StackTrace);*/ }
623 void ListChanged (object sender, ListChangedEventArgs args) { /*Console.WriteLine ("ListChanged ({0},{1},{2})", args.ListChangedType, args.OldIndex, args.NewIndex); Console.WriteLine (Environment.StackTrace);*/ }
626 public void AddNew ()
628 DataSet data_source = CreateRelatedDataSet ();
629 BindingContext bc = new BindingContext ();
630 CurrencyManager cm = bc [data_source, "Table1"] as CurrencyManager;
632 event_num = current_changed = position_changed = -1;
633 cm.CurrentChanged += new EventHandler (CurrentChanged);
634 cm.PositionChanged += new EventHandler (PositionChanged);
635 cm.ItemChanged += new ItemChangedEventHandler (ItemChanged);
637 Assert.AreEqual (0, cm.Position, "AddNew1");
638 Assert.AreEqual (10, cm.Count, "AddNew2");
642 Assert.AreEqual (10, cm.Position, "AddNew3");
643 Assert.AreEqual (11, cm.Count, "AddNew4");
645 Assert.AreEqual (0, item_changed, "AddNew5");
646 Assert.AreEqual (-1, item_changed_args.Index, "AddNew6");
647 Assert.AreEqual (1, current_changed, "AddNew7");
648 Assert.AreEqual (2, position_changed, "AddNew8");
650 cm.CurrentChanged -= new EventHandler (CurrentChanged);
651 cm.PositionChanged -= new EventHandler (PositionChanged);
655 public void CancelAddNew ()
657 DataSet data_source = CreateRelatedDataSet ();
658 BindingContext bc = new BindingContext ();
659 CurrencyManager cm = bc [data_source, "Table1"] as CurrencyManager;
661 DataView dv = cm.List as DataView;
663 event_num = current_changed = position_changed = -1;
664 cm.CurrentChanged += new EventHandler (CurrentChanged);
665 cm.PositionChanged += new EventHandler (PositionChanged);
666 cm.ItemChanged += new ItemChangedEventHandler (ItemChanged);
667 dv.ListChanged += new ListChangedEventHandler (ListChanged);
669 Assert.AreEqual (0, cm.Position, "CancelAddNew1");
670 Assert.AreEqual (10, cm.Count, "CancelAddNew2");
674 Assert.AreEqual (0, item_changed, "CancelAddNew3");
675 Assert.AreEqual (-1, item_changed_args.Index, "CancelAddNew4");
676 Assert.AreEqual (1, current_changed, "CancelAddNew5");
677 Assert.AreEqual (2, position_changed, "CancelAddNew6");
679 cm.CancelCurrentEdit ();
681 Assert.AreEqual (6, item_changed, "CancelAddNew7");
682 Assert.AreEqual (9, item_changed_args.Index, "CancelAddNew8");
683 Assert.AreEqual (3, current_changed, "CancelAddNew9");
684 Assert.AreEqual (4, position_changed, "CancelAddNew10");
686 Assert.AreEqual (9, cm.Position, "CancelAddNew11");
687 Assert.AreEqual (10, cm.Count, "CancelAddNew12");
689 cm.CurrentChanged -= new EventHandler (CurrentChanged);
690 cm.PositionChanged -= new EventHandler (PositionChanged);
694 public void EndAddNew ()
696 DataSet data_source = CreateRelatedDataSet ();
697 BindingContext bc = new BindingContext ();
698 CurrencyManager cm = bc [data_source, "Table1"] as CurrencyManager;
700 event_num = current_changed = position_changed = -1;
701 cm.CurrentChanged += new EventHandler (CurrentChanged);
702 cm.PositionChanged += new EventHandler (PositionChanged);
703 cm.ItemChanged += new ItemChangedEventHandler (ItemChanged);
705 Assert.AreEqual (0, cm.Position, "EndAddNew1");
706 Assert.AreEqual (10, cm.Count, "EndAddNew2");
710 Assert.AreEqual (0, item_changed, "EndAddNew3");
711 Assert.AreEqual (-1, item_changed_args.Index, "EndAddNew4");
712 Assert.AreEqual (1, current_changed, "EndAddNew5");
713 Assert.AreEqual (2, position_changed, "EndAddNew6");
715 cm.EndCurrentEdit ();
717 // Assert.AreEqual (3, item_changed, "EndAddNew7");
718 // Assert.AreEqual (-1, item_changed_args.Index, "EndAddNew8");
719 Assert.AreEqual (1, current_changed, "EndAddNew9");
720 Assert.AreEqual (2, position_changed, "EndAddNew10");
722 Assert.AreEqual (10, cm.Position, "EndAddNew11");
723 Assert.AreEqual (11, cm.Count, "EndAddNew12");
725 cm.CurrentChanged -= new EventHandler (CurrentChanged);
726 cm.PositionChanged -= new EventHandler (PositionChanged);
730 public void AddNew2 ()
732 DataSet data_source = CreateRelatedDataSet ();
733 BindingContext bc = new BindingContext ();
734 CurrencyManager cm = bc [data_source, "Table1"] as CurrencyManager;
736 DataView dv = cm.List as DataView;
738 event_num = current_changed = position_changed = -1;
739 cm.CurrentChanged += new EventHandler (CurrentChanged);
740 cm.PositionChanged += new EventHandler (PositionChanged);
741 cm.ItemChanged += new ItemChangedEventHandler (ItemChanged);
742 dv.ListChanged += new ListChangedEventHandler (ListChanged);
744 Assert.AreEqual (0, cm.Position, "AddNew1");
745 Assert.AreEqual (10, cm.Count, "AddNew2");
749 Assert.AreEqual (10, cm.Position, "AddNew3");
750 Assert.AreEqual (11, cm.Count, "AddNew4");
752 // this does an implicit EndCurrentEdit
755 Assert.AreEqual (11, cm.Position, "AddNew5");
756 Assert.AreEqual (12, cm.Count, "AddNew6");