// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#if NET_2_0
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using Image = System.Web.UI.WebControls.Image;
using NUnit.Framework;
-using System.Globalization;\r
-using MonoTests.SystemWeb.Framework;\r
+using System.Globalization;
+using MonoTests.SystemWeb.Framework;
using MonoTests.stand_alone.WebHarness;
namespace MonoTests.System.Web.UI.WebControls
{
+ class EncodingTest
+ {
+ public override string ToString ()
+ {
+ return "<EncodingTest>&";
+ }
+ }
+
class PokerBoundField : BoundField
{
public Button bindbutoon;
public Control GetControl {
get { return base.Control; }
}
- }\r
-\r
-\r
+
+ public object DoSaveViewState ()
+ {
+ return SaveViewState ();
+ }
+ }
+
+
[Serializable]
[TestFixture]
public class BoundFieldTest
{
+ [TestFixtureSetUp]
+ public void SetUp ()
+ {
+ WebTest.CopyResource (GetType (), "BoundField_Bug646505.aspx", "BoundField_Bug646505.aspx");
+ WebTest.CopyResource (GetType (), "BoundField_Bug646505.aspx.cs", "BoundField_Bug646505.aspx.cs");
+ }
+
+ [Test (Description="Bug 646505")]
+ public void BoundField_Bug646505 ()
+ {
+#if NET_4_0
+ string originalHtml = "<div>\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"gridView\" style=\"border-collapse:collapse;\">\n\t\t<tr>\n\t\t\t<th scope=\"col\"> </th><th scope=\"col\"> </th>\n\t\t</tr><tr>\n\t\t\t<td><a href=\"javascript:__doPostBack('gridView$ctl02$ctl00','')\">Update</a> <a href=\"javascript:__doPostBack('gridView','Cancel$0')\">Cancel</a></td><td><input name=\"gridView$ctl02$ctl02\" type=\"text\" value=\"False\" /></td>\n\t\t</tr><tr>\n\t\t\t<td><a href=\"javascript:__doPostBack('gridView','Edit$1')\">Edit</a></td><td>False</td>\n\t\t</tr>\n\t</table>\n</div>\n";
+#else
+ string originalHtml = "<div>\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"gridView\" style=\"border-collapse:collapse;\">\n\t\t<tr>\n\t\t\t<th scope=\"col\"> </th><th scope=\"col\"> </th>\n\t\t</tr><tr>\n\t\t\t<td><a href=\"javascript:__doPostBack('gridView$ctl02$ctl00','')\">Update</a> <a href=\"javascript:__doPostBack('gridView','Cancel$0')\">Cancel</a></td><td><input name=\"gridView$ctl02$ctl02\" type=\"text\" value=\"False\" /></td>\n\t\t</tr><tr>\n\t\t\t<td><a href=\"javascript:__doPostBack('gridView','Edit$1')\">Edit</a></td><td>False</td>\n\t\t</tr>\n\t</table>\n</div>\n";
+#endif
+ WebTest t = new WebTest ("BoundField_Bug646505.aspx");
+ t.Run ();
+
+ FormRequest fr = new FormRequest (t.Response, "form1");
+ fr.Controls.Add ("__EVENTTARGET");
+ fr.Controls.Add ("__EVENTARGUMENT");
+ fr.Controls ["__EVENTTARGET"].Value = "gridView";
+ fr.Controls ["__EVENTARGUMENT"].Value = "Edit$0";
+ t.Request = fr;
+ string pageHtml = t.Run ();
+ string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
+
+ HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "#A1");
+ }
+
[Test]
public void BoundField_DefaultProperty () {
PokerBoundField bf = new PokerBoundField ();
bf.DataFormatString = "-{0,8:G}-";
result = bf.DoFormatDataValue (10, false);
Assert.AreEqual ("- 10-", result, "FormatDataValueWithFormat");
+
+ bf.DataFormatString = "-{0:X}-";
+ result = bf.DoFormatDataValue (10, true);
+ Assert.AreEqual ("-A-", result, "FormatDataValueWithFormatAndHtmlEncode");
+
+ bf.DataFormatString = "-{0:X}-";
+ result = bf.DoFormatDataValue (10, false);
+ Assert.AreEqual ("-A-", result, "FormatDataValueWithFormatAndNoHtmlEncode");
+
+ bf.HtmlEncodeFormatString = false;
+ bf.DataFormatString = "-{0:X}-";
+ result = bf.DoFormatDataValue (10, true);
+ Assert.AreEqual ("-10-", result, "NoHtmlEncodeFormatString_HtmlEncode");
+
+ bf.DataFormatString = "-{0:X}-";
+ result = bf.DoFormatDataValue (10, false);
+ Assert.AreEqual ("-A-", result, "NoHtmlEncodeFormatString_NoHtmlEncode");
+ }
+
+ [Test]
+ public void HtmlEncodeFormatString ()
+ {
+ string formatString = "<script>alert ('{0}');</script>";
+ var bf = new PokerBoundField ();
+
+ Assert.IsTrue (bf.HtmlEncodeFormatString, "#A1-2");
+ Assert.IsTrue (bf.HtmlEncode, "#A1-2");
+ Assert.IsTrue (bf.DoSupportsHtmlEncode, "#A1-3");
+
+ bf.DataFormatString = formatString;
+#if NET_4_0
+ Assert.AreEqual ("<script>alert ('<test>');</script>", bf.DoFormatDataValue ("<test>", true), "#A2");
+#else
+ Assert.AreEqual ("<script>alert ('<test>');</script>", bf.DoFormatDataValue ("<test>", true), "#A2");
+#endif
+ Assert.AreEqual (String.Format (formatString, "<test>"), bf.DoFormatDataValue ("<test>", false), "#A3");
+
+ bf.HtmlEncodeFormatString = false;
+ Assert.AreEqual ("<script>alert ('<test>');</script>", bf.DoFormatDataValue ("<test>", true), "#A4");
+
+ var ec = new EncodingTest ();
+ bf.HtmlEncodeFormatString = true;
+#if NET_4_0
+ Assert.AreEqual ("<script>alert ('<EncodingTest>&');</script>", bf.DoFormatDataValue (ec, true), "#A4");
+#else
+ Assert.AreEqual ("<script>alert ('<EncodingTest>&');</script>", bf.DoFormatDataValue (ec, true), "#A4");
+#endif
}
[Test]
- [Category ("NotWorking")]
public void BoundField_GetDesignTimeValue () {
string result;
PokerBoundField bf = new PokerBoundField ();
}
[Test]
- [ExpectedException(typeof(HttpException), "A data item was not found in the container. The container must either implement IDataItemContainer, or have a property named DataItem.")]
+ [ExpectedException(typeof(HttpException), ExpectedMessage="A data item was not found in the container. The container must either implement IDataItemContainer, or have a property named DataItem.")]
public void BoundField_GetValueNull () {
PokerBoundField bf = new PokerBoundField ();
SimpleSpreadsheetRow ds = new SimpleSpreadsheetRow (0, null);
public void BoundField_GetValueExeption () {
PokerBoundField bf = new PokerBoundField ();
bf.DoGetValue (null);
- }\r
-\r
- [Test]\r
- [Category ("NunitWeb")]\r
- public void BoundField_NullValueRender ()\r
- {\r
- string html = new WebTest (PageInvoker.CreateOnLoad (new PageDelegate (BasicRenderTestInit))).Run ();\r
- string orightml = @"<div>\r
- <table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" style=""border-collapse:collapse;"">\r
- <tr>\r
- <th scope=""col""> </th><th scope=""col""> </th>\r
- </tr><tr>\r
- <td>Norway</td><td>Norway</td>\r
- </tr><tr>\r
- <td>Sweden</td><td>Sweden</td>\r
- </tr><tr>\r
- <td>EMPTY</td><td> </td>\r
- </tr><tr>\r
- <td>Italy</td><td>Italy</td>\r
- </tr>\r
- </table>\r
- </div>";\r
- html = HtmlDiff.GetControlFromPageHtml (html);\r
- HtmlDiff.AssertAreEqual (orightml, html, "NullValueRender");\r
- }\r
-\r
- public static void BasicRenderTestInit (Page p)\r
- {\r
- ArrayList myds = new ArrayList ();\r
- myds.Add (new myds_data ("Norway"));\r
- myds.Add (new myds_data ("Sweden"));\r
- myds.Add (new myds_data (""));\r
- myds.Add (new myds_data ("Italy"));\r
-\r
- BoundField bf = new BoundField ();\r
- bf.DataField = "Field1";\r
- bf.NullDisplayText = "EMPTY";\r
-\r
- BoundField bf2 = new BoundField ();\r
- bf2.DataField = "Field1";\r
-\r
- GridView GridView1 = new GridView();\r
- GridView1.AutoGenerateColumns = false;\r
- GridView1.Columns.Add (bf);\r
- GridView1.Columns.Add (bf2);\r
- GridView1.DataSource = myds;\r
- GridView1.DataBind ();\r
-\r
- LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);\r
- LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);\r
-\r
- p.Form.Controls.Add (lcb);\r
- p.Form.Controls.Add (GridView1);\r
- p.Form.Controls.Add (lce);\r
- }\r
-\r
- class myds_data\r
- {\r
- string _s = "";\r
- public myds_data (string s)\r
- {\r
- _s = s;\r
- }\r
-\r
- public string Field1\r
- {\r
- get { return _s; }\r
- }\r
- }\r
-\r
+ }
+
+ [Test]
+ [Category ("NunitWeb")]
+ public void BoundField_NullValueRender ()
+ {
+ string html = new WebTest (PageInvoker.CreateOnLoad (new PageDelegate (BasicRenderTestInit))).Run ();
+ string orightml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\"> </th><th scope=\"col\"> </th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Norway</td><td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Sweden</td><td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>EMPTY</td><td> </td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Italy</td><td>Italy</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+ html = HtmlDiff.GetControlFromPageHtml (html);
+ HtmlDiff.AssertAreEqual (orightml, html, "NullValueRender");
+ }
+
+ public static void BasicRenderTestInit (Page p)
+ {
+ ArrayList myds = new ArrayList ();
+ myds.Add (new myds_data ("Norway"));
+ myds.Add (new myds_data ("Sweden"));
+ myds.Add (new myds_data (""));
+ myds.Add (new myds_data ("Italy"));
+
+ BoundField bf = new BoundField ();
+ bf.DataField = "Field1";
+ bf.NullDisplayText = "EMPTY";
+
+ BoundField bf2 = new BoundField ();
+ bf2.DataField = "Field1";
+
+ GridView GridView1 = new GridView();
+ GridView1.AutoGenerateColumns = false;
+ GridView1.Columns.Add (bf);
+ GridView1.Columns.Add (bf2);
+ GridView1.DataSource = myds;
+ GridView1.DataBind ();
+
+ LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
+ LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
+
+ p.Form.Controls.Add (lcb);
+ p.Form.Controls.Add (GridView1);
+ p.Form.Controls.Add (lce);
+ }
+
+ class myds_data
+ {
+ string _s = "";
+ public myds_data (string s)
+ {
+ _s = s;
+ }
+
+ public string Field1
+ {
+ get { return _s; }
+ }
+ }
+
class ControlWithDataItem : Control
{
}
}
}
-#endif
\ No newline at end of file