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 ()
586 Control c = new Control ();
591 DataSet dataSet1 = new DataSet();
592 dataSet1.Tables.Add();
593 dataSet1.Tables[0].Columns.Add();
595 c.BindingContext = new BindingContext ();
596 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
597 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
599 HookupCurrencyManager (cm);
600 HookupBinding (binding);
604 Assert.AreEqual (0, cm.Count, "1");
609 dataSet1.Tables[0].Columns.Add();
611 Console.WriteLine (event_log);
614 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "2");
616 Assert.AreEqual ("0: MetaDataChanged\n1: MetaDataChanged\n", event_log, "2");
618 Assert.AreEqual (0, cm.Count, "3");
622 public void TestColumnRemove ()
624 Control c = new Control ();
629 DataSet dataSet1 = new DataSet();
630 dataSet1.Tables.Add();
631 dataSet1.Tables[0].Columns.Add();
632 dataSet1.Tables[0].Columns.Add();
634 c.BindingContext = new BindingContext ();
635 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
636 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
638 HookupCurrencyManager (cm);
639 HookupBinding (binding);
643 Assert.AreEqual (0, cm.Count, "1");
648 dataSet1.Tables[0].Columns.Remove(dataSet1.Tables[0].Columns[1]);
650 Console.WriteLine (event_log);
652 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "2");
654 Assert.AreEqual (0, cm.Count, "3");
658 public void TestColumnRemoveBound ()
660 Control c = new Control ();
665 DataSet dataSet1 = new DataSet();
666 dataSet1.Tables.Add();
667 dataSet1.Tables[0].Columns.Add();
668 dataSet1.Tables[0].Columns.Add();
670 c.BindingContext = new BindingContext ();
671 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
672 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
674 HookupCurrencyManager (cm);
675 HookupBinding (binding);
679 Assert.IsFalse (binding.IsBinding, "1");
680 Assert.AreEqual (0, cm.Count, "2");
685 dataSet1.Tables[0].Columns.Remove(dataSet1.Tables[0].Columns[0]);
687 Console.WriteLine (event_log);
689 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "3");
691 Assert.AreEqual (0, cm.Count, "4");
693 Assert.IsFalse (binding.IsBinding, "5");
697 public void TestColumnChangeName ()
699 Control c = new Control ();
704 DataSet dataSet1 = new DataSet();
705 dataSet1.Tables.Add();
707 dataSet1.Tables [0].Columns.CollectionChanged += new CollectionChangeEventHandler (
708 DataColumnCollection_CollectionChanged);
710 dataSet1.Tables[0].Columns.Add();
712 c.BindingContext = new BindingContext ();
713 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
714 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
716 HookupCurrencyManager (cm);
717 HookupBinding (binding);
721 Assert.IsFalse (binding.IsBinding, "1");
722 Assert.AreEqual (0, cm.Count, "2");
727 dataSet1.Tables [0].DefaultView.ListChanged += new ListChangedEventHandler (
728 DataView_ListChanged);
730 dataSet1.Tables[0].Columns[0].ColumnName = "new name";
732 Console.WriteLine (event_log);
734 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "3");
736 Assert.AreEqual (0, cm.Count, "4");
738 Assert.IsFalse (binding.IsBinding, "5");
741 void DataColumnCollection_CollectionChanged (object sender, CollectionChangeEventArgs e)
743 Console.WriteLine ("collection changed : {0} {1}", e.Action, e.Element.GetType());
746 void DataView_ListChanged (object sender, ListChangedEventArgs e)
748 Console.WriteLine ("list changed : {0} {1} {2}", e.ListChangedType, e.OldIndex, e.NewIndex);
752 public void TestRowModify ()
754 Control c = new Control ();
760 DataSet dataSet1 = new DataSet();
761 dataSet1.Tables.Add();
762 dataSet1.Tables[0].Columns.Add();
764 DataRow newrow = dataSet1.Tables[0].NewRow ();
765 dataSet1.Tables[0].Rows.Add(newrow);
767 column_name = dataSet1.Tables[0].Columns[0].ColumnName;
769 c.BindingContext = new BindingContext ();
770 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
772 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], column_name);
774 HookupCurrencyManager (cm);
776 HookupBinding (binding);
780 Assert.AreEqual (1, cm.Count, "1");
785 DataRowView row = (DataRowView)cm.Current;
787 row[column_name] = "hi";
790 Console.WriteLine (event_log);
795 "0: CurrentItemChanged\n1: ItemChanged (index = 0)\n2: Binding.Format\n"
797 "0: CurrentItemChanged\n1: ItemChanged (index = 0)\n"
801 "0: ItemChanged (index = 0)\n1: Binding.Format\n"
803 "0: ItemChanged (index = 0)\n"
808 Assert.AreEqual (1, cm.Count, "3");
812 public void TestRowCancelModify ()
814 Control c = new Control ();
820 DataSet dataSet1 = new DataSet();
821 dataSet1.Tables.Add();
822 dataSet1.Tables[0].Columns.Add();
824 DataRow newrow = dataSet1.Tables[0].NewRow ();
825 dataSet1.Tables[0].Rows.Add(newrow);
827 column_name = dataSet1.Tables[0].Columns[0].ColumnName;
829 c.BindingContext = new BindingContext ();
830 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
832 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], column_name);
834 HookupCurrencyManager (cm);
835 HookupBinding (binding);
839 Assert.AreEqual (1, cm.Count, "1");
844 DataRowView row = (DataRowView)cm.Current;
846 row[column_name] = "hi";
847 cm.CancelCurrentEdit ();
849 Console.WriteLine (event_log);
850 Assert.AreEqual ("0: ItemChanged (index = 0)\n", event_log, "2");
852 Assert.AreEqual (1, cm.Count, "3");
857 public void TestDeleteInEdit ()
859 Control c = new Control ();
862 BindingContext bc = new BindingContext ();
865 DataSet dataSet1 = new DataSet();
866 dataSet1.Tables.Add();
867 dataSet1.Tables[0].Columns.Add();
869 DataRow newrow = dataSet1.Tables[0].NewRow ();
870 dataSet1.Tables[0].Rows.Add(newrow);
872 cm = (CurrencyManager) bc[dataSet1, dataSet1.Tables[0].TableName];
873 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
875 Assert.AreEqual (1, cm.Count, "1");
877 HookupCurrencyManager (cm);
879 HookupBinding (binding);
887 DataRowView row = (DataRowView)cm.Current;
890 Console.WriteLine (event_log);
894 "0: PositionChanged (to -1)\n1: ItemChanged (index = -1)\n2: PositionChanged (to -1)\n3: CurrentChanged\n4: CurrentItemChanged\n5: ItemChanged (index = -1)\n"
896 "0: PositionChanged (to -1)\n1: ItemChanged (index = -1)\n2: ItemChanged (index = -1)\n"
900 Assert.AreEqual (0, cm.Count, "2");
904 public void Bug81022 ()
906 if (TestHelper.RunningOnUnix) {
907 Assert.Ignore ("Fails at the moment");
910 BindingContext bc = new BindingContext ();
913 DataView dv = new DataView();
914 DataTable dt = new DataTable("Testdata");
916 cm = (CurrencyManager)bc [dt];
918 HookupCurrencyManager (cm);
920 event_log = ""; event_num = 0;
924 Assert.AreEqual ("", event_log, "1");
926 Console.WriteLine (">1");
928 Console.WriteLine ("<1");
930 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "1");
932 event_log = ""; event_num = 0;
933 Console.WriteLine (">2");
935 Console.WriteLine ("<2");
937 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "2");
939 event_log = ""; event_num = 0;
940 Console.WriteLine (">3");
941 dt.Rows.Add(new object[]{"A1", "B1"});
942 Console.WriteLine ("<3");
945 Assert.AreEqual ("0: PositionChanged (to 0)\n1: CurrentChanged\n2: CurrentItemChanged\n3: ItemChanged (index = -1)\n4: ItemChanged (index = -1)\n", event_log, "3");
947 Assert.AreEqual ("0: PositionChanged (to 0)\n1: CurrentChanged\n2: ItemChanged (index = -1)\n3: ItemChanged (index = -1)\n", event_log, "3");
950 event_log = ""; event_num = 0;
951 Console.WriteLine (">4");
952 dt.Rows.Add(new object[]{"A2", "B2"});
953 Console.WriteLine ("<4");
955 Assert.AreEqual ("0: ItemChanged (index = -1)\n", event_log, "4");
957 Assert.AreEqual (2, cm.Count, "5");
961 public void CancelAddNew ()
963 if (TestHelper.RunningOnUnix) {
964 Assert.Ignore ("Fails at the moment");
967 Control c = new Control ();
972 DataSet dataSet1 = new DataSet();
973 dataSet1.Tables.Add();
974 dataSet1.Tables[0].Columns.Add();
976 c.BindingContext = new BindingContext ();
977 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
978 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
980 HookupCurrencyManager (cm);
982 HookupBinding (binding);
987 Console.WriteLine (">>>");
990 cm.CancelCurrentEdit ();
991 Console.WriteLine ("<<<");
993 Console.WriteLine (event_log);
997 "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",
999 "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",
1007 public class PropertyManagerTest2 : DataBindingTest
1010 public void TestPropertyChange ()
1012 if (TestHelper.RunningOnUnix) {
1013 Assert.Ignore ("Fails at the moment");
1016 Control c1 = new Control ();
1017 Control c2 = new Control ();
1019 c1.CreateControl ();
1020 c2.CreateControl ();
1025 c1.BindingContext = new BindingContext ();
1026 c2.BindingContext = c1.BindingContext;
1028 pm = (PropertyManager) c2.BindingContext[c1, "Text"];
1030 binding = c2.DataBindings.Add ("Text", c1, "Text");
1032 Console.WriteLine (pm.GetType());
1033 Console.WriteLine (binding.BindingManagerBase.GetType());
1034 Assert.IsFalse (pm == binding.BindingManagerBase, "0");
1036 HookupPropertyManager (pm);
1037 HookupBinding (binding);
1044 Console.WriteLine (event_log);
1047 Assert.AreEqual ("0: CurrentChanged\n1: CurrentItemChanged\n2: Binding.Format\n3: CurrentChanged\n4: CurrentItemChanged\n", event_log, "1");
1049 Assert.AreEqual ("0: CurrentChanged\n1: Binding.Format\n2: CurrentChanged\n", event_log, "1");