// // Tests for System.Web.UI.WebControls.ObjectDataSourceView // // Author: // Chris Toshok (toshok@novell.com) // Konstantin Triger (kostat@mainsoft.com) // Yoni Klain (yonik@mainsoft.com) // // // Copyright (C) 2006 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // WARNING NOTES : ALL NUNITWEB TESTS DOING UNLOAD BETWEEN TESTS FOR RELOAD // OBJECT DATA SOURCE DEFAULT DATA #if NET_2_0 using NUnit.Framework; using System; using System.Configuration; using System.Data.Common; using System.IO; using System.Globalization; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Collections; using MonoTests.SystemWeb.Framework; using MonoTests.stand_alone.WebHarness; using System.Threading; namespace MonoTests.System.Web.UI.WebControls { class ObjectViewPoker : ObjectDataSourceView { public ObjectViewPoker (ObjectDataSource ds, string name, HttpContext context) : base (ds, name, context) { TrackViewState (); } public bool IsTrackingViewState () { return base.IsTrackingViewState; } public object SaveToViewState () { return SaveViewState (); } public void LoadFromViewState (object savedState) { LoadViewState (savedState); } public void DoOnDeleting (ObjectDataSourceMethodEventArgs e) { base.OnDeleting (e); } public void DoOnInserting (ObjectDataSourceMethodEventArgs e) { base.OnInserting (e); } public void DoOnFiltering (ObjectDataSourceFilteringEventArgs e) { base.OnFiltering (e); } public void DoOnObjectCreating (ObjectDataSourceEventArgs e) { base.OnObjectCreating (e); } public void DoOnObjectCreated (ObjectDataSourceEventArgs e) { base.OnObjectCreated (e); } public void DoOnObjectDisposing (ObjectDataSourceDisposingEventArgs e) { base.OnObjectDisposing (e); } public void DoOnSelecting (ObjectDataSourceSelectingEventArgs e) { base.OnSelecting (e); } public void DoOnUpdating (ObjectDataSourceMethodEventArgs e) { base.OnUpdating (e); } public void DoOnUpdated (ObjectDataSourceStatusEventArgs e) { base.OnUpdated (e); } public void DoOnDeleted (ObjectDataSourceStatusEventArgs e) { base.OnDeleted (e); } public void DoOnInserted (ObjectDataSourceStatusEventArgs e) { base.OnInserted (e); } public void DoOnSelected (ObjectDataSourceStatusEventArgs e) { base.OnSelected (e); } public int DoExecuteDelete (IDictionary keys, IDictionary oldValues) { return base.ExecuteDelete (keys, oldValues); } } [TestFixture] public class ObjectDataSourceViewTest { [SetUp] public void SetupTestCase () { Thread.Sleep (100); } [Test] public void Defaults () { ObjectDataSource ds = new ObjectDataSource (); ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null); Assert.IsFalse (sql.CanDelete, "CanDelete"); Assert.IsFalse (sql.CanInsert, "CanInsert"); Assert.IsFalse (sql.CanPage, "CanPage"); Assert.IsTrue (sql.CanSort, "CanSort"); Assert.IsFalse (sql.CanUpdate, "CanUpdate"); Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "ConflictDetection"); Assert.IsFalse (sql.ConvertNullToDBNull, "ConvertNullToDBNull"); Assert.AreEqual ("", sql.DataObjectTypeName, "DataObjectTypeName"); Assert.AreEqual ("", sql.DeleteMethod, "DeleteMethod"); Assert.IsNotNull (sql.DeleteParameters, "DeleteParameters"); Assert.AreEqual (0, sql.DeleteParameters.Count, "DeleteParameters.Count"); Assert.IsFalse (sql.EnablePaging, "EnablePaging"); Assert.AreEqual ("", sql.InsertMethod, "InsertMethod"); Assert.IsNotNull (sql.InsertParameters, "InsertParameters"); Assert.AreEqual (0, sql.InsertParameters.Count, "InsertParameters.Count"); Assert.AreEqual ("", sql.FilterExpression, "FilterExpression"); Assert.IsNotNull (sql.FilterParameters, "FilterParameters"); Assert.AreEqual (0, sql.FilterParameters.Count, "FilterParameters.Count"); Assert.AreEqual ("maximumRows", sql.MaximumRowsParameterName, "MaximumRowsParameterName"); Assert.AreEqual ("", sql.SelectCountMethod, "SelectCountMethod"); Assert.AreEqual ("", sql.SelectMethod, "SelectMethod"); Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "OldValuesParameterFormatString"); Assert.IsNotNull (sql.SelectParameters, "SelectParameters"); Assert.AreEqual (0, sql.SelectParameters.Count, "SelectParameters.Count"); Assert.AreEqual ("", sql.SortParameterName, "SortParameterName"); Assert.IsNotNull (sql.UpdateParameters, "UpdateParameters"); Assert.AreEqual (0, sql.UpdateParameters.Count, "UpdateParameters.Count"); Assert.AreEqual ("startRowIndex", sql.StartRowIndexParameterName, "StartRowIndexParameterName"); Assert.AreEqual ("", sql.TypeName, "TypeName"); Assert.AreEqual ("", sql.UpdateMethod, "UpdateMethod"); Assert.AreEqual (true, sql.IsTrackingViewState (), "IsTrackingViewState"); } [Test] public void DefaultsNotWorking () { ObjectDataSource ds = new ObjectDataSource (); ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null); Assert.IsTrue (sql.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount"); } [Test] public void DefaultsAssignProperties () { ObjectDataSource ds = new ObjectDataSource (); ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null); sql.ConflictDetection = ConflictOptions.CompareAllValues; Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "ConflictDetection"); sql.ConvertNullToDBNull = true; Assert.IsTrue (sql.ConvertNullToDBNull, "ConvertNullToDBNull"); sql.DataObjectTypeName = "test"; Assert.AreEqual ("test", sql.DataObjectTypeName, "DataObjectTypeName"); sql.DeleteMethod = "test"; Assert.AreEqual ("test", sql.DeleteMethod, "DeleteMethod"); sql.EnablePaging = true; Assert.IsTrue (sql.EnablePaging, "EnablePaging"); sql.InsertMethod = "test"; Assert.AreEqual ("test", sql.InsertMethod, "InsertMethod"); sql.FilterExpression = "test"; Assert.AreEqual ("test", sql.FilterExpression, "FilterExpression"); sql.MaximumRowsParameterName = "test"; Assert.AreEqual ("test", sql.MaximumRowsParameterName, "MaximumRowsParameterName"); sql.SelectCountMethod = "test"; Assert.AreEqual ("test", sql.SelectCountMethod, "SelectCountMethod"); sql.SelectMethod = "test"; Assert.AreEqual ("test", sql.SelectMethod, "SelectMethod"); sql.OldValuesParameterFormatString = "test"; Assert.AreEqual ("test", sql.OldValuesParameterFormatString, "OldValuesParameterFormatString"); sql.StartRowIndexParameterName = "test"; Assert.AreEqual ("test", sql.StartRowIndexParameterName, "StartRowIndexParameterName"); sql.TypeName = "test"; Assert.AreEqual ("test", sql.TypeName, "TypeName"); sql.UpdateMethod = "test"; Assert.AreEqual ("test", sql.UpdateMethod, "UpdateMethod"); Assert.AreEqual ("DefaultView", sql.Name, "Name"); } [Test] public void ViewState () { // Note : // IStateManager implementation allows public access to control state // Nothing added to viewstate ObjectDataSourceView view; MyDataSource ds = new MyDataSource (); ds.ID = "ObjectDataSource2"; ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject"; ds.SelectMethod = "Select"; ds.SelectCountMethod = "SelectCount"; Parameter p1 = new Parameter ("test", TypeCode.String); ds.SelectParameters.Add (p1); ds.FilterParameters.Add (p1); view = (ObjectDataSourceView) ds.DoGetView ("DefaultView"); view.ConflictDetection = ConflictOptions.CompareAllValues; view.ConvertNullToDBNull = true; view.DataObjectTypeName = "test"; view.DeleteMethod = "test"; view.EnablePaging = true; view.InsertMethod = "test"; view.FilterExpression = "test"; view.MaximumRowsParameterName = "test"; view.SelectCountMethod = "test"; view.SelectMethod = "test"; view.OldValuesParameterFormatString = "test"; view.StartRowIndexParameterName = "test"; view.TypeName = "test"; view.UpdateMethod = "test"; ((IStateManager) view).TrackViewState (); object state = ((IStateManager) view).SaveViewState (); ObjectDataSourceView copy = new ObjectDataSourceView (ds, "DefaultView", null); ((IStateManager) copy).LoadViewState (state); Assert.AreEqual (null, state, "ViewState#1"); } [Test] public void CanDelete () { ObjectDataSource ds = new ObjectDataSource (); ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null); sql.DeleteMethod = "DeleteMethod"; Assert.IsTrue (sql.CanDelete, "A1"); sql.DeleteMethod = ""; Assert.IsFalse (sql.CanDelete, "A2"); sql.DeleteMethod = null; Assert.IsFalse (sql.CanDelete, "A3"); } [Test] public void CanInsert () { ObjectDataSource ds = new ObjectDataSource (); ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null); sql.InsertMethod = "InsertMethod"; Assert.IsTrue (sql.CanInsert, "A1"); sql.InsertMethod = ""; Assert.IsFalse (sql.CanInsert, "A2"); sql.InsertMethod = null; Assert.IsFalse (sql.CanInsert, "A3"); } [Test] public void CanUpdate () { ObjectDataSource ds = new ObjectDataSource (); ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null); sql.UpdateMethod = "UpdateMethod"; Assert.IsTrue (sql.CanUpdate, "A1"); sql.UpdateMethod = ""; Assert.IsFalse (sql.CanUpdate, "A2"); sql.UpdateMethod = null; Assert.IsFalse (sql.CanUpdate, "A3"); } [Test] public void CanRetrieveTotalRowCount () { ObjectDataSource ds = new ObjectDataSource (); ObjectDataSourceView view = new ObjectDataSourceView (ds, "DefaultView", null); Assert.IsFalse (view.CanPage, "CanPage#1"); Assert.IsTrue (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount#1"); view.EnablePaging = true; Assert.IsTrue (view.CanPage, "CanPage#2"); Assert.IsFalse (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount#2"); view.SelectCountMethod = "SelectCountMethod"; Assert.IsTrue (view.CanPage, "CanPage#3"); Assert.IsTrue (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount#3"); view.EnablePaging = false; Assert.IsFalse (view.CanPage, "CanPage#4"); Assert.IsTrue (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount#4"); } [Test] public void OldValuesParameterFormatString () { ObjectDataSource ds = new ObjectDataSource (); Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A1"); ds.OldValuesParameterFormatString = "hi {0}"; ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null); Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A2"); ds.OldValuesParameterFormatString = "hi {0}"; Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A3"); ds.OldValuesParameterFormatString = "{0}"; sql.OldValuesParameterFormatString = "hi {0}"; Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A4"); } [Test] [Category("NunitWeb")] public void DeleteMethod () { WebTest t = new WebTest (PageInvoker.CreateOnLoad (delete)); string html = t.Run (); Assert.AreEqual (-1, html.IndexOf("Yonik"), "ObjectDataSourceViewDelete"); WebTest.Unload (); } public static void delete (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); ObjectDataSourceView view; GridView grid = new GridView (); MyDataSource ds = new MyDataSource (); ds.ID = "ObjectDataSource2"; ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject"; ds.SelectMethod = "Select"; ds.DeleteMethod = "Delete"; ds.InsertMethod = "Insert"; ds.UpdateMethod = "Update"; Parameter p1 = new Parameter ("ID", TypeCode.String); Parameter p2 = new Parameter ("FName", TypeCode.String); Parameter p3 = new Parameter ("LName", TypeCode.String); ds.DeleteParameters.Add (p1); ds.DeleteParameters.Add (p2); ds.DeleteParameters.Add (p3); grid.ID = "Grid"; grid.DataKeyNames = new string[] { "ID", "FName", "LName" }; grid.DataSourceID = "ObjectDataSource2"; p.Form.Controls.Add (lcb); p.Form.Controls.Add (ds); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); view = (ObjectDataSourceView) ds.DoGetView ("DefaultView"); view.Deleting += new ObjectDataSourceMethodEventHandler (Event); Hashtable table = new Hashtable (); table.Add ("ID", "1001"); table.Add ("FName", "Yonik"); table.Add ("LName", "Laim"); view.Delete (table, null); Assert.AreEqual (true, view.CanDelete, "CanDelete"); Assert.AreEqual ("Delete", view.DeleteMethod, "DeleteMethod"); Assert.AreEqual (3, view.DeleteParameters.Count, "DeleteParameters.Count"); Assert.AreEqual ("ID", view.DeleteParameters[0].Name, "DeleteParametersName#1"); Assert.AreEqual ("FName", view.DeleteParameters[1].Name, "DeleteParametersName#2"); Assert.AreEqual ("LName", view.DeleteParameters[2].Name, "DeleteParametersName#3"); ObjectDataSourceViewTest.Eventassert ("Delete event has not fired"); } [Test] [Category ("NunitWeb")] public void SelectMethod () { WebTest t = new WebTest (PageInvoker.CreateOnLoad (select)); string html = t.Run (); string origin = @"
IDFNameLName
1001MaheshChand
"; HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (html), "ObjectDataSourceViewSelect"); WebTest.Unload (); } public static void select (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); ObjectDataSourceView view; GridView grid = new GridView (); MyDataSource ds = new MyDataSource (); ds.ID = "ObjectDataSource2"; ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject"; ds.SelectMethod = "Select"; grid.ID = "Grid"; grid.DataKeyNames = new string[] { "ID" }; grid.DataSourceID = "ObjectDataSource2"; p.Form.Controls.Add (lcb); p.Form.Controls.Add (ds); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); view = (ObjectDataSourceView) ds.DoGetView ("DefaultView"); view.Selecting += new ObjectDataSourceSelectingEventHandler (view_Selecting); DataView view1 = (DataView) view.Select (new DataSourceSelectArguments ()); Assert.AreEqual (1, view1.Count, "SelectedRowsCount"); Assert.AreEqual (1001, view1[0].Row["ID"], "SelectedRowsValue#1"); Assert.AreEqual ("Mahesh", view1[0].Row["FName"], "SelectedRowsValue#2"); Assert.AreEqual ("Chand", view1[0].Row["LName"], "SelectedRowsValue#3"); ObjectDataSourceViewTest.Eventassert ("Select event has not fired"); } [Test] [Category ("NunitWeb")] public void SelectCountMethod () { // This method will render grid view with paging // Note : ObjectDataSource will return page counter 5 hard coded WebTest t = new WebTest (PageInvoker.CreateOnLoad (selectcount)); string html = t.Run (); string origin = @"
IDFNameLName
1001MaheshChand
12345
"; HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (html), "ObjectDataSourceViewSelectCount"); WebTest.Unload (); } public static void selectcount (Page p) { // This method will render grid view with paging // Note : ObjectDataSource will return page counter 5 hard coded LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); ObjectDataSourceView view; GridView grid = new GridView (); MyDataSource ds = new MyDataSource (); ds.ID = "ObjectDataSource2"; ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject"; ds.SelectMethod = "Select"; ds.SelectCountMethod = "SelectCount"; grid.ID = "Grid"; grid.DataKeyNames = new string[] { "ID" }; grid.DataSourceID = "ObjectDataSource2"; grid.AllowPaging = true; grid.PageSize = 1; p.Form.Controls.Add (lcb); p.Form.Controls.Add (ds); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); view = (ObjectDataSourceView) ds.DoGetView ("DefaultView"); Assert.IsTrue (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount"); } [Test] [Category ("NunitWeb")] public void InsertMethod () { WebTest t = new WebTest (PageInvoker.CreateOnLoad (insert)); string html = t.Run (); string origin = @"
IDFNameLName
1001MaheshChand
1000YonikLaim
"; HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (html), "ObjectDataSourceViewInsert"); WebTest.Unload (); } public static void insert (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); ObjectDataSourceView view; GridView grid = new GridView (); MyDataSource ds = new MyDataSource (); ds.ID = "ObjectDataSource1"; ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject"; ds.SelectMethod = "Select"; ds.InsertMethod = "Insert"; Parameter p1 = new Parameter ("ID", TypeCode.String); Parameter p2 = new Parameter ("FName", TypeCode.String); Parameter p3 = new Parameter ("LName", TypeCode.String); ds.InsertParameters.Add (p1); ds.InsertParameters.Add (p2); ds.InsertParameters.Add (p3); grid.ID = "Grid"; grid.DataSourceID = "ObjectDataSource1"; p.Form.Controls.Add (lcb); p.Form.Controls.Add (ds); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); view = (ObjectDataSourceView) ds.DoGetView ("DefaultView"); view.Inserting += new ObjectDataSourceMethodEventHandler (Event); Hashtable table = new Hashtable (); table.Add ("ID", "1000"); table.Add ("FName", "Yonik"); table.Add ("LName", "Laim"); view.Insert (table); Assert.AreEqual (true, view.CanInsert, "CanInsert"); Assert.AreEqual ("Insert", view.InsertMethod, "InsertMethod"); Assert.AreEqual (3, view.InsertParameters.Count, "InsertParameters.Count"); Assert.AreEqual ("ID", view.InsertParameters[0].Name, "InsertParametersName#1"); Assert.AreEqual ("FName", view.InsertParameters[1].Name, "InsertParametersName#2"); Assert.AreEqual ("LName", view.InsertParameters[2].Name, "InsertParametersName#3"); ObjectDataSourceViewTest.Eventassert ("Insert event has not fired"); } [Test] [Category ("NunitWeb")] public void UpdateMethod () { WebTest t = new WebTest (PageInvoker.CreateOnLoad (update)); string html = t.Run (); string origin = @"
IDFNameLName
1001YonikLaim
"; HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (html), "ObjectDataSourceViewUpdate"); WebTest.Unload (); } public static void update (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); ObjectDataSourceView view; GridView grid = new GridView (); MyDataSource ds = new MyDataSource (); ds.ID = "ObjectDataSource1"; ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject"; ds.SelectMethod = "Select"; ds.DeleteMethod = "Delete"; ds.InsertMethod = "Insert"; ds.UpdateMethod = "Update"; Parameter p1 = new Parameter ("ID", TypeCode.String); Parameter p2 = new Parameter ("FName", TypeCode.String); Parameter p3 = new Parameter ("LName", TypeCode.String); ds.UpdateParameters.Add (p1); ds.UpdateParameters.Add (p2); ds.UpdateParameters.Add (p3); grid.ID = "Grid"; grid.DataSourceID = "ObjectDataSource1"; p.Form.Controls.Add (lcb); p.Form.Controls.Add (ds); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); view = (ObjectDataSourceView) ds.DoGetView ("defaultView"); view.Updating += new ObjectDataSourceMethodEventHandler (Event); Hashtable table = new Hashtable (); table.Add ("ID", "1001"); table.Add ("FName", "Yonik"); table.Add ("LName", "Laim"); view.Update (null, table, null); Assert.AreEqual (true, view.CanUpdate, "CanUpdate"); Assert.AreEqual ("Update", view.UpdateMethod, "UpdateMethod"); Assert.AreEqual (3, view.UpdateParameters.Count, "UpdateParameters.Count"); Assert.AreEqual ("ID", view.UpdateParameters[0].Name, "UpdateParametersName#1"); Assert.AreEqual ("FName", view.UpdateParameters[1].Name, "UpdateParametersName#2"); Assert.AreEqual ("LName", view.UpdateParameters[2].Name, "UpdateParametersName#3"); ObjectDataSourceViewTest.Eventassert ("Update event has not fired"); } //Events [Test] public void UpdateEvent () { ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null); view.Updating += new ObjectDataSourceMethodEventHandler (Event); view.DoOnUpdating (new ObjectDataSourceMethodEventArgs (null)); Eventassert ("UpdateEvent"); view.Updated += new ObjectDataSourceStatusEventHandler (view_Status); view.DoOnUpdated (new ObjectDataSourceStatusEventArgs (null, null)); Eventassert ("UpdateEvent"); } [Test] public void SelectEvent () { ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null); view.Selecting += new ObjectDataSourceSelectingEventHandler (view_Selecting); view.DoOnSelecting (new ObjectDataSourceSelectingEventArgs (null, new DataSourceSelectArguments (), false)); Eventassert ("SelectingEvent"); view.Selected += new ObjectDataSourceStatusEventHandler (view_Status); view.DoOnSelected (new ObjectDataSourceStatusEventArgs (null, null)); Eventassert ("SelectedEvent"); } [Test] public void InsertEvent () { ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null); view.Inserting += new ObjectDataSourceMethodEventHandler (Event); view.DoOnInserting (new ObjectDataSourceMethodEventArgs (null)); Eventassert ("InsertingEvent"); view.Inserted += new ObjectDataSourceStatusEventHandler (view_Status); view.DoOnInserted (new ObjectDataSourceStatusEventArgs (null, null)); Eventassert ("InsertedEvent"); } [Test] public void DeleteEvent () { ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null); view.Deleting += new ObjectDataSourceMethodEventHandler (Event); view.DoOnDeleting (new ObjectDataSourceMethodEventArgs (null)); Eventassert ("DeletingEvent"); view.Deleted += new ObjectDataSourceStatusEventHandler (view_Status); view.DoOnDeleted (new ObjectDataSourceStatusEventArgs (null, null)); Eventassert ("DeletedEvent"); } [Test] public void FilterEvent () { ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null); view.Filtering += new ObjectDataSourceFilteringEventHandler (view_Filtering); view.DoOnFiltering (new ObjectDataSourceFilteringEventArgs (null)); Eventassert ("FilterEvent"); } [Test] public void ObjectCreatingEvent () { ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null); view.ObjectCreating += new ObjectDataSourceObjectEventHandler (view_ObjectCreate); view.DoOnObjectCreating (new ObjectDataSourceEventArgs (null)); Eventassert ("ObjectCreatingEvent"); view.ObjectCreated += new ObjectDataSourceObjectEventHandler (view_ObjectCreate); view.DoOnObjectCreated (new ObjectDataSourceEventArgs (null)); Eventassert ("ObjectCreatedEvent"); view.ObjectDisposing += new ObjectDataSourceDisposingEventHandler (view_ObjectDisposing); } [Test] public void ObjectDisposing () { ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null); view.ObjectDisposing += new ObjectDataSourceDisposingEventHandler (view_ObjectDisposing); view.DoOnObjectDisposing (new ObjectDataSourceDisposingEventArgs (null)); Eventassert ("ObjectDisposing"); } /// /// Helper methods /// private static bool event_checker; private static void Eventassert (string message) { Assert.IsTrue (ObjectDataSourceViewTest.event_checker, message); ObjectDataSourceViewTest.event_checker = false; } static void Event (object sender, ObjectDataSourceMethodEventArgs e) { ObjectDataSourceViewTest.event_checker = true; } static void view_Selecting (object sender, ObjectDataSourceSelectingEventArgs e) { event_checker = true; } void view_Filtering (object sender, ObjectDataSourceFilteringEventArgs e) { event_checker = true; } void view_ObjectCreate (object sender, ObjectDataSourceEventArgs e) { event_checker = true; } void view_Status (object sender, ObjectDataSourceStatusEventArgs e) { event_checker = true; } void view_ObjectDisposing (object sender, ObjectDataSourceDisposingEventArgs e) { event_checker = true; } private class MyDataSource : ObjectDataSource { public DataSourceView DoGetView (string viewName) { return base.GetView (viewName); } public void DoTrackViewState () { base.TrackViewState (); } } } public class DataSourceObject { private static int maximumRows; public static DataTable ds = CreateDataTable (); public static DataTable Select () { return ds; } public static DataTable Select (int maximumRows, int startRowIndex) { DataSourceObject.maximumRows = maximumRows; if (ds.Rows.Count > maximumRows) { DataTable temp = ds.Clone (); int i = 0; while (i < maximumRows && startRowIndex <= ds.Rows.Count) { object[] o = ds.Rows[startRowIndex].ItemArray; temp.Rows.Add (o); i++; startRowIndex++; } return temp; } return ds; } public static DataTable Delete (string ID, string FName, string LName) { DataRow dr = ds.Rows.Find (ID); if (dr != null) { ds.Rows.Remove (dr); } return ds; } public static DataTable Insert (string ID, string FName, string LName) { DataRow dr = ds.NewRow (); dr["ID"] = ID; dr["FName"] = FName; dr["LName"] = LName; ds.Rows.Add (dr); return ds; } public static DataTable Update (string ID, string FName, string LName) { foreach (DataRow row in ds.Rows) { if (row["ID"].ToString () == ID) { row["FName"] = FName; row["LName"] = LName; } } return ds; } public static int SelectCount () { //Note: This is return 5 only for test goal return 5; } public static DataTable CreateDataTable () { DataTable aTable = new DataTable ("A"); DataColumn dtCol; DataRow dtRow; // Create ID column and add to the DataTable. dtCol = new DataColumn (); dtCol.DataType = Type.GetType ("System.Int32"); dtCol.ColumnName = "ID"; dtCol.AutoIncrement = true; dtCol.Caption = "ID"; dtCol.ReadOnly = true; dtCol.Unique = true; aTable.Columns.Add (dtCol); // Create Name column and add to the table dtCol = new DataColumn (); dtCol.DataType = Type.GetType ("System.String"); dtCol.ColumnName = "FName"; dtCol.AutoIncrement = false; dtCol.Caption = "First Name"; dtCol.ReadOnly = false; dtCol.Unique = false; aTable.Columns.Add (dtCol); // Create Last Name column and add to the table. dtCol = new DataColumn (); dtCol.DataType = Type.GetType ("System.String"); dtCol.ColumnName = "LName"; dtCol.AutoIncrement = false; dtCol.Caption = "Last Name"; dtCol.ReadOnly = false; dtCol.Unique = false; aTable.Columns.Add (dtCol); // Create three rows to the table dtRow = aTable.NewRow (); dtRow["ID"] = 1001; dtRow["FName"] = "Mahesh"; dtRow["LName"] = "Chand"; aTable.Rows.Add (dtRow); aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] }; return aTable; } } } #endif