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 : TestHelper
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);
178 "0: PositionChanged (to -1)\n1: ItemChanged (index = -1)\n2: PositionChanged (to -1)\n3: CurrentChanged\n4: CurrentItemChanged\n5: ItemChanged (index = -1)\n"
181 Assert.AreEqual (0, cm.Count, "3");
185 public void TestDeleteRowBeforeCurrent ()
187 Control c = new Control ();
193 DataSet dataSet1 = new DataSet();
194 dataSet1.Tables.Add();
195 dataSet1.Tables[0].Columns.Add();
197 newrow = dataSet1.Tables[0].NewRow ();
198 dataSet1.Tables[0].Rows.Add(newrow);
200 newrow = dataSet1.Tables[0].NewRow ();
201 dataSet1.Tables[0].Rows.Add(newrow);
203 c.BindingContext = new BindingContext ();
204 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
205 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
207 HookupCurrencyManager (cm);
209 HookupBinding (binding);
214 Assert.AreEqual (2, cm.Count, "1");
216 DataView dv = dataSet1.Tables[0].DefaultView;
217 DataRowView row = dv[0];
224 Console.WriteLine (event_log);
229 "0: CurrentChanged\n1: CurrentItemChanged\n2: PositionChanged (to 0)\n3: ItemChanged (index = -1)\n4: Binding.Format\n"
231 "0: CurrentChanged\n1: CurrentItemChanged\n2: PositionChanged (to 0)\n3: ItemChanged (index = -1)\n"
237 public void TestDeleteRowAfterCurrent ()
239 Control c = new Control ();
245 DataSet dataSet1 = new DataSet();
246 dataSet1.Tables.Add();
247 dataSet1.Tables[0].Columns.Add();
249 newrow = dataSet1.Tables[0].NewRow ();
250 dataSet1.Tables[0].Rows.Add(newrow);
252 newrow = dataSet1.Tables[0].NewRow ();
253 dataSet1.Tables[0].Rows.Add(newrow);
255 c.BindingContext = new BindingContext ();
256 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
257 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
259 HookupCurrencyManager (cm);
261 HookupBinding (binding);
266 Assert.AreEqual (2, cm.Count, "1");
268 DataView dv = dataSet1.Tables[0].DefaultView;
269 DataRowView row = dv[1];
276 Console.WriteLine (event_log);
279 Assert.AreEqual ("0: ItemChanged (index = -1)\n1: Binding.Format\n", event_log, "2");
281 Assert.AreEqual ("0: ItemChanged (index = -1)\n", event_log, "2");
284 Assert.AreEqual (1, cm.Count, "3");
288 public void TestDeleteCurrentRowWithOthers ()
290 Control c = new Control ();
296 DataSet dataSet1 = new DataSet();
297 dataSet1.Tables.Add();
298 dataSet1.Tables[0].Columns.Add();
300 newrow = dataSet1.Tables[0].NewRow ();
301 dataSet1.Tables[0].Rows.Add(newrow);
303 newrow = dataSet1.Tables[0].NewRow ();
304 dataSet1.Tables[0].Rows.Add(newrow);
306 c.BindingContext = new BindingContext ();
307 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
308 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
310 HookupCurrencyManager (cm);
312 HookupBinding (binding);
316 Assert.AreEqual (2, cm.Count, "1");
318 DataView dv = dataSet1.Tables[0].DefaultView;
319 DataRowView row = dv[0];
326 Console.WriteLine (event_log);
331 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: Binding.Format\n"
333 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n"
337 "0: CurrentChanged\n1: ItemChanged (index = -1)\n2: Binding.Format\n"
339 "0: CurrentChanged\n1: ItemChanged (index = -1)\n"
344 Assert.AreEqual (1, cm.Count, "3");
348 public void TestAddFirstRow ()
350 if (TestHelper.RunningOnUnix) {
351 Assert.Ignore ("Fails at the moment");
354 Control c = new Control ();
359 DataSet dataSet1 = new DataSet();
360 dataSet1.Tables.Add();
361 dataSet1.Tables[0].Columns.Add();
363 c.BindingContext = new BindingContext ();
364 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
365 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
367 HookupCurrencyManager (cm);
369 HookupBinding (binding);
374 Assert.AreEqual (0, cm.Count, "1");
379 DataRow newrow = dataSet1.Tables[0].NewRow ();
380 dataSet1.Tables[0].Rows.Add(newrow);
382 Console.WriteLine (event_log);
387 "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"
389 "0: PositionChanged (to 0)\n1: CurrentChanged\n2: CurrentItemChanged\n3: ItemChanged (index = -1)\n4: ItemChanged (index = -1)\n"
393 "0: PositionChanged (to 0)\n1: CurrentChanged\n2: ItemChanged (index = -1)\n3: ItemChanged (index = -1)\n4: Binding.Format\n5: Binding.Format\n6: Binding.Format\n"
395 "0: PositionChanged (to 0)\n1: CurrentChanged\n2: ItemChanged (index = -1)\n3: ItemChanged (index = -1)\n"
400 Assert.AreEqual (1, cm.Count, "3");
404 public void TestAppendRowAfterCurrent ()
406 Control c = new Control ();
411 DataSet dataSet1 = new DataSet();
412 dataSet1.Tables.Add();
413 dataSet1.Tables[0].Columns.Add();
415 c.BindingContext = new BindingContext ();
416 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
417 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
419 HookupCurrencyManager (cm);
421 HookupBinding (binding);
426 Assert.AreEqual (0, cm.Count, "1");
428 DataRow newrow = dataSet1.Tables[0].NewRow ();
429 dataSet1.Tables[0].Rows.Add(newrow);
434 newrow = dataSet1.Tables[0].NewRow ();
435 dataSet1.Tables[0].Rows.Add(newrow);
437 Console.WriteLine (event_log);
440 Assert.AreEqual ("0: ItemChanged (index = -1)\n1: Binding.Format\n", event_log, "2");
442 Assert.AreEqual ("0: ItemChanged (index = -1)\n", event_log, "2");
445 Assert.AreEqual (2, cm.Count, "3");
449 public void TestInsertRowBeforeCurrent ()
453 if (TestHelper.RunningOnUnix) {
454 Assert.Ignore ("Too many Binding.Format events here");
458 Control c = new Control ();
463 DataSet dataSet1 = new DataSet();
464 dataSet1.Tables.Add();
465 dataSet1.Tables[0].Columns.Add();
467 c.BindingContext = new BindingContext ();
468 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
469 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
472 DataRow newrow = dataSet1.Tables[0].NewRow ();
473 dataSet1.Tables[0].Rows.Add(newrow);
474 newrow = dataSet1.Tables[0].NewRow ();
475 dataSet1.Tables[0].Rows.Add(newrow);
477 Assert.AreEqual (2, cm.Count, "1");
481 HookupCurrencyManager (cm);
483 HookupBinding (binding);
489 newrow = dataSet1.Tables[0].NewRow ();
490 dataSet1.Tables[0].Rows.InsertAt(newrow, 0);
492 Console.WriteLine (event_log);
497 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: PositionChanged (to 2)\n4: Binding.Format\n"
499 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: PositionChanged (to 2)\n"
503 "0: ItemChanged (index = -1)\n1: Binding.Format\n"
505 "0: ItemChanged (index = -1)\n"
510 Assert.AreEqual (3, cm.Count, "3");
514 public void TestInsertRowAtCurrent ()
516 Control c = new Control ();
521 DataSet dataSet1 = new DataSet();
522 dataSet1.Tables.Add();
523 dataSet1.Tables[0].Columns.Add();
525 c.BindingContext = new BindingContext ();
526 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
527 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
529 HookupCurrencyManager (cm);
531 HookupBinding (binding);
535 DataRow newrow = dataSet1.Tables[0].NewRow ();
536 dataSet1.Tables[0].Rows.Add(newrow);
537 newrow = dataSet1.Tables[0].NewRow ();
538 dataSet1.Tables[0].Rows.Add(newrow);
540 Assert.AreEqual (2, cm.Count, "1");
547 newrow = dataSet1.Tables[0].NewRow ();
548 dataSet1.Tables[0].Rows.InsertAt(newrow, 1);
550 Console.WriteLine (event_log);
555 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: PositionChanged (to 2)\n4: Binding.Format\n"
557 "0: CurrentChanged\n1: CurrentItemChanged\n2: ItemChanged (index = -1)\n3: PositionChanged (to 2)\n"
561 "0: ItemChanged (index = -1)\n1: Binding.Format\n"
563 "0: ItemChanged (index = -1)\n"
568 Assert.AreEqual (3, cm.Count, "3");
572 public void TestColumnAdd ()
574 Control c = new Control ();
579 DataSet dataSet1 = new DataSet();
580 dataSet1.Tables.Add();
581 dataSet1.Tables[0].Columns.Add();
583 c.BindingContext = new BindingContext ();
584 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
585 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
587 HookupCurrencyManager (cm);
588 HookupBinding (binding);
592 Assert.AreEqual (0, cm.Count, "1");
597 dataSet1.Tables[0].Columns.Add();
599 Console.WriteLine (event_log);
602 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "2");
604 Assert.AreEqual ("0: MetaDataChanged\n1: MetaDataChanged\n", event_log, "2");
606 Assert.AreEqual (0, cm.Count, "3");
610 public void TestColumnRemove ()
612 Control c = new Control ();
617 DataSet dataSet1 = new DataSet();
618 dataSet1.Tables.Add();
619 dataSet1.Tables[0].Columns.Add();
620 dataSet1.Tables[0].Columns.Add();
622 c.BindingContext = new BindingContext ();
623 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
624 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
626 HookupCurrencyManager (cm);
627 HookupBinding (binding);
631 Assert.AreEqual (0, cm.Count, "1");
636 dataSet1.Tables[0].Columns.Remove(dataSet1.Tables[0].Columns[1]);
638 Console.WriteLine (event_log);
640 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "2");
642 Assert.AreEqual (0, cm.Count, "3");
646 public void TestColumnRemoveBound ()
648 Control c = new Control ();
653 DataSet dataSet1 = new DataSet();
654 dataSet1.Tables.Add();
655 dataSet1.Tables[0].Columns.Add();
656 dataSet1.Tables[0].Columns.Add();
658 c.BindingContext = new BindingContext ();
659 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
660 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
662 HookupCurrencyManager (cm);
663 HookupBinding (binding);
667 Assert.IsFalse (binding.IsBinding, "1");
668 Assert.AreEqual (0, cm.Count, "2");
673 dataSet1.Tables[0].Columns.Remove(dataSet1.Tables[0].Columns[0]);
675 Console.WriteLine (event_log);
677 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "3");
679 Assert.AreEqual (0, cm.Count, "4");
681 Assert.IsFalse (binding.IsBinding, "5");
685 public void TestColumnChangeName ()
687 Control c = new Control ();
692 DataSet dataSet1 = new DataSet();
693 dataSet1.Tables.Add();
695 dataSet1.Tables [0].Columns.CollectionChanged += new CollectionChangeEventHandler (
696 DataColumnCollection_CollectionChanged);
698 dataSet1.Tables[0].Columns.Add();
700 c.BindingContext = new BindingContext ();
701 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
702 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
704 HookupCurrencyManager (cm);
705 HookupBinding (binding);
709 Assert.IsFalse (binding.IsBinding, "1");
710 Assert.AreEqual (0, cm.Count, "2");
715 dataSet1.Tables [0].DefaultView.ListChanged += new ListChangedEventHandler (
716 DataView_ListChanged);
718 dataSet1.Tables[0].Columns[0].ColumnName = "new name";
720 Console.WriteLine (event_log);
722 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "3");
724 Assert.AreEqual (0, cm.Count, "4");
726 Assert.IsFalse (binding.IsBinding, "5");
729 void DataColumnCollection_CollectionChanged (object sender, CollectionChangeEventArgs e)
731 Console.WriteLine ("collection changed : {0} {1}", e.Action, e.Element.GetType());
734 void DataView_ListChanged (object sender, ListChangedEventArgs e)
736 Console.WriteLine ("list changed : {0} {1} {2}", e.ListChangedType, e.OldIndex, e.NewIndex);
740 public void TestRowModify ()
742 Control c = new Control ();
748 DataSet dataSet1 = new DataSet();
749 dataSet1.Tables.Add();
750 dataSet1.Tables[0].Columns.Add();
752 DataRow newrow = dataSet1.Tables[0].NewRow ();
753 dataSet1.Tables[0].Rows.Add(newrow);
755 column_name = dataSet1.Tables[0].Columns[0].ColumnName;
757 c.BindingContext = new BindingContext ();
758 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
760 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], column_name);
762 HookupCurrencyManager (cm);
764 HookupBinding (binding);
768 Assert.AreEqual (1, cm.Count, "1");
773 DataRowView row = (DataRowView)cm.Current;
775 row[column_name] = "hi";
778 Console.WriteLine (event_log);
783 "0: CurrentItemChanged\n1: ItemChanged (index = 0)\n2: Binding.Format\n"
785 "0: CurrentItemChanged\n1: ItemChanged (index = 0)\n"
789 "0: ItemChanged (index = 0)\n1: Binding.Format\n"
791 "0: ItemChanged (index = 0)\n"
796 Assert.AreEqual (1, cm.Count, "3");
800 public void TestRowCancelModify ()
802 Control c = new Control ();
808 DataSet dataSet1 = new DataSet();
809 dataSet1.Tables.Add();
810 dataSet1.Tables[0].Columns.Add();
812 DataRow newrow = dataSet1.Tables[0].NewRow ();
813 dataSet1.Tables[0].Rows.Add(newrow);
815 column_name = dataSet1.Tables[0].Columns[0].ColumnName;
817 c.BindingContext = new BindingContext ();
818 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
820 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], column_name);
822 HookupCurrencyManager (cm);
823 HookupBinding (binding);
827 Assert.AreEqual (1, cm.Count, "1");
832 DataRowView row = (DataRowView)cm.Current;
834 row[column_name] = "hi";
835 cm.CancelCurrentEdit ();
837 Console.WriteLine (event_log);
838 Assert.AreEqual ("0: ItemChanged (index = 0)\n", event_log, "2");
840 Assert.AreEqual (1, cm.Count, "3");
845 public void TestDeleteInEdit ()
847 Control c = new Control ();
850 BindingContext bc = new BindingContext ();
853 DataSet dataSet1 = new DataSet();
854 dataSet1.Tables.Add();
855 dataSet1.Tables[0].Columns.Add();
857 DataRow newrow = dataSet1.Tables[0].NewRow ();
858 dataSet1.Tables[0].Rows.Add(newrow);
860 cm = (CurrencyManager) bc[dataSet1, dataSet1.Tables[0].TableName];
861 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
863 Assert.AreEqual (1, cm.Count, "1");
865 HookupCurrencyManager (cm);
867 HookupBinding (binding);
875 DataRowView row = (DataRowView)cm.Current;
878 Console.WriteLine (event_log);
882 "0: PositionChanged (to -1)\n1: ItemChanged (index = -1)\n2: PositionChanged (to -1)\n3: CurrentChanged\n4: CurrentItemChanged\n5: ItemChanged (index = -1)\n"
884 "0: PositionChanged (to -1)\n1: ItemChanged (index = -1)\n2: ItemChanged (index = -1)\n"
888 Assert.AreEqual (0, cm.Count, "2");
892 public void Bug81022 ()
894 if (TestHelper.RunningOnUnix) {
895 Assert.Ignore ("Fails at the moment");
898 BindingContext bc = new BindingContext ();
901 DataView dv = new DataView();
902 DataTable dt = new DataTable("Testdata");
904 cm = (CurrencyManager)bc [dt];
906 HookupCurrencyManager (cm);
908 event_log = ""; event_num = 0;
912 Assert.AreEqual ("", event_log, "1");
914 Console.WriteLine (">1");
916 Console.WriteLine ("<1");
918 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "1");
920 event_log = ""; event_num = 0;
921 Console.WriteLine (">2");
923 Console.WriteLine ("<2");
925 Assert.AreEqual ("0: MetaDataChanged\n", event_log, "2");
927 event_log = ""; event_num = 0;
928 Console.WriteLine (">3");
929 dt.Rows.Add(new object[]{"A1", "B1"});
930 Console.WriteLine ("<3");
933 Assert.AreEqual ("0: PositionChanged (to 0)\n1: CurrentChanged\n2: CurrentItemChanged\n3: ItemChanged (index = -1)\n4: ItemChanged (index = -1)\n", event_log, "3");
935 Assert.AreEqual ("0: PositionChanged (to 0)\n1: CurrentChanged\n2: ItemChanged (index = -1)\n3: ItemChanged (index = -1)\n", event_log, "3");
938 event_log = ""; event_num = 0;
939 Console.WriteLine (">4");
940 dt.Rows.Add(new object[]{"A2", "B2"});
941 Console.WriteLine ("<4");
943 Assert.AreEqual ("0: ItemChanged (index = -1)\n", event_log, "4");
945 Assert.AreEqual (2, cm.Count, "5");
949 public void CancelAddNew ()
951 if (TestHelper.RunningOnUnix) {
952 Assert.Ignore ("Fails at the moment");
955 Control c = new Control ();
960 DataSet dataSet1 = new DataSet();
961 dataSet1.Tables.Add();
962 dataSet1.Tables[0].Columns.Add();
964 c.BindingContext = new BindingContext ();
965 cm = (CurrencyManager) c.BindingContext[dataSet1, dataSet1.Tables[0].TableName];
966 binding = c.DataBindings.Add ("Text", dataSet1.Tables[0], dataSet1.Tables[0].Columns[0].ColumnName);
968 HookupCurrencyManager (cm);
970 HookupBinding (binding);
975 Console.WriteLine (">>>");
978 cm.CancelCurrentEdit ();
979 Console.WriteLine ("<<<");
981 Console.WriteLine (event_log);
985 "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",
987 "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",
995 public class PropertyManagerTest2 : DataBindingTest
998 public void TestPropertyChange ()
1000 if (TestHelper.RunningOnUnix) {
1001 Assert.Ignore ("Fails at the moment");
1004 Control c1 = new Control ();
1005 Control c2 = new Control ();
1007 c1.CreateControl ();
1008 c2.CreateControl ();
1013 c1.BindingContext = new BindingContext ();
1014 c2.BindingContext = c1.BindingContext;
1016 pm = (PropertyManager) c2.BindingContext[c1, "Text"];
1018 binding = c2.DataBindings.Add ("Text", c1, "Text");
1020 Console.WriteLine (pm.GetType());
1021 Console.WriteLine (binding.BindingManagerBase.GetType());
1022 Assert.IsFalse (pm == binding.BindingManagerBase, "0");
1024 HookupPropertyManager (pm);
1025 HookupBinding (binding);
1032 Console.WriteLine (event_log);
1035 Assert.AreEqual ("0: CurrentChanged\n1: CurrentItemChanged\n2: Binding.Format\n3: CurrentChanged\n4: CurrentItemChanged\n", event_log, "1");
1037 Assert.AreEqual ("0: CurrentChanged\n1: Binding.Format\n2: CurrentChanged\n", event_log, "1");