Author: andrews
Date: 2006-06-25 11:57:40 -0400 (Sun, 25 Jun 2006)
New Revision: 62035

Added:
   trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseControl.cs
   
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseControlCollection.cs
Modified:
   trunk/mcs/class/System.Web/ChangeLog
   trunk/mcs/class/System.Web/System.Web_test.dll.sources
   trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs
   trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/NunitWeb.csproj
   trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/PostableRequest.cs
   
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/PostableWorkerRequest.cs
   trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/Test1/Class1.cs
Log:
refactor in NunitWeb

Modified: trunk/mcs/class/System.Web/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/ChangeLog        2006-06-25 14:22:48 UTC (rev 
62034)
+++ trunk/mcs/class/System.Web/ChangeLog        2006-06-25 15:57:40 UTC (rev 
62035)
@@ -1,12 +1,11 @@
+2006-06-25 Andrew Skiba <[EMAIL PROTECTED]>
+
+       * System.Web_test.dll.sources: add BaseControl.cs and
+       BaseControlCollection.cs
+
 2006-06-25 Yoni Klain <[EMAIL PROTECTED]>
 
-       * System.Web_test.dll.sources: 
-       * add GridView test and GridView subclasses
-       * GridViewTest.cs;
-       * AutoGeneratedFieldTest.cs;BoundFieldTest.cs;DataControlFieldTest.cs;
-       * DataControlFieldCollectionTest.cs;DataKeyArrayTest.cs;
-       * DataKeyTest.cs;ButtonFieldBaseTest.cs;HyperLinkFieldTest.cs;
-       * CommandFieldTest.cs;CheckBoxFieldTest.cs;TemplateFieldTest.cs 
+       * System.Web_test.dll.sources: add GridView test and GridView subclasses
 
 2006-06-21 Andrew Skiba <[EMAIL PROTECTED]>
 

Modified: trunk/mcs/class/System.Web/System.Web_test.dll.sources
===================================================================
--- trunk/mcs/class/System.Web/System.Web_test.dll.sources      2006-06-25 
14:22:48 UTC (rev 62034)
+++ trunk/mcs/class/System.Web/System.Web_test.dll.sources      2006-06-25 
15:57:40 UTC (rev 62035)
@@ -12,6 +12,8 @@
 mainsoft/MainsoftWebTest/HtmlAgilityPack/tools.cs
 mainsoft/MainsoftWebTest/NunitWebTest.cs
 mainsoft/MainsoftWebTest/XmlComparer.cs
+mainsoft/NunitWeb/NunitWeb/BaseControl.cs
+mainsoft/NunitWeb/NunitWeb/BaseControlCollection.cs
 mainsoft/NunitWeb/NunitWeb/BaseInvoker.cs
 mainsoft/NunitWeb/NunitWeb/BaseRequest.cs
 mainsoft/NunitWeb/NunitWeb/BaseWorkerRequest.cs

Added: trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseControl.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseControl.cs   
2006-06-25 14:22:48 UTC (rev 62034)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseControl.cs   
2006-06-25 15:57:40 UTC (rev 62035)
@@ -0,0 +1,32 @@
+using System;
+
+namespace MonoTests.SystemWeb.Framework
+{
+       [Serializable]
+       public class BaseControl
+       {
+               string _name;
+               public virtual string Name
+               {
+                       get { return _name; }
+                       set { _name = value; }
+               }
+
+               string _value;
+               public virtual string Value
+               {
+                       get { return _value; }
+                       set { _value = value; }
+               }
+
+               /// <summary>
+               /// Returns true, if the control is valid for submission. 
Override
+               /// to implement different controls validation. See
+               /// 
http://www.w3.org/TR/REC-html40/interact/forms.html#successful-controls
+               /// </summary>
+               public virtual bool IsSuccessful () 
+               {
+                       return true;
+               }
+       }
+}

Added: 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseControlCollection.cs
===================================================================
--- 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseControlCollection.cs
 2006-06-25 14:22:48 UTC (rev 62034)
+++ 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseControlCollection.cs
 2006-06-25 15:57:40 UTC (rev 62035)
@@ -0,0 +1,26 @@
+using System;
+using System.Collections;
+using System.Collections.Specialized;
+
+namespace MonoTests.SystemWeb.Framework
+{
+       public class BaseControlCollection : NameObjectCollectionBase 
+       {
+               public BaseControl this [string name]
+               {
+                       get {return base.BaseGet (name) as BaseControl;}
+                       set {base.BaseSet (name, value);}
+               }
+
+               public void Remove (string name)
+               {
+                       base.BaseRemove (name);
+               }
+
+               public void Add (BaseControl control)
+               {
+                       base.BaseAdd (control.Name, control);
+               }
+
+       }
+}

Modified: 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs   
2006-06-25 14:22:48 UTC (rev 62034)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs   
2006-06-25 15:57:40 UTC (rev 62035)
@@ -11,10 +11,21 @@
        [Serializable]
        public class FormRequest : PostableRequest
        {
+               private BaseControlCollection _controls;
+               public BaseControlCollection Controls
+               {
+                       get { return _controls; }
+                       set { _controls = value; }
+               }
+
                public FormRequest (Response response, string formId)
                {
-                       fields = new NameValueCollection();
+                       _controls = new BaseControlCollection ();
+                       ExtractFormAndHiddenControls (response, formId);
+               }
 
+               private void ExtractFormAndHiddenControls (Response response, 
string formId)
+               {
                        HtmlAgilityPack.HtmlDocument htmlDoc = new 
HtmlAgilityPack.HtmlDocument ();
                        htmlDoc.LoadHtml (response.Body);
 
@@ -52,23 +63,22 @@
 
                        foreach (XmlNode inputNode in formNode.SelectNodes 
("//html:input", nsmgr))
 #else
-                       foreach (XmlNode inputNode in doc.SelectNodes 
("//html:input", nsmgr))
+                       foreach (XmlNode inputNode in doc.SelectNodes 
("//html:[EMAIL PROTECTED]'hidden']", nsmgr))
 #endif
-                       {
-                               string name;
-                               string value = "";
-                               name = inputNode.Attributes["name"].Value;
+ {
+                               BaseControl bc = new BaseControl ();
+                               bc.Name = inputNode.Attributes["name"].Value;
+                               if (bc.Name == null || bc.Name == string.Empty)
+                                       continue;
                                if (inputNode.Attributes["value"] != null)
-                                       value = 
inputNode.Attributes["value"].Value;
-                               fields.Add (name, value);
+                                       bc.Value = 
inputNode.Attributes["value"].Value;
+                               else
+                                       bc.Value = "";
+
+                               Controls[bc.Name] = bc;
                        }
                }
 
-               private NameValueCollection fields;
-               public NameValueCollection Fields
-               {
-                       get { return fields; }
-               }
 
                public override string Url
                {
@@ -88,10 +98,16 @@
                        set { throw new Exception ("Must not change 
PostContentType of FormPostback"); }
                }
 
-               public override byte[] PostData
+               public override byte[] EntityBody
                {
-                       get { return Encoding.ASCII.GetBytes (GetParameters 
()); }
-                       set { throw new Exception ("Must not change PostData of 
FormPostback"); }
+                       get
+                       {
+                               if (IsPost)
+                                       return Encoding.ASCII.GetBytes 
(GetUrlencodedDataset ());
+                               else
+                                       return null;
+                       }
+                       set { throw new Exception ("Must not change EntityBody 
of FormPostback"); }
                }
 
                protected override string GetQueryString ()
@@ -99,21 +115,25 @@
                        if (IsPost)
                                return "";
                        else
-                               return GetParameters ();
+                               return GetUrlencodedDataset ();
                }
 
-               protected string GetParameters ()
+               private string GetUrlencodedDataset ()
                {
                        StringBuilder query = new StringBuilder ();
                        bool first = true;
-                       foreach (string key in Fields.AllKeys) {
+                       foreach (BaseControl ctrl in Controls) {
+                               if (!ctrl.IsSuccessful ())
+                                       continue;
+
                                if (first)
                                        first = false;
                                else
                                        query.Append ("&");
-                               query.Append (HttpUtility.UrlEncode (key));
+
+                               query.Append (HttpUtility.UrlEncode 
(ctrl.Name));
                                query.Append ("=");
-                               query.Append (HttpUtility.UrlEncode 
(Fields[key]));
+                               query.Append (HttpUtility.UrlEncode 
(ctrl.Value));
                        }
                        return query.ToString ();
                }

Modified: 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/NunitWeb.csproj
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/NunitWeb.csproj  
2006-06-25 14:22:48 UTC (rev 62034)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/NunitWeb.csproj  
2006-06-25 15:57:40 UTC (rev 62035)
@@ -35,6 +35,8 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="BaseControl.cs" />
+    <Compile Include="BaseControlCollection.cs" />
     <Compile Include="BaseInvoker.cs" />
     <Compile Include="BaseRequest.cs" />
     <Compile Include="FormRequest.cs" />

Modified: 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/PostableRequest.cs
===================================================================
--- 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/PostableRequest.cs   
    2006-06-25 14:22:48 UTC (rev 62034)
+++ 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/PostableRequest.cs   
    2006-06-25 15:57:40 UTC (rev 62035)
@@ -13,11 +13,11 @@
                        set { _isPost = value; }
                }
 
-               byte[] postData;
-               public virtual byte[] PostData
+               byte[] entityBody;
+               public virtual byte[] EntityBody
                {
-                       get { return postData; }
-                       set { postData = value; }
+                       get { return entityBody; }
+                       set { entityBody = value; }
                }
 
                string postContentType;
@@ -39,10 +39,10 @@
 
                protected override BaseWorkerRequest CreateBaseWorkerRequest 
(StringWriter wr)
                {
-                       if (PostData == null || !IsPost)
+                       if (EntityBody == null || !IsPost)
                                return base.CreateBaseWorkerRequest (wr);
                        return new PostableWorkerRequest (Url, GetQueryString 
(),
-                               wr, PostData, PostContentType);
+                               wr, EntityBody, PostContentType);
                }
        }
 }

Modified: 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/PostableWorkerRequest.cs
===================================================================
--- 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/PostableWorkerRequest.cs
 2006-06-25 14:22:48 UTC (rev 62034)
+++ 
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/PostableWorkerRequest.cs
 2006-06-25 15:57:40 UTC (rev 62035)
@@ -6,24 +6,24 @@
 {
        public class PostableWorkerRequest:BaseWorkerRequest
        {
-               byte[] postData;
+               byte[] entityBody;
                string postContentType;
 
                public override String GetHttpVerbName ()
                {
-                       if (postData == null)
+                       if (entityBody == null)
                                return base.GetHttpVerbName ();
                        return "POST";
                }
 
                public override string GetKnownRequestHeader (int index)
                {
-                       if (postData == null)
+                       if (entityBody == null)
                                return base.GetKnownRequestHeader (index);
                        
                        switch (index) {
                        case HttpWorkerRequest.HeaderContentLength:
-                               return postData.Length.ToString ();
+                               return entityBody.Length.ToString ();
                        case HttpWorkerRequest.HeaderContentType:
                                return postContentType;
                        default:
@@ -33,15 +33,16 @@
 
                public override byte[] GetPreloadedEntityBody ()
                {
-                       if (postData == null)
+                       if (entityBody == null)
                                return base.GetPreloadedEntityBody ();
-                       return postData;
+                       return entityBody;
                }
 
-               public PostableWorkerRequest (string page, string query, 
TextWriter writer, byte[] postData, string postContentType)
+               public PostableWorkerRequest (string page, string query, 
TextWriter writer,
+                       byte[] entityBody, string postContentType)
                        : base (page, query, writer)
                {
-                       this.postData = postData;
+                       this.entityBody = entityBody;
                        this.postContentType = postContentType;
                }
        }

Modified: trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/Test1/Class1.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/Test1/Class1.cs   
2006-06-25 14:22:48 UTC (rev 62034)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/Test1/Class1.cs   
2006-06-25 15:57:40 UTC (rev 62035)
@@ -139,12 +139,12 @@
                        WebTest t = new WebTest ("Postback.aspx");
                        string res1 = t.Run ();
                        FormRequest fr = new FormRequest (t.Response, "form1");
-                       fr.Fields["txt1"] = "value";
+                       fr.Controls["txt1"].Value = "value";
                        WebTest t1 = new WebTest (fr);
                        string res2 = t1.Run ();
                        FormRequest fr1 = new FormRequest (t1.Response, 
"form1");
-                       fr.Fields["txt1"] = "value1";
-                       string res3 = new WebTest (fr).Run ();
+                       fr1.Controls["txt1"].Value = "value1";
+                       string res3 = new WebTest (fr1).Run ();
                        Assert.IsTrue (res3.IndexOf ("value1") != -1);
                }
 

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to