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) 2007 Novell, Inc.
23 // Chris Toshok toshok@ximian.com
28 using System
.Collections
;
29 using System
.ComponentModel
;
31 using System
.Reflection
;
32 using System
.Windows
.Forms
;
34 using NUnit
.Framework
;
35 using CategoryAttribute
= NUnit
.Framework
.CategoryAttribute
;
37 namespace MonoTests
.System
.Windows
.Forms
.DataBinding
39 public class DataBindingTest
41 protected int event_num
;
42 protected string event_log
= "";
44 protected void CurrentChanged (object sender
, EventArgs args
)
46 Console
.WriteLine (Environment
.StackTrace
);
47 event_log
+= String
.Format ("{0}: CurrentChanged\n", event_num
++);
49 protected void PositionChanged (object sender
, EventArgs args
)
51 Console
.WriteLine (Environment
.StackTrace
);
52 event_log
+= String
.Format ("{0}: PositionChanged (to {1})\n", event_num
++, ((CurrencyManager
)sender
).Position
);
54 protected void ItemChanged (object sender
, ItemChangedEventArgs args
)
56 Console
.WriteLine (Environment
.StackTrace
);
57 event_log
+= String
.Format ("{0}: ItemChanged (index = {1})\n", event_num
++, args
.Index
);
59 protected void ListChanged (object sender
, ListChangedEventArgs args
)
61 Console
.WriteLine (Environment
.StackTrace
);
62 event_log
+= String
.Format ("{0}: ListChanged ({1}, {2}, {3})\n", event_num
++, args
.ListChangedType
, args
.OldIndex
, args
.NewIndex
);
64 protected void MetaDataChanged (object sender
, EventArgs args
)
66 Console
.WriteLine (Environment
.StackTrace
);
67 event_log
+= String
.Format ("{0}: MetaDataChanged\n", event_num
++);
70 protected void BindingComplete (object sender
, BindingCompleteEventArgs args
)
72 Console
.WriteLine (Environment
.StackTrace
);
73 event_log
+= String
.Format ("{0}: BindingComplete\n", event_num
++);
75 protected void CurrentItemChanged (object sender
, EventArgs args
)
77 Console
.WriteLine (Environment
.StackTrace
);
78 event_log
+= String
.Format ("{0}: CurrentItemChanged\n", event_num
++);
80 protected void DataError (object sender
, BindingManagerDataErrorEventArgs args
)
82 Console
.WriteLine (Environment
.StackTrace
);
83 event_log
+= String
.Format ("{0}: DataError\n", event_num
++);
86 protected void Format (object sender
, ConvertEventArgs args
)
88 Console
.WriteLine (Environment
.StackTrace
);
89 event_log
+= String
.Format ("{0}: Binding.Format\n", event_num
++);
91 protected void Parse (object sender
, ConvertEventArgs args
)
93 Console
.WriteLine (Environment
.StackTrace
);
94 event_log
+= String
.Format ("{0}: Binding.Parse\n", event_num
++);
97 void TextChanged (object sender
, EventArgs e
)
99 Console
.WriteLine (Environment
.StackTrace
);
100 event_log
+= String
.Format ("{0}: TextChanged\n", event_num
++);
103 protected void HookupCurrencyManager (CurrencyManager cm
)
105 cm
.CurrentChanged
+= new EventHandler (CurrentChanged
);
106 cm
.PositionChanged
+= new EventHandler (PositionChanged
);
107 cm
.ItemChanged
+= new ItemChangedEventHandler (ItemChanged
);
108 cm
.MetaDataChanged
+= new EventHandler (MetaDataChanged
);
110 cm
.BindingComplete
+= new BindingCompleteEventHandler (BindingComplete
);
111 cm
.CurrentItemChanged
+= new EventHandler (CurrentItemChanged
);
112 cm
.DataError
+= new BindingManagerDataErrorEventHandler (DataError
);
116 protected void HookupPropertyManager (PropertyManager pm
)
118 pm
.CurrentChanged
+= new EventHandler (CurrentChanged
);
119 pm
.PositionChanged
+= new EventHandler (PositionChanged
);
121 pm
.BindingComplete
+= new BindingCompleteEventHandler (BindingComplete
);
122 pm
.CurrentItemChanged
+= new EventHandler (CurrentItemChanged
);
123 pm
.DataError
+= new BindingManagerDataErrorEventHandler (DataError
);
127 protected void HookupBinding (Binding b
)
129 b
.Parse
+= new ConvertEventHandler (Parse
);
130 b
.Format
+= new ConvertEventHandler (Format
);
133 protected void HookupControl (Control c
)
135 c
.TextChanged
+= new EventHandler (TextChanged
);
140 public class CurrencyManagerTest2
: DataBindingTest
143 public void TestDeleteOnlyRow ()
145 Control c
= new Control ();
150 DataSet dataSet1
= new DataSet();
151 dataSet1
.Tables
.Add();
152 dataSet1
.Tables
[0].Columns
.Add();
154 DataRow newrow
= dataSet1
.Tables
[0].NewRow ();
155 dataSet1
.Tables
[0].Rows
.Add(newrow
);
157 c
.BindingContext
= new BindingContext ();
158 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
159 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
161 HookupCurrencyManager (cm
);
162 HookupBinding (binding
);
166 Assert
.AreEqual (1, cm
.Count
, "1");
168 DataRowView row
= (DataRowView
)cm
.Current
;
175 Console
.WriteLine (event_log
);
179 "0: PositionChanged (to -1)\n1: ItemChanged (index = -1)\n2: PositionChanged (to -1)\n3: CurrentChanged\n4: CurrentItemChanged\n5: ItemChanged (index = -1)\n"
181 "0: PositionChanged (to -1)\n1: ItemChanged (index = -1)\n2: ItemChanged (index = -1)\n"
185 Assert
.AreEqual (0, cm
.Count
, "3");
189 public void TestDeleteRowBeforeCurrent ()
191 Control c
= new Control ();
197 DataSet dataSet1
= new DataSet();
198 dataSet1
.Tables
.Add();
199 dataSet1
.Tables
[0].Columns
.Add();
201 newrow
= dataSet1
.Tables
[0].NewRow ();
202 dataSet1
.Tables
[0].Rows
.Add(newrow
);
204 newrow
= dataSet1
.Tables
[0].NewRow ();
205 dataSet1
.Tables
[0].Rows
.Add(newrow
);
207 c
.BindingContext
= new BindingContext ();
208 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
209 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
211 HookupCurrencyManager (cm
);
213 HookupBinding (binding
);
218 Assert
.AreEqual (2, cm
.Count
, "1");
220 DataView dv
= dataSet1
.Tables
[0].DefaultView
;
221 DataRowView row
= dv
[0];
228 Console
.WriteLine (event_log
);
234 "0: CurrentChanged\n1: CurrentItemChanged\n2: PositionChanged (to 0)\n3: ItemChanged (index = -1)\n4: Binding.Format\n"
236 "0: CurrentChanged\n1: CurrentItemChanged\n2: PositionChanged (to 0)\n3: ItemChanged (index = -1)\n"
240 "0: CurrentChanged\n1: PositionChanged (to 0)\n2: ItemChanged (index = -1)\n3: Binding.Format\n"
242 "0: CurrentChanged\n1: PositionChanged (to 0)\n2: ItemChanged (index = -1)\n"
249 public void TestDeleteRowAfterCurrent ()
251 Control c
= new Control ();
257 DataSet dataSet1
= new DataSet();
258 dataSet1
.Tables
.Add();
259 dataSet1
.Tables
[0].Columns
.Add();
261 newrow
= dataSet1
.Tables
[0].NewRow ();
262 dataSet1
.Tables
[0].Rows
.Add(newrow
);
264 newrow
= dataSet1
.Tables
[0].NewRow ();
265 dataSet1
.Tables
[0].Rows
.Add(newrow
);
267 c
.BindingContext
= new BindingContext ();
268 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
269 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
271 HookupCurrencyManager (cm
);
273 HookupBinding (binding
);
278 Assert
.AreEqual (2, cm
.Count
, "1");
280 DataView dv
= dataSet1
.Tables
[0].DefaultView
;
281 DataRowView row
= dv
[1];
288 Console
.WriteLine (event_log
);
291 Assert
.AreEqual ("0: ItemChanged (index = -1)\n1: Binding.Format\n", event_log
, "2");
293 Assert
.AreEqual ("0: ItemChanged (index = -1)\n", event_log
, "2");
296 Assert
.AreEqual (1, cm
.Count
, "3");
300 public void TestDeleteCurrentRowWithOthers ()
302 Control c
= new Control ();
308 DataSet dataSet1
= new DataSet();
309 dataSet1
.Tables
.Add();
310 dataSet1
.Tables
[0].Columns
.Add();
312 newrow
= dataSet1
.Tables
[0].NewRow ();
313 dataSet1
.Tables
[0].Rows
.Add(newrow
);
315 newrow
= dataSet1
.Tables
[0].NewRow ();
316 dataSet1
.Tables
[0].Rows
.Add(newrow
);
318 c
.BindingContext
= new BindingContext ();
319 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
320 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
322 HookupCurrencyManager (cm
);
324 HookupBinding (binding
);
328 Assert
.AreEqual (2, cm
.Count
, "1");
330 DataView dv
= dataSet1
.Tables
[0].DefaultView
;
331 DataRowView row
= dv
[0];
338 Console
.WriteLine (event_log
);
343 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: Binding.Format\n"
345 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n"
349 "0: CurrentChanged\n1: ItemChanged (index = -1)\n2: Binding.Format\n"
351 "0: CurrentChanged\n1: ItemChanged (index = -1)\n"
356 Assert
.AreEqual (1, cm
.Count
, "3");
360 public void TestAddFirstRow ()
362 if (TestHelper
.RunningOnUnix
) {
363 Assert
.Ignore ("Fails at the moment");
366 Control c
= new Control ();
371 DataSet dataSet1
= new DataSet();
372 dataSet1
.Tables
.Add();
373 dataSet1
.Tables
[0].Columns
.Add();
375 c
.BindingContext
= new BindingContext ();
376 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
377 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
379 HookupCurrencyManager (cm
);
381 HookupBinding (binding
);
386 Assert
.AreEqual (0, cm
.Count
, "1");
391 DataRow newrow
= dataSet1
.Tables
[0].NewRow ();
392 dataSet1
.Tables
[0].Rows
.Add(newrow
);
394 Console
.WriteLine (event_log
);
399 "0: PositionChanged (to 0)\n1: CurrentChanged\n2: CurrentItemChanged\n3: ItemChanged (index = -1)\n4: ItemChanged (index = -1)\n5: Binding.Format\n6: Binding.Format\n7: Binding.Format\n"
401 "0: PositionChanged (to 0)\n1: CurrentChanged\n2: CurrentItemChanged\n3: ItemChanged (index = -1)\n4: ItemChanged (index = -1)\n"
405 "0: PositionChanged (to 0)\n1: CurrentChanged\n2: ItemChanged (index = -1)\n3: ItemChanged (index = -1)\n4: Binding.Format\n5: Binding.Format\n6: Binding.Format\n"
407 "0: PositionChanged (to 0)\n1: CurrentChanged\n2: ItemChanged (index = -1)\n3: ItemChanged (index = -1)\n"
412 Assert
.AreEqual (1, cm
.Count
, "3");
416 public void TestAppendRowAfterCurrent ()
418 Control c
= new Control ();
423 DataSet dataSet1
= new DataSet();
424 dataSet1
.Tables
.Add();
425 dataSet1
.Tables
[0].Columns
.Add();
427 c
.BindingContext
= new BindingContext ();
428 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
429 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
431 HookupCurrencyManager (cm
);
433 HookupBinding (binding
);
438 Assert
.AreEqual (0, cm
.Count
, "1");
440 DataRow newrow
= dataSet1
.Tables
[0].NewRow ();
441 dataSet1
.Tables
[0].Rows
.Add(newrow
);
446 newrow
= dataSet1
.Tables
[0].NewRow ();
447 dataSet1
.Tables
[0].Rows
.Add(newrow
);
449 Console
.WriteLine (event_log
);
452 Assert
.AreEqual ("0: ItemChanged (index = -1)\n1: Binding.Format\n", event_log
, "2");
454 Assert
.AreEqual ("0: ItemChanged (index = -1)\n", event_log
, "2");
457 Assert
.AreEqual (2, cm
.Count
, "3");
461 public void TestInsertRowBeforeCurrent ()
465 if (TestHelper
.RunningOnUnix
) {
466 Assert
.Ignore ("Too many Binding.Format events here");
470 Control c
= new Control ();
475 DataSet dataSet1
= new DataSet();
476 dataSet1
.Tables
.Add();
477 dataSet1
.Tables
[0].Columns
.Add();
479 c
.BindingContext
= new BindingContext ();
480 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
481 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
484 DataRow newrow
= dataSet1
.Tables
[0].NewRow ();
485 dataSet1
.Tables
[0].Rows
.Add(newrow
);
486 newrow
= dataSet1
.Tables
[0].NewRow ();
487 dataSet1
.Tables
[0].Rows
.Add(newrow
);
489 Assert
.AreEqual (2, cm
.Count
, "1");
493 HookupCurrencyManager (cm
);
495 HookupBinding (binding
);
501 newrow
= dataSet1
.Tables
[0].NewRow ();
502 dataSet1
.Tables
[0].Rows
.InsertAt(newrow
, 0);
504 Console
.WriteLine (event_log
);
509 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: PositionChanged (to 2)\n4: Binding.Format\n"
511 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: PositionChanged (to 2)\n"
515 "0: ItemChanged (index = -1)\n1: Binding.Format\n"
517 "0: ItemChanged (index = -1)\n"
522 Assert
.AreEqual (3, cm
.Count
, "3");
526 public void TestInsertRowAtCurrent ()
528 Control c
= new Control ();
533 DataSet dataSet1
= new DataSet();
534 dataSet1
.Tables
.Add();
535 dataSet1
.Tables
[0].Columns
.Add();
537 c
.BindingContext
= new BindingContext ();
538 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
539 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
541 HookupCurrencyManager (cm
);
543 HookupBinding (binding
);
547 DataRow newrow
= dataSet1
.Tables
[0].NewRow ();
548 dataSet1
.Tables
[0].Rows
.Add(newrow
);
549 newrow
= dataSet1
.Tables
[0].NewRow ();
550 dataSet1
.Tables
[0].Rows
.Add(newrow
);
552 Assert
.AreEqual (2, cm
.Count
, "1");
559 newrow
= dataSet1
.Tables
[0].NewRow ();
560 dataSet1
.Tables
[0].Rows
.InsertAt(newrow
, 1);
562 Console
.WriteLine (event_log
);
567 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: PositionChanged (to 2)\n4: Binding.Format\n"
569 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: PositionChanged (to 2)\n"
573 "0: ItemChanged (index = -1)\n1: Binding.Format\n"
575 "0: ItemChanged (index = -1)\n"
580 Assert
.AreEqual (3, cm
.Count
, "3");
584 public void TestColumnAdd ()
587 if (TestHelper
.RunningOnUnix
) {
588 Assert
.Ignore ("in 1.1, DataView emits 2 MetadataChanged events per column add. fix in System.Data");
592 Control c
= new Control ();
597 DataSet dataSet1
= new DataSet();
598 dataSet1
.Tables
.Add();
599 dataSet1
.Tables
[0].Columns
.Add();
601 c
.BindingContext
= new BindingContext ();
602 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
603 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
605 HookupCurrencyManager (cm
);
606 HookupBinding (binding
);
610 Assert
.AreEqual (0, cm
.Count
, "1");
615 dataSet1
.Tables
[0].Columns
.Add();
617 Console
.WriteLine (event_log
);
620 Assert
.AreEqual ("0: MetaDataChanged\n", event_log
, "2");
622 Assert
.AreEqual ("0: MetaDataChanged\n1: MetaDataChanged\n", event_log
, "2");
624 Assert
.AreEqual (0, cm
.Count
, "3");
628 public void TestColumnRemove ()
630 Control c
= new Control ();
635 DataSet dataSet1
= new DataSet();
636 dataSet1
.Tables
.Add();
637 dataSet1
.Tables
[0].Columns
.Add();
638 dataSet1
.Tables
[0].Columns
.Add();
640 c
.BindingContext
= new BindingContext ();
641 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
642 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
644 HookupCurrencyManager (cm
);
645 HookupBinding (binding
);
649 Assert
.AreEqual (0, cm
.Count
, "1");
654 dataSet1
.Tables
[0].Columns
.Remove(dataSet1
.Tables
[0].Columns
[1]);
656 Console
.WriteLine (event_log
);
658 Assert
.AreEqual ("0: MetaDataChanged\n", event_log
, "2");
660 Assert
.AreEqual (0, cm
.Count
, "3");
664 public void TestColumnRemoveBound ()
666 Control c
= new Control ();
671 DataSet dataSet1
= new DataSet();
672 dataSet1
.Tables
.Add();
673 dataSet1
.Tables
[0].Columns
.Add();
674 dataSet1
.Tables
[0].Columns
.Add();
676 c
.BindingContext
= new BindingContext ();
677 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
678 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
680 HookupCurrencyManager (cm
);
681 HookupBinding (binding
);
685 Assert
.IsFalse (binding
.IsBinding
, "1");
686 Assert
.AreEqual (0, cm
.Count
, "2");
691 dataSet1
.Tables
[0].Columns
.Remove(dataSet1
.Tables
[0].Columns
[0]);
693 Console
.WriteLine (event_log
);
695 Assert
.AreEqual ("0: MetaDataChanged\n", event_log
, "3");
697 Assert
.AreEqual (0, cm
.Count
, "4");
699 Assert
.IsFalse (binding
.IsBinding
, "5");
703 public void TestColumnChangeName ()
705 Control c
= new Control ();
710 DataSet dataSet1
= new DataSet();
711 dataSet1
.Tables
.Add();
713 dataSet1
.Tables
[0].Columns
.CollectionChanged
+= new CollectionChangeEventHandler (
714 DataColumnCollection_CollectionChanged
);
716 dataSet1
.Tables
[0].Columns
.Add();
718 c
.BindingContext
= new BindingContext ();
719 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
720 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
722 HookupCurrencyManager (cm
);
723 HookupBinding (binding
);
727 Assert
.IsFalse (binding
.IsBinding
, "1");
728 Assert
.AreEqual (0, cm
.Count
, "2");
733 dataSet1
.Tables
[0].DefaultView
.ListChanged
+= new ListChangedEventHandler (
734 DataView_ListChanged
);
736 dataSet1
.Tables
[0].Columns
[0].ColumnName
= "new name";
738 Console
.WriteLine (event_log
);
740 Assert
.AreEqual ("0: MetaDataChanged\n", event_log
, "3");
742 Assert
.AreEqual (0, cm
.Count
, "4");
744 Assert
.IsFalse (binding
.IsBinding
, "5");
747 void DataColumnCollection_CollectionChanged (object sender
, CollectionChangeEventArgs e
)
749 Console
.WriteLine ("collection changed : {0} {1}", e
.Action
, e
.Element
.GetType());
752 void DataView_ListChanged (object sender
, ListChangedEventArgs e
)
754 Console
.WriteLine ("list changed : {0} {1} {2}", e
.ListChangedType
, e
.OldIndex
, e
.NewIndex
);
758 public void TestRowModify ()
760 Control c
= new Control ();
766 DataSet dataSet1
= new DataSet();
767 dataSet1
.Tables
.Add();
768 dataSet1
.Tables
[0].Columns
.Add();
770 DataRow newrow
= dataSet1
.Tables
[0].NewRow ();
771 dataSet1
.Tables
[0].Rows
.Add(newrow
);
773 column_name
= dataSet1
.Tables
[0].Columns
[0].ColumnName
;
775 c
.BindingContext
= new BindingContext ();
776 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
778 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], column_name
);
780 HookupCurrencyManager (cm
);
782 HookupBinding (binding
);
786 Assert
.AreEqual (1, cm
.Count
, "1");
791 DataRowView row
= (DataRowView
)cm
.Current
;
793 row
[column_name
] = "hi";
796 Console
.WriteLine (event_log
);
801 "0: CurrentItemChanged\n1: ItemChanged (index = 0)\n2: Binding.Format\n"
803 "0: CurrentItemChanged\n1: ItemChanged (index = 0)\n"
807 "0: ItemChanged (index = 0)\n1: Binding.Format\n"
809 "0: ItemChanged (index = 0)\n"
814 Assert
.AreEqual (1, cm
.Count
, "3");
818 public void TestRowCancelModify ()
820 Control c
= new Control ();
826 DataSet dataSet1
= new DataSet();
827 dataSet1
.Tables
.Add();
828 dataSet1
.Tables
[0].Columns
.Add();
830 DataRow newrow
= dataSet1
.Tables
[0].NewRow ();
831 dataSet1
.Tables
[0].Rows
.Add(newrow
);
833 column_name
= dataSet1
.Tables
[0].Columns
[0].ColumnName
;
835 c
.BindingContext
= new BindingContext ();
836 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
838 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], column_name
);
840 HookupCurrencyManager (cm
);
841 HookupBinding (binding
);
845 Assert
.AreEqual (1, cm
.Count
, "1");
850 DataRowView row
= (DataRowView
)cm
.Current
;
852 row
[column_name
] = "hi";
853 cm
.CancelCurrentEdit ();
855 Console
.WriteLine (event_log
);
856 Assert
.AreEqual ("0: ItemChanged (index = 0)\n", event_log
, "2");
858 Assert
.AreEqual (1, cm
.Count
, "3");
863 public void TestDeleteInEdit ()
865 Control c
= new Control ();
868 BindingContext bc
= new BindingContext ();
871 DataSet dataSet1
= new DataSet();
872 dataSet1
.Tables
.Add();
873 dataSet1
.Tables
[0].Columns
.Add();
875 DataRow newrow
= dataSet1
.Tables
[0].NewRow ();
876 dataSet1
.Tables
[0].Rows
.Add(newrow
);
878 cm
= (CurrencyManager
) bc
[dataSet1
, dataSet1
.Tables
[0].TableName
];
879 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
881 Assert
.AreEqual (1, cm
.Count
, "1");
883 HookupCurrencyManager (cm
);
885 HookupBinding (binding
);
893 DataRowView row
= (DataRowView
)cm
.Current
;
896 Console
.WriteLine (event_log
);
900 "0: PositionChanged (to -1)\n1: ItemChanged (index = -1)\n2: PositionChanged (to -1)\n3: CurrentChanged\n4: CurrentItemChanged\n5: ItemChanged (index = -1)\n"
902 "0: PositionChanged (to -1)\n1: ItemChanged (index = -1)\n2: ItemChanged (index = -1)\n"
906 Assert
.AreEqual (0, cm
.Count
, "2");
910 public void Bug81022 ()
912 if (TestHelper
.RunningOnUnix
) {
913 Assert
.Ignore ("Fails at the moment");
916 BindingContext bc
= new BindingContext ();
919 DataView dv
= new DataView();
920 DataTable dt
= new DataTable("Testdata");
922 cm
= (CurrencyManager
)bc
[dt
];
924 HookupCurrencyManager (cm
);
926 event_log
= ""; event_num
= 0;
930 Assert
.AreEqual ("", event_log
, "1");
932 Console
.WriteLine (">1");
934 Console
.WriteLine ("<1");
936 Assert
.AreEqual ("0: MetaDataChanged\n", event_log
, "1");
938 event_log
= ""; event_num
= 0;
939 Console
.WriteLine (">2");
941 Console
.WriteLine ("<2");
943 Assert
.AreEqual ("0: MetaDataChanged\n", event_log
, "2");
945 event_log
= ""; event_num
= 0;
946 Console
.WriteLine (">3");
947 dt
.Rows
.Add(new object[]{"A1", "B1"}
);
948 Console
.WriteLine ("<3");
951 Assert
.AreEqual ("0: PositionChanged (to 0)\n1: CurrentChanged\n2: CurrentItemChanged\n3: ItemChanged (index = -1)\n4: ItemChanged (index = -1)\n", event_log
, "3");
953 Assert
.AreEqual ("0: PositionChanged (to 0)\n1: CurrentChanged\n2: ItemChanged (index = -1)\n3: ItemChanged (index = -1)\n", event_log
, "3");
956 event_log
= ""; event_num
= 0;
957 Console
.WriteLine (">4");
958 dt
.Rows
.Add(new object[]{"A2", "B2"}
);
959 Console
.WriteLine ("<4");
961 Assert
.AreEqual ("0: ItemChanged (index = -1)\n", event_log
, "4");
963 Assert
.AreEqual (2, cm
.Count
, "5");
967 public void CancelAddNew ()
969 if (TestHelper
.RunningOnUnix
) {
970 Assert
.Ignore ("Fails at the moment");
973 Control c
= new Control ();
978 DataSet dataSet1
= new DataSet();
979 dataSet1
.Tables
.Add();
980 dataSet1
.Tables
[0].Columns
.Add();
982 c
.BindingContext
= new BindingContext ();
983 cm
= (CurrencyManager
) c
.BindingContext
[dataSet1
, dataSet1
.Tables
[0].TableName
];
984 binding
= c
.DataBindings
.Add ("Text", dataSet1
.Tables
[0], dataSet1
.Tables
[0].Columns
[0].ColumnName
);
986 HookupCurrencyManager (cm
);
988 HookupBinding (binding
);
993 Console
.WriteLine (">>>");
996 cm
.CancelCurrentEdit ();
997 Console
.WriteLine ("<<<");
999 Console
.WriteLine (event_log
);
1003 "0: PositionChanged (to 0)\n1: CurrentChanged\n2: CurrentItemChanged\n3: ItemChanged (index = -1)\n4: ItemChanged (index = -1)\n5: PositionChanged (to -1)\n6: ItemChanged (index = -1)\n7: PositionChanged (to -1)\n8: CurrentChanged\n9: CurrentItemChanged\n10: ItemChanged (index = -1)\n11: ItemChanged (index = -1)\n",
1005 "0: PositionChanged (to 0)\n1: CurrentChanged\n2: ItemChanged (index = -1)\n3: ItemChanged (index = -1)\n4: CurrentChanged\n5: PositionChanged (to -1)\n6: ItemChanged (index = -1)\n7: ItemChanged (index = -1)\n8: ItemChanged (index = -1)\n",
1013 public class PropertyManagerTest2
: DataBindingTest
1016 public void TestPropertyChange ()
1018 if (TestHelper
.RunningOnUnix
) {
1019 Assert
.Ignore ("Fails at the moment");
1022 Control c1
= new Control ();
1023 Control c2
= new Control ();
1025 c1
.CreateControl ();
1026 c2
.CreateControl ();
1031 c1
.BindingContext
= new BindingContext ();
1032 c2
.BindingContext
= c1
.BindingContext
;
1034 pm
= (PropertyManager
) c2
.BindingContext
[c1
, "Text"];
1036 binding
= c2
.DataBindings
.Add ("Text", c1
, "Text");
1038 Console
.WriteLine (pm
.GetType());
1039 Console
.WriteLine (binding
.BindingManagerBase
.GetType());
1040 Assert
.IsFalse (pm
== binding
.BindingManagerBase
, "0");
1042 HookupPropertyManager (pm
);
1043 HookupBinding (binding
);
1050 Console
.WriteLine (event_log
);
1053 Assert
.AreEqual ("0: CurrentChanged\n1: CurrentItemChanged\n2: Binding.Format\n3: CurrentChanged\n4: CurrentItemChanged\n", event_log
, "1");
1055 Assert
.AreEqual ("0: CurrentChanged\n1: Binding.Format\n2: CurrentChanged\n", event_log
, "1");