瀏覽代碼

Add new tests and resources to System.Web.UI.PageTest.cs

svn path=/trunk/mcs/; revision=66223
Yoni Klain 19 年之前
父節點
當前提交
e79e86ca44

+ 6 - 0
mcs/class/System.Web/ChangeLog

@@ -1,3 +1,9 @@
+2006-10-04 Yoni Klain <[email protected]>
+	* System.Web.UI.Page.Test.cs new tests added;
+    * MakeFile: add new resources for PageTest.cs :
+    Test/mainsoft/NunitWebResources/PageLifecycleTest.aspx ;
+	Test/mainsoft/NunitWebResources/PageValidationTest.aspx ;
+	
 2006-10-03 Hagit Yidov <[email protected]>
 
 	* ImageMapTest.cs: New test was added

+ 2 - 0
mcs/class/System.Web/Makefile

@@ -117,6 +117,8 @@ TEST_RESOURCE_FILES = \
 	Test/mainsoft/NunitWebResources/MyPageWithDerivedMaster.aspx \
 	Test/mainsoft/NunitWebResources/MasterTypeTest1.aspx \
 	Test/mainsoft/NunitWebResources/MasterTypeTest2.aspx \
+	Test/mainsoft/NunitWebResources/PageLifecycleTest.aspx \
+	Test/mainsoft/NunitWebResources/PageValidationTest.aspx \
 	Test/mainsoft/MainsoftWebTest/nunitweb_config.xml 
 
 NUNIT_RESOURCE_FILES = $(TEST_RESOURCE_FILES)

+ 4 - 0
mcs/class/System.Web/Test/System.Web.UI/ChangeLog

@@ -1,3 +1,7 @@
+2006-10-04  Klain Yoni   <[email protected]>
+
+	* PageTest.cs: New test.
+
 2006-09-18  Igor Zelmanovich   <[email protected]>
 
 	* PageTest.cs: removed NotWorking attributes.

+ 340 - 1
mcs/class/System.Web/Test/System.Web.UI/PageTest.cs

@@ -4,6 +4,7 @@
 // Authors:
 //	Peter Dennis Bartok ([email protected])
 //	Sebastien Pouliot  <[email protected]>
+//      Yoni Klain         <[email protected]>
 //
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
@@ -38,6 +39,7 @@ using MonoTests.SystemWeb.Framework;
 using MonoTests.stand_alone.WebHarness;
 using System.Web.UI.WebControls;
 using System.Web.UI.HtmlControls;
+using System.Collections;
 
 namespace MonoTests.System.Web.UI {
 
@@ -82,6 +84,24 @@ namespace MonoTests.System.Web.UI {
 	[TestFixture]	
 	public class PageTest {
 
+		[TestFixtureSetUp]
+		public void CopyTestResources ()
+		{
+#if DOT_NET
+			WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.PageValidationTest.aspx", "PageValidationTest.aspx");
+			WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.PageLifecycleTest.aspx", "PageLifecycleTest.aspx");
+#else
+			WebTest.CopyResource (GetType (), "PageValidationTest.aspx", "PageValidationTest.aspx");
+			WebTest.CopyResource (GetType (), "PageLifecycleTest.aspx", "PageLifecycleTest.aspx");
+#endif
+		}
+
+		[SetUp]
+		public void SetUpTest ()
+		{
+			Thread.Sleep (100);
+		}
+
 		[Test]
 		[ExpectedException (typeof(HttpException))]
 		public void RequestExceptionTest ()
@@ -334,7 +354,326 @@ namespace MonoTests.System.Web.UI {
 			Assert.AreEqual (1, page.GetValidators ("VG2").Count, "Page_ValidationGroup#6");
 		}
 #endif
+#if NET_2_0
+
+		// This test are testing validation fixture using RequiredFieldValidator for example
+		
+		[Test]
+		[Category ("NunitWeb")]
+		public void Page_ValidationCollection () 
+		{
+			WebTest t = new WebTest (PageInvoker.CreateOnLoad (ValidationCollectionload));
+			t.Run ();
+		}
+
+		public static void ValidationCollectionload (Page p)
+		{
+			RequiredFieldValidator validator = new RequiredFieldValidator ();
+			validator.ID = "v";
+			RequiredFieldValidator validator1 = new RequiredFieldValidator ();
+			validator.ID = "v1";
+			p.Controls.Add (validator);
+			p.Controls.Add (validator1);
+			Assert.AreEqual (2, p.Validators.Count, "Validators collection count fail");
+			Assert.AreEqual (true, p.Validators[0].IsValid, "Validators collection value#1 fail");
+			Assert.AreEqual (true, p.Validators[1].IsValid, "Validators collection value#2 fail");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		[Category ("NunitWeb")]
+		public void Page_ValidatorTest1 ()
+		{
+			WebTest t = new WebTest ("PageValidationTest.aspx");
+			string PageRenderHtml = t.Run ();
+
+			FormRequest fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("TextBox1");
+			PageDelegates pd = new PageDelegates ();
+			pd.PreRender = ValidatorTest1PreRender;
+			t.Invoker = new PageInvoker (pd);
+			fr.Controls["TextBox1"].Value = "";
+			t.Request = fr;
+
+			PageRenderHtml = t.Run ();
+			Assert.IsNotNull(t.UserData, "Validate server side method not raised fail");
+			ArrayList list = t.UserData as ArrayList;
+			if (list == null)
+				Assert.Fail ("User data not created fail#1");
+			Assert.AreEqual (1, list.Count, "Just validate with no validation group must be called fail#1");
+			Assert.AreEqual ("Validate", list[0].ToString (), "Validate with no validation group must be called fail#1");
+		}
+
+		public static void ValidatorTest1PreRender (Page p)
+		{
+			Assert.AreEqual (1, p.Validators.Count, "Validators count fail#1");
+			Assert.AreEqual (false, p.Validators[0].IsValid, "Specific validator value filed#1");
+			Assert.AreEqual (false, p.IsValid, "Page validation Failed#1");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		[Category ("NunitWeb")]
+		public void Page_ValidatorTest2 ()
+		{
+			WebTest t = new WebTest ("PageValidationTest.aspx");
+			string PageRenderHtml = t.Run ();
+
+			FormRequest fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("TextBox1");
+			PageDelegates pd = new PageDelegates ();
+			pd.PreRender = ValidatorTest2PreRender;
+			t.Invoker = new PageInvoker (pd);
+			fr.Controls["TextBox1"].Value = "test";
+			t.Request = fr;
+
+			PageRenderHtml = t.Run ();
+			Assert.IsNotNull ( t.UserData, "Validate server side method not raised fail#2");
+			ArrayList list = t.UserData as ArrayList;
+			if (list == null)
+			Assert.Fail ("User data not created fail#2");
+			Assert.AreEqual (1, list.Count, "Just validate with no validation group must be called fail#2");
+			Assert.AreEqual ("Validate", list[0].ToString (), "Validate with no validation group must be called fail#2");
+		}
+
+		public static void ValidatorTest2PreRender (Page p)
+		{
+			Assert.AreEqual (1, p.Validators.Count, "Validators count fail#2");
+			Assert.AreEqual (true, p.Validators[0].IsValid, "Specific validator value fail#2");
+			Assert.AreEqual (true, p.IsValid, "Page validation Fail#2");
+		}
+
+		[Test]
+		[Category ("NunitWeb")]
+		public void Page_ValidatorTest3 ()
+		{
+			WebTest t = new WebTest (PageInvoker.CreateOnLoad (ValidatorTest3Load));
+			t.Run ();
+		}
+
+		public static void ValidatorTest3Load (Page p)
+		{
+			TextBox tbx = new TextBox ();
+			tbx.ID = "tbx";
+			RequiredFieldValidator vld = new RequiredFieldValidator ();
+			vld.ID = "vld";
+			vld.ControlToValidate = "tbx";
+			p.Controls.Add (tbx);
+			p.Controls.Add (vld);
+			vld.Validate ();
+			Assert.AreEqual (false, p.Validators[0].IsValid, "RequiredField result fail #1");
+			tbx.Text = "test";
+			vld.Validate ();
+			Assert.AreEqual (true, p.Validators[0].IsValid, "RequiredField result fail #2");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		[Category ("NunitWeb")]
+		public void Page_ValidatorTest4 ()
+		{
+			WebTest t = new WebTest ("PageValidationTest.aspx");
+			string PageRenderHtml = t.Run ();
+
+			FormRequest fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("__EVENTTARGET");
+			fr.Controls.Add ("__EVENTARGUMENT");
+			fr.Controls.Add ("TextBox1");
+			fr.Controls.Add ("Button1");
+
+			PageDelegates pd = new PageDelegates ();
+			pd.PreRender = ValidatorTest4PreRender;
+			t.Invoker = new PageInvoker (pd);
+			fr.Controls["__EVENTTARGET"].Value = "";
+			fr.Controls["__EVENTARGUMENT"].Value = "";
+			fr.Controls["TextBox1"].Value = "";
+			fr.Controls["Button1"].Value = "Button";
+			t.Request = fr;
+
+			PageRenderHtml = t.Run ();
+			Assert.IsNotNull (t.UserData, "Validate server side method not raised fail#3");
+			ArrayList list = t.UserData as ArrayList;
+			if (list == null)
+				Assert.Fail ("User data not created fail#3");
+			Assert.AreEqual (1, list.Count, "Just validate with validation group must be called fail#3");
+			Assert.AreEqual ("Validate_WithGroup", list[0].ToString (), "Validate with validation group must be called fail#3");
+		}
 
+		public static void ValidatorTest4PreRender (Page p)
+		{
+			Assert.AreEqual (1, p.Validators.Count, "Validators count fail#3");
+			Assert.AreEqual (false, p.Validators[0].IsValid, "Specific validator value filed#3");
+			Assert.AreEqual (false, p.IsValid, "Page validation Failed#3");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		[Category ("NunitWeb")]
+		public void Page_ValidatorTest5 ()
+		{
+			WebTest t = new WebTest ("PageValidationTest.aspx");
+			string PageRenderHtml = t.Run ();
+
+			FormRequest fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("__EVENTTARGET");
+			fr.Controls.Add ("__EVENTARGUMENT");
+			fr.Controls.Add ("TextBox1");
+			fr.Controls.Add ("Button1");
+
+			PageDelegates pd = new PageDelegates ();
+			pd.PreRender = ValidatorTest5PreRender;
+			t.Invoker = new PageInvoker (pd);
+			fr.Controls["__EVENTTARGET"].Value = "";
+			fr.Controls["__EVENTARGUMENT"].Value = "";
+			fr.Controls["TextBox1"].Value = "Test";
+			fr.Controls["Button1"].Value = "Button";
+			t.Request = fr;
+
+			PageRenderHtml = t.Run ();
+			Assert.IsNotNull ( t.UserData, "Validate server side method not raised fail#3");
+			ArrayList list = t.UserData as ArrayList;
+			if (list == null)
+				Assert.Fail ("User data not created fail#3");
+			Assert.AreEqual (1, list.Count, "Just validate with validation group must be called fail#3");
+			Assert.AreEqual ("Validate_WithGroup", list[0].ToString (), "Validate with validation group must be called fail#3");
+		}
+
+		public static void ValidatorTest5PreRender (Page p)
+		{
+			Assert.AreEqual (1, p.Validators.Count, "Validators count fail#3");
+			Assert.AreEqual (true, p.Validators[0].IsValid, "Specific validator value filed#3");
+			Assert.AreEqual (true, p.IsValid, "Page validation Failed#3");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		[Category ("NunitWeb")]
+		public void Page_ValidatorTest6 ()
+		{
+			WebTest t = new WebTest ("PageValidationTest.aspx");
+			string PageRenderHtml = t.Run ();
+
+			FormRequest fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("__EVENTTARGET");
+			fr.Controls.Add ("__EVENTARGUMENT");
+			fr.Controls.Add ("TextBox1");
+			fr.Controls.Add ("Button1");
+
+			PageDelegates pd = new PageDelegates ();
+			pd.PreRender = ValidatorTest6PreRender;
+			pd.Load = ValidatorTest6Load;
+			t.Invoker = new PageInvoker (pd);
+			fr.Controls["__EVENTTARGET"].Value = "";
+			fr.Controls["__EVENTARGUMENT"].Value = "";
+			fr.Controls["TextBox1"].Value = "Test";
+			fr.Controls["Button1"].Value = "Button";
+			t.Request = fr;
+
+			PageRenderHtml = t.Run ();
+			Assert.IsNotNull (t.UserData, "Validate server side method not raised fail#3");
+			ArrayList list = t.UserData as ArrayList;
+			if (list == null)
+				Assert.Fail ("User data not created fail#3");
+			Assert.AreEqual (1, list.Count, "Just validate with validation group must be called fail#3");
+			Assert.AreEqual ("Validate_WithGroup", list[0].ToString (), "Validate with validation group must be called fail#3");
+		}
+
+		public static void ValidatorTest6PreRender (Page p)
+		{
+			Assert.AreEqual (1, p.Validators.Count, "Validators count fail#3");
+			Assert.AreEqual (false, p.Validators[0].IsValid, "Specific validator value filed#3");
+			Assert.AreEqual (false, p.IsValid, "Page validation Failed#3");
+		}
+
+		public static void ValidatorTest6Load (Page p)
+		{
+			if (p.IsPostBack) {
+				RequiredFieldValidator rfv = p.FindControl ("RequiredFieldValidator1") as RequiredFieldValidator;
+				if (rfv == null)
+					Assert.Fail ("RequiredFieldValidator does not created fail");
+				rfv.InitialValue = "Test";
+			}
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		[Category ("NunitWeb")]
+		public void Page_ValidatorTest7 ()
+		{
+			WebTest t = new WebTest ("PageValidationTest.aspx");
+			string PageRenderHtml = t.Run ();
+
+			FormRequest fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("__EVENTTARGET");
+			fr.Controls.Add ("__EVENTARGUMENT");
+			fr.Controls.Add ("TextBox1");
+			fr.Controls.Add ("Button1");
+
+			PageDelegates pd = new PageDelegates ();
+			pd.PreRender = ValidatorTest7PreRender;
+			pd.Load = ValidatorTest7Load;
+			t.Invoker = new PageInvoker (pd);
+			fr.Controls["__EVENTTARGET"].Value = "";
+			fr.Controls["__EVENTARGUMENT"].Value = "";
+			fr.Controls["TextBox1"].Value = "Test";
+			fr.Controls["Button1"].Value = "Button";
+			t.Request = fr;
+
+			PageRenderHtml = t.Run ();
+			Assert.IsNotNull (t.UserData, "Validate server side method not raised fail#4");
+			ArrayList list = t.UserData as ArrayList;
+			if (list == null)
+				Assert.Fail ("User data not created fail#4");
+			Assert.AreEqual (1, list.Count, "Just validate with validation group must be called fail#4");
+			Assert.AreEqual ("Validate_WithGroup", list[0].ToString (), "Validate with validation group must be called fail#4");
+		}
+
+		public static void ValidatorTest7PreRender (Page p)
+		{
+			Assert.AreEqual (2, p.Validators.Count, "Validators count fail#4");
+			Assert.AreEqual (true, p.Validators[0].IsValid, "Specific validator value filed_1#4");
+			Assert.AreEqual (true, p.Validators[1].IsValid, "Specific validator value filed#4_2#4");
+			Assert.AreEqual (true, p.IsValid, "Page validation Failed#4");
+		}
+
+		public static void ValidatorTest7Load (Page p)
+		{
+			RequiredFieldValidator validator = new RequiredFieldValidator ();
+			validator.ID = "validator";
+			validator.ControlToValidate = "TextBox1";
+			validator.ValidationGroup = "fake";
+			validator.InitialValue = "Test";
+			p.Form.Controls.Add (validator);
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		[Category ("NunitWeb")]
+		public void Page_Lifecycle ()
+		{
+			WebTest t = new WebTest ("PageLifecycleTest.aspx");
+			string PageRenderHtml = t.Run ();
+			ArrayList eventlist = t.UserData as ArrayList;
+			if (eventlist == null)
+				Assert.Fail ("User data does not been created fail");
+
+			Assert.AreEqual ("OnPreInit", eventlist[0], "Live Cycle Flow #1");
+			Assert.AreEqual ("OnInit", eventlist[1], "Live Cycle Flow #2");
+			Assert.AreEqual ("OnInitComplete", eventlist[2], "Live Cycle Flow #3");
+			Assert.AreEqual ("OnPreLoad", eventlist[3], "Live Cycle Flow #4");
+			Assert.AreEqual ("OnLoad", eventlist[4], "Live Cycle Flow #5");
+			Assert.AreEqual ("OnLoadComplete", eventlist[5], "Live Cycle Flow #6");
+			Assert.AreEqual ("OnPreRender", eventlist[6], "Live Cycle Flow #7");
+			Assert.AreEqual ("OnPreRenderComplete", eventlist[7], "Live Cycle Flow #8");
+			Assert.AreEqual ("OnSaveStateComplete", eventlist[8], "Live Cycle Flow #9");
+			Assert.AreEqual ("OnUnload", eventlist[9], "Live Cycle Flow #10");
+		}
+#endif
+
+		[TestFixtureTearDown]
+		public void TearDown ()
+		{
+			WebTest.Unload ();
+		}
 	}
-	
 }

+ 5 - 0
mcs/class/System.Web/Test/mainsoft/ChangeLog

@@ -1,3 +1,8 @@
+2006-10-04 Yoni Klain <[email protected]>
+	* new resources : 
+	Test/mainsoft/NunitWebResources/PageLifecycleTest.aspx ;
+	Test/mainsoft/NunitWebResources/PageValidationTest.aspx ;
+
 2006-09-19 Yoni Klain <[email protected]>
 	* Web.config added NunitWeb assembly  ;
 	* WebTest.cs remove overriden set url ;

+ 205 - 0
mcs/class/System.Web/Test/mainsoft/NunitWebResources/PageLifecycleTest.aspx

@@ -0,0 +1,205 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+<%@ Import Namespace="MonoTests.SystemWeb.Framework" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head runat="server">
+    <title>Untitled Page</title>
+    <script runat="server">
+        protected override void OnInit (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnInit");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnInit");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnInit (e);
+        }
+
+        protected override void OnInitComplete (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnInitComplete");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnInitComplete");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnInitComplete (e);
+        }
+
+        protected override void OnLoad (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnLoad");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnLoad");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnLoad (e);
+        }
+
+        protected override void OnLoadComplete (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnLoadComplete");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnLoadComplete");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnLoadComplete (e);
+        }
+
+        protected override void OnPreInit (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnPreInit");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnPreInit");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnPreInit (e);
+        }
+
+        protected override void OnPreLoad (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnPreLoad");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnPreLoad");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnPreLoad (e);
+        }
+
+        protected override void OnPreRender (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnPreRender");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnPreRender");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnPreRender (e);
+        }
+
+        protected override void OnPreRenderComplete (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnPreRenderComplete");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnPreRenderComplete");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnPreRenderComplete (e);
+        }
+
+        protected override void OnSaveStateComplete (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnSaveStateComplete");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnSaveStateComplete");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnSaveStateComplete (e);
+        }
+
+        protected override void OnUnload (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnUnload");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnUnload");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnUnload (e);
+        }
+
+        protected override void OnError (EventArgs e)
+        {
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("OnError");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("OnError");
+                WebTest.CurrentTest.UserData = list;
+            }
+            base.OnError (e);
+        }
+    </script>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    
+    </div>
+    </form>
+</body>
+</html>

+ 55 - 0
mcs/class/System.Web/Test/mainsoft/NunitWebResources/PageValidationTest.aspx

@@ -0,0 +1,55 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
+<%@ Import Namespace="MonoTests.SystemWeb.Framework" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head runat="server">
+    <title>Untitled Page</title>
+    <script runat="server">
+        public override void Validate ()
+        {
+            base.Validate ();
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("Validate");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("Validate");
+                WebTest.CurrentTest.UserData = list;
+            }
+        }
+
+        public override void Validate (string validationGroup)
+        {
+            base.Validate (validationGroup);
+            if (WebTest.CurrentTest.UserData == null) {
+                ArrayList list = new ArrayList ();
+                list.Add ("Validate_WithGroup");
+                WebTest.CurrentTest.UserData = list;
+            }
+            else {
+                ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
+                if (list == null)
+                    throw new NullReferenceException ();
+                list.Add ("Validate_WithGroup");
+                WebTest.CurrentTest.UserData = list;
+            }
+        }
+    </script>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+        <asp:TextBox ID="TextBox1" ValidationGroup="valid" runat="server"></asp:TextBox>
+        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="valid"  ControlToValidate="TextBox1" runat="server" ErrorMessage="RequiredFieldValidatorMessage"></asp:RequiredFieldValidator>
+    </div>
+        <input id="Submit1" type="submit" value="submit" />
+        <asp:Button ID="Button1" ValidationGroup="valid" runat="server"
+            Text="Button" />
+    </form>
+</body>
+</html>