Explorar el Código

This commit introduces a few 4.0 rendering changes which break some tests. The broken tests
fail to work on .NET 4.0 as well, for the most part. I will fix them next week.

2010-07-02 Marek Habersack <[email protected]>

* TemplateControlParser.cs: added support for ClientIDMode
property

* Control.cs: implemented 4.0 features - ClientIDMode and
RenderingCompatibility.

* ClientIDMode.cs, IDataKeysControl.cs: added

2010-07-02 Marek Habersack <[email protected]>

* Menu.cs: 4.0 API updates.

* GridView.cs: implemented 4.0 properties -
SortedAscendingCellStyle, SortedAscendingHeaderStyle,
SortedDescendingCellStyle, SortedDescendingHeaderStyle,
ClientIDRowSuffix, ClientIDRowSuffixDataKeys, ShowHeaderWhenEmpty
along with associated rendering changes.

* DetailsView.cs, FormView.cs, GridView.cs: 4.0 API changes -
renamed ShowPage to SetPageIndex and made it public.
Added 4.0 interfaces to inheritance list and implemented them.

* DataKeyArray.cs: added internal constructor which accepts IList
instead of ArrayList. Changed the 'keys' field type to IList.

* ContainedTable.cs: the 'id' attribute must be rendered last.

* CheckBox.cs, CheckBoxList.cs, SiteMapPath.cs, Table.cs,
TableStyle.cs, TextBox.cs, WebControl.cs: 4.0 rendering changes.

* Calendar.cs, CompositeControl.cs, DropDownList.cs, HyperLink.cs,
Image.cs, ImageButton.cs, Label.cs, LinkButton.cs, LoginName.cs,
Panel.cs, Table.cs, TableCell.cs, TableRow.cs:
added new 4.0 property, SupportsDisabledAttribute.

2010-07-02 Marek Habersack <[email protected]>

* VersionConverter.cs: added support for checking whether the
passed version is equal or more than a specified minimal version.

* PagesSection.cs: added two 4.0 properties - ClientIDMode and
ControlRenderingCompatibilityVersion

2010-07-02 Marek Habersack <[email protected]>

* TemplateControlCompiler.cs: added support for ClientIDMode 4.0
property

* PageCompiler.cs, UserControlCompiler.cs: AddStatementsToInitTop
must call the base implementation.

svn path=/trunk/mcs/; revision=159826

Marek Habersack hace 15 años
padre
commit
d8838a6414
Se han modificado 100 ficheros con 16973 adiciones y 402 borrados
  1. 1 1
      mcs/class/System.Web/Makefile
  2. 8 0
      mcs/class/System.Web/System.Web.Compilation/ChangeLog
  3. 2 0
      mcs/class/System.Web/System.Web.Compilation/PageCompiler.cs
  4. 15 1
      mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs
  5. 1 0
      mcs/class/System.Web/System.Web.Compilation/UserControlCompiler.cs
  6. 8 0
      mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog
  7. 35 6
      mcs/class/System.Web/System.Web.Configuration_2.0/PagesSection.cs
  8. 4 7
      mcs/class/System.Web/System.Web.Configuration_2.0/PropertyHelper.cs
  9. 16 0
      mcs/class/System.Web/System.Web.Configuration_2.0/VersionConverter.cs
  10. 5 2
      mcs/class/System.Web/System.Web.UI.WebControls/Calendar.cs
  11. 27 0
      mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
  12. 17 10
      mcs/class/System.Web/System.Web.UI.WebControls/CheckBox.cs
  13. 11 1
      mcs/class/System.Web/System.Web.UI.WebControls/CheckBoxList.cs
  14. 5 0
      mcs/class/System.Web/System.Web.UI.WebControls/CompositeControl.cs
  15. 1 2
      mcs/class/System.Web/System.Web.UI.WebControls/ContainedTable.cs
  16. 6 1
      mcs/class/System.Web/System.Web.UI.WebControls/DataKeyArray.cs
  17. 30 10
      mcs/class/System.Web/System.Web.UI.WebControls/DetailsView.cs
  18. 5 1
      mcs/class/System.Web/System.Web.UI.WebControls/DropDownList.cs
  19. 39 9
      mcs/class/System.Web/System.Web.UI.WebControls/FormView.cs
  20. 364 77
      mcs/class/System.Web/System.Web.UI.WebControls/GridView.cs
  21. 5 0
      mcs/class/System.Web/System.Web.UI.WebControls/HyperLink.cs
  22. 6 10
      mcs/class/System.Web/System.Web.UI.WebControls/Image.cs
  23. 5 1
      mcs/class/System.Web/System.Web.UI.WebControls/ImageButton.cs
  24. 5 1
      mcs/class/System.Web/System.Web.UI.WebControls/Label.cs
  25. 5 0
      mcs/class/System.Web/System.Web.UI.WebControls/LinkButton.cs
  26. 5 2
      mcs/class/System.Web/System.Web.UI.WebControls/LoginName.cs
  27. 6 1
      mcs/class/System.Web/System.Web.UI.WebControls/Menu.cs
  28. 27 50
      mcs/class/System.Web/System.Web.UI.WebControls/Panel.cs
  29. 22 19
      mcs/class/System.Web/System.Web.UI.WebControls/SiteMapPath.cs
  30. 18 103
      mcs/class/System.Web/System.Web.UI.WebControls/Style.cs
  31. 12 4
      mcs/class/System.Web/System.Web.UI.WebControls/Table.cs
  32. 5 1
      mcs/class/System.Web/System.Web.UI.WebControls/TableCell.cs
  33. 5 2
      mcs/class/System.Web/System.Web.UI.WebControls/TableRow.cs
  34. 9 6
      mcs/class/System.Web/System.Web.UI.WebControls/TableStyle.cs
  35. 6 1
      mcs/class/System.Web/System.Web.UI.WebControls/TextBox.cs
  36. 44 11
      mcs/class/System.Web/System.Web.UI.WebControls/WebControl.cs
  37. 10 0
      mcs/class/System.Web/System.Web.UI/ChangeLog
  38. 39 0
      mcs/class/System.Web/System.Web.UI/ClientIDMode.cs
  39. 241 9
      mcs/class/System.Web/System.Web.UI/Control.cs
  40. 36 0
      mcs/class/System.Web/System.Web.UI/IDataKeysControl.cs
  41. 4 2
      mcs/class/System.Web/System.Web.UI/PageParser.cs
  42. 26 12
      mcs/class/System.Web/System.Web.UI/TemplateControlParser.cs
  43. 5 0
      mcs/class/System.Web/System.Web_standalone_test.dll.sources
  44. 1 0
      mcs/class/System.Web/System.Web_test.dll.sources
  45. 64 13
      mcs/class/System.Web/Test/System.Web.UI.WebControls/CheckBoxListTest.cs
  46. 15 0
      mcs/class/System.Web/Test/System.Web.UI.WebControls/CheckBoxTest.cs
  47. 1 0
      mcs/class/System.Web/Test/System.Web.UI.WebControls/DataGridTest.cs
  48. 58 3
      mcs/class/System.Web/Test/System.Web.UI.WebControls/DetailsViewTest.cs
  49. 40 1
      mcs/class/System.Web/Test/System.Web.UI.WebControls/FormViewTest.cs
  50. 68 1
      mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs
  51. 37 1
      mcs/class/System.Web/Test/System.Web.UI.WebControls/ImageMapTest.cs
  52. 13 0
      mcs/class/System.Web/Test/System.Web.UI.WebControls/MenuTest.cs
  53. 1 1
      mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeatInfoTest.auto.2.0.cs
  54. 14347 0
      mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeatInfoTest.auto.4.0.cs
  55. 6 5
      mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeatInfoTest.cs
  56. 3 3
      mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeatInfoTest.gen.cs
  57. 133 0
      mcs/class/System.Web/Test/System.Web.UI.WebControls/TableTest.cs
  58. 7 4
      mcs/class/System.Web/Test/System.Web.UI.WebControls/TextBoxTest.cs
  59. 8 3
      mcs/class/System.Web/Test/standalone-runner-support/Helpers.cs
  60. 78 0
      mcs/class/System.Web/Test/standalone-tests/ControlRenderingCompatibilityVersion.cs
  61. 103 0
      mcs/class/System.Web/Test/standalone-tests/DisabledAttributeRendering.cs
  62. 87 0
      mcs/class/System.Web/Test/standalone-tests/GridViewShowHeaderWhenEmpty.cs
  63. 121 0
      mcs/class/System.Web/Test/standalone-tests/GridViewSortingStyles.cs
  64. 3 3
      mcs/class/System.Web/Test/standalone-tests/SiteMapDuplicateEntries_Bug570194.cs
  65. 79 0
      mcs/class/System.Web/Test/standalone-tests/SiteMapPathRendering.cs
  66. 5 1
      mcs/class/System.Web/Test/standalone-tests/WebControlsMustUseIsEnabled_Bug571715.cs
  67. 16 0
      mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/Default.aspx
  68. 29 0
      mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/Default.aspx.cs
  69. 16 0
      mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/LessThan3.5/Default.aspx
  70. 22 0
      mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/LessThan3.5/Default.aspx.cs
  71. 7 0
      mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/LessThan3.5/web.config
  72. 16 0
      mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/MoreThan4.0/Default.aspx
  73. 22 0
      mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/MoreThan4.0/Default.aspx.cs
  74. 7 0
      mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/MoreThan4.0/web.config
  75. 6 0
      mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/web.config
  76. 16 0
      mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/Default.aspx
  77. 7 0
      mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/Global.asax
  78. 16 0
      mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/OldRendering/Default.aspx
  79. 7 0
      mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/OldRendering/web.config
  80. 6 0
      mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/web.config
  81. 16 0
      mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/DefaultClassName/Default.aspx
  82. 16 0
      mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/DefaultClassName/OldRendering/Default.aspx
  83. 7 0
      mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/DefaultClassName/OldRendering/web.config
  84. 6 0
      mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/DefaultClassName/web.config
  85. 11 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/App_Code/TestData.cs
  86. 15 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/Default.aspx
  87. 22 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/Default.aspx.cs
  88. 15 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/NoHeaderAtAll.aspx
  89. 22 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/NoHeaderAtAll.aspx.cs
  90. 15 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/NoHeaderWhenEmpty.aspx
  91. 22 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/NoHeaderWhenEmpty.aspx.cs
  92. 15 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/WithHeaderWhenEmpty.aspx
  93. 22 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/WithHeaderWhenEmpty.aspx.cs
  94. 10 0
      mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/web.config
  95. 10 0
      mcs/class/System.Web/Test/standalone/GridViewSortingStyles/App_Code/TestData.cs
  96. 39 0
      mcs/class/System.Web/Test/standalone/GridViewSortingStyles/App_Code/TestDataComparer.cs
  97. 46 0
      mcs/class/System.Web/Test/standalone/GridViewSortingStyles/App_Code/TestDatabase.cs
  98. 24 0
      mcs/class/System.Web/Test/standalone/GridViewSortingStyles/Default.aspx
  99. 13 0
      mcs/class/System.Web/Test/standalone/GridViewSortingStyles/Default.aspx.cs
  100. 10 0
      mcs/class/System.Web/Test/standalone/GridViewSortingStyles/web.config

+ 1 - 1
mcs/class/System.Web/Makefile

@@ -370,7 +370,7 @@ STANDALONE_TEST_COMPILABLE_TESTS = \
 endif
 
 STANDALONE_TEST_RUNNER = Test/tools/standalone-runner.exe
-RUN_STANDALONE = $(TEST_RUNTIME) $(STANDALONE_TEST_RUNNER)
+RUN_STANDALONE = $(TEST_RUNTIME) $(STANDALONE_TEST_RUNNER) --output=StandaloneTestResult-$(PROFILE).log 
 ifdef TESTNAME
 RUN_STANDALONE += --test=$(TESTNAME)
 endif

+ 8 - 0
mcs/class/System.Web/System.Web.Compilation/ChangeLog

@@ -1,3 +1,11 @@
+2010-07-02  Marek Habersack  <[email protected]>
+
+	* TemplateControlCompiler.cs: added support for ClientIDMode 4.0
+	property
+
+	* PageCompiler.cs, UserControlCompiler.cs: AddStatementsToInitTop
+	must call the base implementation.
+
 2010-06-15  Marek Habersack  <[email protected]>
 
 	* ResourceExpressionBuilder.cs: cast the return value of

+ 2 - 0
mcs/class/System.Web/System.Web.Compilation/PageCompiler.cs

@@ -318,6 +318,8 @@ namespace System.Web.Compilation
 		
 		protected override void AddStatementsToInitMethodTop (ControlBuilder builder, CodeMemberMethod method)
 		{
+			base.AddStatementsToInitMethodTop (builder, method);
+			
 			ILocation directiveLocation = pageParser.DirectiveLocation;
 			AddStatementsFromDirective (builder, method, directiveLocation);
 

+ 15 - 1
mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs

@@ -88,7 +88,8 @@ namespace System.Web.Compilation
 
 		protected void EnsureID (ControlBuilder builder)
 		{
-			if (builder.ID == null || builder.ID.Trim () == "")
+			string id = builder.ID;
+			if (id == null || id.Trim () == String.Empty)
 				builder.ID = builder.GetNextID (null);
 		}
 
@@ -424,6 +425,19 @@ namespace System.Web.Compilation
 		
 		protected virtual void AddStatementsToInitMethodTop (ControlBuilder builder, CodeMemberMethod method)
 		{
+#if NET_4_0
+			ClientIDMode? mode = parser.ClientIDMode;
+			if (mode.HasValue) {
+				var cimRef = new CodeTypeReferenceExpression (typeof (ClientIDMode));
+				cimRef.Type.Options = CodeTypeReferenceOptions.GlobalReference;
+				
+				var assign = new CodeAssignStatement ();
+				assign.Left = new CodePropertyReferenceExpression (thisRef, "ClientIDMode");
+				assign.Right = new CodeFieldReferenceExpression (cimRef, mode.Value.ToString ());
+
+				method.Statements.Add (assign);
+			}
+#endif
 		}
 
 		protected virtual void AddStatementsToInitMethodBottom (ControlBuilder builder, CodeMemberMethod method)

+ 1 - 0
mcs/class/System.Web/System.Web.Compilation/UserControlCompiler.cs

@@ -80,6 +80,7 @@ namespace System.Web.Compilation
 
 		protected override void AddStatementsToInitMethodTop (ControlBuilder builder, CodeMemberMethod method)
 		{
+			base.AddStatementsToInitMethodTop (builder, method);
 			if (parser.MasterPageFile != null) {
 				CodeExpression prop;
 				prop = new CodePropertyReferenceExpression (new CodeArgumentReferenceExpression("__ctrl"), "MasterPageFile");

+ 8 - 0
mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog

@@ -1,3 +1,11 @@
+2010-07-02  Marek Habersack  <[email protected]>
+
+	* VersionConverter.cs: added support for checking whether the
+	passed version is equal or more than a specified minimal version.
+
+	* PagesSection.cs: added two 4.0 properties - ClientIDMode and
+	ControlRenderingCompatibilityVersion 
+
 2010-06-01  Marek Habersack  <[email protected]>
 
 	* HttpRuntimeSection.cs: added 4.0 properties

+ 35 - 6
mcs/class/System.Web/System.Web.Configuration_2.0/PagesSection.cs

@@ -4,7 +4,7 @@
 // Authors:
 //	Chris Toshok ([email protected])
 //
-// (C) 2005 Novell, Inc (http://www.novell.com)
+// (C) 2005-2010 Novell, Inc (http://www.novell.com)
 //
 
 //
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 using System.Configuration;
@@ -63,7 +61,10 @@ namespace System.Web.Configuration
 		static ConfigurationProperty userControlBaseTypeProp;
 		static ConfigurationProperty validateRequestProp;
 		static ConfigurationProperty viewStateEncryptionModeProp;
-
+#if NET_4_0
+		static ConfigurationProperty clientIDModeProp;
+		static ConfigurationProperty controlRenderingCompatibilityVersionProp;
+#endif
 		static PagesSection ()
 		{
 			asyncTimeoutProp = new ConfigurationProperty ("asyncTimeout", typeof (TimeSpan), TimeSpan.FromSeconds (45.0),
@@ -98,7 +99,15 @@ namespace System.Web.Configuration
 			viewStateEncryptionModeProp = new ConfigurationProperty ("viewStateEncryptionMode", typeof (ViewStateEncryptionMode), ViewStateEncryptionMode.Auto,
 										 new GenericEnumConverter (typeof (ViewStateEncryptionMode)), PropertyHelper.DefaultValidator,
 										 ConfigurationPropertyOptions.None);
-
+#if NET_4_0
+			clientIDModeProp = new ConfigurationProperty ("clientIDMode", typeof (ClientIDMode), ClientIDMode.Predictable,
+								      new GenericEnumConverter (typeof (ClientIDMode)), PropertyHelper.DefaultValidator,
+								      ConfigurationPropertyOptions.None);
+			controlRenderingCompatibilityVersionProp = new ConfigurationProperty ("controlRenderingCompatibilityVersion", typeof (Version), new Version (4, 0),
+											      new VersionConverter (3, 5, "The value for the property 'controlRenderingCompatibilityVersion' is not valid. The error is: The control rendering compatibility version must not be less than {1}."),
+											      PropertyHelper.DefaultValidator,
+											      ConfigurationPropertyOptions.None);
+#endif
 			properties = new ConfigurationPropertyCollection ();
 			properties.Add (asyncTimeoutProp);
 			properties.Add (autoEventWireupProp);
@@ -122,6 +131,10 @@ namespace System.Web.Configuration
 			properties.Add (userControlBaseTypeProp);
 			properties.Add (validateRequestProp);
 			properties.Add (viewStateEncryptionModeProp);
+#if NET_4_0
+			properties.Add (clientIDModeProp);
+			properties.Add (controlRenderingCompatibilityVersionProp);
+#endif
 		}
 
 		public PagesSection ()
@@ -284,7 +297,24 @@ namespace System.Web.Configuration
 			get { return (ViewStateEncryptionMode) base [viewStateEncryptionModeProp]; }
 			set { base [viewStateEncryptionModeProp] = value; }
 		}
+#if NET_4_0
+		[ConfigurationProperty ("clientIDMode", DefaultValue = ClientIDMode.Predictable)]
+		public ClientIDMode ClientIDMode {
+			get { return (ClientIDMode) base [clientIDModeProp]; }
+			set { base [clientIDModeProp] = value; }
+		}
 
+		[ConfigurationProperty ("controlRenderingCompatibilityVersion", DefaultValue = "4.0")]
+		public Version ControlRenderingCompatibilityVersion {
+			get { return (Version) base [controlRenderingCompatibilityVersionProp]; }
+			set {
+				if (value == null)
+					throw new ArgumentNullException ("value");
+				
+				base [controlRenderingCompatibilityVersionProp] = value;
+			}
+		}
+#endif
 		protected override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
@@ -298,4 +328,3 @@ namespace System.Web.Configuration
 	}
 }
 
-#endif

+ 4 - 7
mcs/class/System.Web/System.Web.Configuration_2.0/PropertyHelper.cs

@@ -32,11 +32,10 @@ using System;
 using System.ComponentModel;
 using System.Configuration;
 
-#if NET_2_0
-
-namespace System.Web.Configuration {
-
-	internal static class PropertyHelper {
+namespace System.Web.Configuration
+{
+	static class PropertyHelper
+	{
 		internal static WhiteSpaceTrimStringConverter WhiteSpaceTrimStringConverter = new WhiteSpaceTrimStringConverter ();
 		internal static InfiniteTimeSpanConverter InfiniteTimeSpanConverter = new InfiniteTimeSpanConverter ();
 		internal static InfiniteIntConverter InfiniteIntConverter = new InfiniteIntConverter ();
@@ -51,11 +50,9 @@ namespace System.Web.Configuration {
 
 		internal static IntegerValidator IntFromZeroToMaxValidator = new IntegerValidator (0, Int32.MaxValue);
 		internal static IntegerValidator IntFromOneToMax_1Validator = new IntegerValidator (1, Int32.MaxValue - 1);
-
 #if NET_4_0
 		internal static VersionConverter VersionConverter = new VersionConverter ();
 #endif
 	}
 }
 
-#endif

+ 16 - 0
mcs/class/System.Web/System.Web.Configuration_2.0/VersionConverter.cs

@@ -34,6 +34,19 @@ namespace System.Web.Configuration
 {
 	sealed class VersionConverter : ConfigurationConverterBase
 	{
+		Version minVersion;
+		string exceptionText;
+
+		public VersionConverter ()
+		{
+		}
+		
+		public VersionConverter (int minMajor, int minMinor, string exceptionText = null)
+		{
+			minVersion = new Version (minMajor, minMinor);
+			this.exceptionText = exceptionText;
+		}
+		
 		public override object ConvertFrom (ITypeDescriptorContext ctx, CultureInfo ci, object data)
                 {
 			string input = data as string;
@@ -45,6 +58,9 @@ namespace System.Web.Configuration
 			if (!Version.TryParse (input, out result))
 				throw new ConfigurationErrorsException ("The input string wasn't in correct format.");
 
+			if (minVersion != null && result < minVersion)
+				throw new ConfigurationErrorsException (String.Format (exceptionText, result, minVersion));
+			
 			return result;
                 }
 

+ 5 - 2
mcs/class/System.Web/System.Web.UI.WebControls/Calendar.cs

@@ -492,8 +492,11 @@ namespace System.Web.UI.WebControls
 				return weekendDayStyle;
 			}
 		}
-
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		// Private properties
 		DateTimeFormatInfo DateInfo {
 			get {

+ 27 - 0
mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog

@@ -1,3 +1,30 @@
+2010-07-02  Marek Habersack  <[email protected]>
+
+	* Menu.cs: 4.0 API updates.
+
+	* GridView.cs: implemented 4.0 properties -
+	SortedAscendingCellStyle, SortedAscendingHeaderStyle,
+	SortedDescendingCellStyle, SortedDescendingHeaderStyle,
+	ClientIDRowSuffix, ClientIDRowSuffixDataKeys, ShowHeaderWhenEmpty
+	along with associated rendering changes.
+
+	* DetailsView.cs, FormView.cs, GridView.cs: 4.0 API changes -
+	renamed ShowPage to SetPageIndex and made it public.
+	Added 4.0 interfaces to inheritance list and implemented them.
+
+	* DataKeyArray.cs: added internal constructor which accepts IList
+	instead of ArrayList. Changed the 'keys' field type to IList.
+
+	* ContainedTable.cs: the 'id' attribute must be rendered last.
+
+	* CheckBox.cs, CheckBoxList.cs, SiteMapPath.cs, Table.cs,
+	TableStyle.cs, TextBox.cs, WebControl.cs: 4.0 rendering changes.
+
+	* Calendar.cs, CompositeControl.cs, DropDownList.cs, HyperLink.cs,
+	Image.cs, ImageButton.cs, Label.cs, LinkButton.cs, LoginName.cs,
+	Panel.cs, Table.cs, TableCell.cs, TableRow.cs:
+	added new 4.0 property, SupportsDisabledAttribute.
+
 2010-06-21  Marek Habersack  <[email protected]>
 
 	* BaseValidator.cs, BulletedList.cs, Calendar.cs, CheckBox.cs,

+ 17 - 10
mcs/class/System.Web/System.Web.UI.WebControls/CheckBox.cs

@@ -313,17 +313,22 @@ namespace System.Web.UI.WebControls
 			}
 			
 			bool need_span = ControlStyleCreated && !ControlStyle.IsEmpty;
-			if (need_span) {
-				AddDisplayStyleAttribute (w);
-				ControlStyle.AddAttributesToRender (w, this);
-			}
-
 			bool enabled = IsEnabled;
 			if (!enabled) {
-				w.AddAttribute (HtmlTextWriterAttribute.Disabled, "disabled", false);
+#if NET_4_0
+				if (!RenderingCompatibilityLessThan40)
+					ControlStyle.PrependCssClass (DisabledCssClass);
+				else
+#endif
+					w.AddAttribute (HtmlTextWriterAttribute.Disabled, "disabled", false);
 				need_span = true;
 			}
 
+			if (need_span) {
+				AddDisplayStyleAttribute (w);
+				ControlStyle.AddAttributesToRender (w, this);
+			}
+			
 			string tt = ToolTip;
 			if (tt != null && tt.Length > 0){
 				w.AddAttribute ("title", tt);
@@ -332,7 +337,7 @@ namespace System.Web.UI.WebControls
 
 			if (HasAttributes && AddAttributesForSpan (w))
 				need_span = true;
-
+			
 			if (need_span)
 				w.RenderBeginTag (HtmlTextWriterTag.Span);
 
@@ -359,9 +364,7 @@ namespace System.Web.UI.WebControls
 				w.AddAttribute (HtmlTextWriterAttribute.Name, nameAttr);
 			InternalAddAttributesToRender (w, enabled);
 			AddAttributesToRender (w);
-			if (inputAttributes != null)
-				inputAttributes.AddAttributes (w);
-
+			
 			if (Checked)
 				w.AddAttribute (HtmlTextWriterAttribute.Checked, "checked", false);
 
@@ -381,6 +384,10 @@ namespace System.Web.UI.WebControls
 
 			if (common_attrs != null)
 				common_attrs.AddAttributes (w);
+
+			if (inputAttributes != null)
+				inputAttributes.AddAttributes (w);
+			
 			w.RenderBeginTag (HtmlTextWriterTag.Input);
 			w.RenderEndTag ();
 		}

+ 11 - 1
mcs/class/System.Web/System.Web.UI.WebControls/CheckBoxList.cs

@@ -274,6 +274,9 @@ namespace System.Web.UI.WebControls
 		{
 			ListItem item = Items [repeatIndex];
 
+			string cssClass = check_box.CssClass;
+			if (!String.IsNullOrEmpty (cssClass))
+				check_box.CssClass = String.Empty;
 			check_box.ID = repeatIndex.ToString (Helpers.InvariantCulture);
 			check_box.Text = item.Text;
 			check_box.AutoPostBack = AutoPostBack;
@@ -290,7 +293,14 @@ namespace System.Web.UI.WebControls
 				check_box.Attributes.Clear ();
 			if (item.HasAttributes)
 				check_box.Attributes.CopyFrom (item.Attributes);
-
+#if NET_4_0
+			if (!RenderingCompatibilityLessThan40) {
+				var attrs = check_box.InputAttributes;
+			
+				attrs.Clear ();
+				attrs.Add ("value", item.Value);
+			}
+#endif
 			check_box.RenderControl (writer);
 		}
 

+ 5 - 0
mcs/class/System.Web/System.Web.UI.WebControls/CompositeControl.cs

@@ -38,6 +38,11 @@ namespace System.Web.UI.WebControls
 	[Designer ("System.Web.UI.Design.WebControls.CompositeControlDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
 	public abstract class CompositeControl : WebControl, INamingContainer, ICompositeControlDesignerAccessor
 	{
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		protected CompositeControl ()
 		{
 		}

+ 1 - 2
mcs/class/System.Web/System.Web.UI.WebControls/ContainedTable.cs

@@ -44,9 +44,8 @@ namespace System.Web.UI.WebControls
 		protected override void AddAttributesToRender (HtmlTextWriter writer)
 		{
 			ControlStyle.CopyFrom (_container.ControlStyle);
-			writer.AddAttribute (HtmlTextWriterAttribute.Id, _container.ClientID);
-
 			base.AddAttributesToRender (writer);
+			writer.AddAttribute (HtmlTextWriterAttribute.Id, _container.ClientID);
 		}
 	}
 }

+ 6 - 1
mcs/class/System.Web/System.Web.UI.WebControls/DataKeyArray.cs

@@ -37,9 +37,14 @@ namespace System.Web.UI.WebControls
 {
 	public sealed class DataKeyArray : ICollection, IEnumerable, IStateManager
 	{
-		ArrayList keys;
+		IList keys;
 		bool trackViewState;
 
+		internal DataKeyArray (IList keys)
+		{
+			this.keys = keys;
+		}
+		
 		public DataKeyArray (ArrayList keys)
 		{
 			this.keys = keys;

+ 30 - 10
mcs/class/System.Web/System.Web.UI.WebControls/DetailsView.cs

@@ -47,7 +47,7 @@ namespace System.Web.UI.WebControls
 	[AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	public class DetailsView: CompositeDataBoundControl, ICallbackEventHandler, ICallbackContainer, IDataItemContainer, INamingContainer, IPostBackEventHandler, IPostBackContainer
 #if NET_4_0
-		, IDataBoundItemControl
+		, IDataBoundItemControl, IDataBoundControl, IFieldControl
 #endif
 	{
 		object dataItem;
@@ -319,7 +319,17 @@ namespace System.Web.UI.WebControls
 		IDataSource IDataBoundControl.DataSourceObject {
 			get { return base.DataSourceObject; }
 		}
-#endif	
+
+		IAutoFieldGenerator IFieldControl.FieldsGenerator {
+			get {
+				throw new NotImplementedException ();
+			}
+			
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+#endif
 		[WebCategoryAttribute ("Paging")]
 		[DefaultValueAttribute (false)]
 		public virtual bool AllowPaging {
@@ -890,6 +900,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		public IAutoFieldGenerator RowsGenerator {
 			get;
 			set;
@@ -953,7 +964,14 @@ namespace System.Web.UI.WebControls
 		int IDataItemContainer.DataItemIndex {
 			get { return DataItemIndex; }
 		}
-	
+#if NET_4_0
+		[MonoTODO ("Make use of it in the code")]
+		[DefaultValue (true)]
+		public virtual bool EnableModelValidation {
+			get;
+			set;
+		}
+#endif
 		public virtual bool IsBindableType (Type type)
 		{
 			return type.IsPrimitive || type == typeof (string) || type == typeof (DateTime) || type == typeof (Guid) || type == typeof (Decimal);
@@ -1533,25 +1551,25 @@ namespace System.Web.UI.WebControls
 							newIndex = paramIndex - 1;
 							break;
 					}
-					ShowPage (newIndex);
+					SetPageIndex (newIndex);
 					break;
 					
 				case DataControlCommands.FirstPageCommandArgument:
-					ShowPage (0);
+					SetPageIndex (0);
 					break;
 
 				case DataControlCommands.LastPageCommandArgument:
-					ShowPage (PageCount - 1);
+					SetPageIndex (PageCount - 1);
 					break;
 					
 				case DataControlCommands.NextPageCommandArgument:
 					if (PageIndex < PageCount - 1)
-						ShowPage (PageIndex + 1);
+						SetPageIndex (PageIndex + 1);
 					break;
 
 				case DataControlCommands.PreviousPageCommandArgument:
 					if (PageIndex > 0)
-						ShowPage (PageIndex - 1);
+						SetPageIndex (PageIndex - 1);
 					break;
 					
 				case DataControlCommands.EditCommandName:
@@ -1579,8 +1597,10 @@ namespace System.Web.UI.WebControls
 					break;
 			}
 		}
-		
-		void ShowPage (int newIndex)
+#if NET_4_0
+		public
+#endif
+		void SetPageIndex (int newIndex)
 		{
 			DetailsViewPageEventArgs args = new DetailsViewPageEventArgs (newIndex);
 			OnPageIndexChanging (args);

+ 5 - 1
mcs/class/System.Web/System.Web.UI.WebControls/DropDownList.cs

@@ -81,7 +81,11 @@ namespace System.Web.UI.WebControls
 
 			set { base.SelectedIndex = value; }
 		}
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		#endregion	// Public Instance Properties
 
 		#region Protected Instance Methods

+ 39 - 9
mcs/class/System.Web/System.Web.UI.WebControls/FormView.cs

@@ -45,6 +45,9 @@ namespace System.Web.UI.WebControls
 	[AspNetHostingPermissionAttribute (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	[AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	public class FormView: CompositeDataBoundControl, IDataItemContainer, INamingContainer, IPostBackEventHandler, IPostBackContainer
+#if NET_4_0
+		, IDataBoundItemControl, IDataBoundControl
+#endif
 	{
 		object dataItem;
 		
@@ -793,8 +796,33 @@ namespace System.Web.UI.WebControls
 	
 		int IDataItemContainer.DisplayIndex {
 			get { return PageIndex; }
-		}		
-	
+		}
+#if NET_4_0
+		[MonoTODO ("Make use of it in the code")]
+		[DefaultValue (true)]
+		public virtual bool EnableModelValidation {
+			get;
+			set;
+		}
+
+		DataBoundControlMode IDataBoundItemControl.Mode {
+			get {
+				switch (CurrentMode) {
+					case FormViewMode.ReadOnly:
+						return DataBoundControlMode.ReadOnly;
+
+					case FormViewMode.Edit:
+						return DataBoundControlMode.Edit;
+
+					case FormViewMode.Insert:
+						return DataBoundControlMode.Insert;
+
+					default:
+						throw new InvalidOperationException ("Unsupported mode value.");
+				}
+			}
+		}
+#endif
 		public virtual bool IsBindableType (Type type)
 		{
 			return type.IsPrimitive || type == typeof (string) || type == typeof (DateTime) || type == typeof (Guid) || type == typeof (Decimal);
@@ -1222,25 +1250,25 @@ namespace System.Web.UI.WebControls
 							newIndex = paramIndex - 1;
 							break;
 					}
-					ShowPage (newIndex);
+					SetPageIndex (newIndex);
 					break;
 					
 				case DataControlCommands.FirstPageCommandArgument:
-					ShowPage (0);
+					SetPageIndex (0);
 					break;
 
 				case DataControlCommands.LastPageCommandArgument:
-					ShowPage (PageCount - 1);
+					SetPageIndex (PageCount - 1);
 					break;
 					
 				case DataControlCommands.NextPageCommandArgument:
 					if (PageIndex < PageCount - 1)
-						ShowPage (PageIndex + 1);
+						SetPageIndex (PageIndex + 1);
 					break;
 
 				case DataControlCommands.PreviousPageCommandArgument:
 					if (PageIndex > 0)
-						ShowPage (PageIndex - 1);
+						SetPageIndex (PageIndex - 1);
 					break;
 					
 				case DataControlCommands.EditCommandName:
@@ -1268,8 +1296,10 @@ namespace System.Web.UI.WebControls
 					break;
 			}
 		}
-		
-		void ShowPage (int index)
+#if NET_4_0
+		public
+#endif
+		void SetPageIndex (int index)
 		{
 			FormViewPageEventArgs args = new FormViewPageEventArgs (index);
 			OnPageIndexChanging (args);

+ 364 - 77
mcs/class/System.Web/System.Web.UI.WebControls/GridView.cs

@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 using System.Collections.Specialized;
 using System.ComponentModel;
 using System.Web.UI;
@@ -45,6 +46,9 @@ namespace System.Web.UI.WebControls
 	[AspNetHostingPermissionAttribute (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	[AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	public class GridView: CompositeDataBoundControl, ICallbackEventHandler, ICallbackContainer, IPostBackEventHandler, IPostBackContainer, IPersistedSelector
+#if NET_4_0
+		, IDataKeysControl, IDataBoundListControl, IDataBoundControl, IFieldControl
+#endif
 	{
 		Table table;
 		GridViewRowCollection rows;
@@ -59,7 +63,9 @@ namespace System.Web.UI.WebControls
 		ITemplate emptyDataTemplate;
 		
 		PropertyDescriptor[] cachedKeyProperties;
-			
+#if NET_4_0
+		PropertyDescriptor[] cachedSuffixKeyProperties;
+#endif
 		// View state
 		DataControlFieldCollection columns;
 		PagerSettings pagerSettings;
@@ -72,7 +78,16 @@ namespace System.Web.UI.WebControls
 		TableItemStyle pagerStyle;
 		TableItemStyle rowStyle;
 		TableItemStyle selectedRowStyle;
-		ArrayList _dataKeyArrayList;
+#if NET_4_0
+		TableItemStyle sortedAscendingCellStyle;
+		TableItemStyle sortedAscendingHeaderStyle;
+		TableItemStyle sortedDescendingCellStyle;
+		TableItemStyle sortedDescendingHeaderStyle;
+
+		List <DataKey> _dataKeySuffixList;
+		DataKeyArray rowSuffixKeys;
+#endif
+		List <DataKey> _dataKeyList;
 		DataKeyArray keys;
 		DataKey oldEditValues;
 		AutoGeneratedFieldProperties[] autoFieldProperties;
@@ -106,6 +121,7 @@ namespace System.Web.UI.WebControls
 		
 		public GridView ()
 		{
+			EnableModelValidation = true;
 		}
 		
 		public event EventHandler PageIndexChanged {
@@ -541,6 +557,9 @@ namespace System.Web.UI.WebControls
 		}
 
 		[BrowsableAttribute(false)]
+#if NET_4_0
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+#endif
 		public IAutoFieldGenerator ColumnsGenerator {
 			get;
 			set;
@@ -562,21 +581,30 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		ArrayList DataKeyArrayList {
+		List <DataKey> DataKeyList {
 			get {
-				if (_dataKeyArrayList == null) {
-					_dataKeyArrayList = new ArrayList ();
-				}
-				return _dataKeyArrayList;
+				if (_dataKeyList == null)
+					_dataKeyList = new List <DataKey> ();
+				
+				return _dataKeyList;
 			}
 		}
-		
+#if NET_4_0
+		List <DataKey> DataKeySuffixList {
+			get {
+				if (_dataKeySuffixList == null)
+					_dataKeySuffixList = new List <DataKey> ();
+				
+				return _dataKeySuffixList;
+			}
+		}
+#endif
 		[BrowsableAttribute (false)]
 		[DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
 		public virtual DataKeyArray DataKeys {
 			get {
 				if (keys == null) {
-					keys = new DataKeyArray (DataKeyArrayList);
+					keys = new DataKeyArray (DataKeyList);
 					if (IsTrackingViewState)
 						((IStateManager) keys).TrackViewState ();
 				}
@@ -678,7 +706,14 @@ namespace System.Web.UI.WebControls
 				RequireBinding ();
 			}
 		}
-	
+
+		[MonoTODO ("Make use of it in the code")]
+		[DefaultValue (true)]
+		public virtual bool EnableModelValidation {
+			get;
+			set;
+		}
+		
 		[DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
 		[BrowsableAttribute (false)]
 		public virtual GridViewRow FooterRow {
@@ -846,10 +881,9 @@ namespace System.Web.UI.WebControls
 		
 		
 		[DefaultValue (null)]
-		/* DataControlPagerCell isnt specified in the docs */
-		//[TemplateContainer (typeof(DataControlPagerCell), BindingDirection.OneWay)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 		[Browsable (false)]
+		[TemplateContainerAttribute(typeof(GridViewRow))]
 		public virtual ITemplate PagerTemplate {
 			get { return pagerTemplate; }
 			set { pagerTemplate = value; }
@@ -900,7 +934,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 		[BrowsableAttribute (false)]
-		[DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		public virtual DataKey SelectedDataKey {
 			get {
 				if (DataKeyNames.Length == 0)
@@ -914,7 +948,8 @@ namespace System.Web.UI.WebControls
 		}
 
 		[MonoTODO]
-		[BrowsableAttribute(false)]
+		[Browsable(false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		public virtual DataKey SelectedPersistedDataKey {
 			get; set;
 		}
@@ -1066,7 +1101,121 @@ namespace System.Web.UI.WebControls
 				RequireBinding ();
 			}
 		}
-	
+#if NET_4_0
+		[TypeConverter (typeof(StringArrayConverter))]
+		[DefaultValue (null)]
+		public virtual string[] ClientIDRowSuffix {
+			get;
+			set;
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		public DataKeyArray ClientIDRowSuffixDataKeys {
+			get {
+				if (rowSuffixKeys == null) {
+					rowSuffixKeys = new DataKeyArray (DataKeySuffixList);
+					if (IsTrackingViewState)
+						((IStateManager) rowSuffixKeys).TrackViewState ();
+				}
+
+				return rowSuffixKeys;
+			}
+		}
+
+		[DefaultValue (false)]
+		public virtual bool EnablePersistedSelection {
+			get {
+				throw new NotImplementedException ();
+			}
+			
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		IAutoFieldGenerator IFieldControl.FieldsGenerator {
+			get {
+				throw new NotImplementedException ();
+			}
+			
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[DefaultValue (false)]
+		public virtual bool ShowHeaderWhenEmpty {
+			get { return ViewState.GetBool ("ShowHeaderWhenEmpty", false); }
+			set {
+				if (value == ShowHeaderWhenEmpty)
+					return;
+				
+				ViewState ["ShowHeaderWhenEmpty"] = value;
+				RequireBinding ();
+			}
+		}
+
+		[PersistenceMode (PersistenceMode.InnerProperty)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
+		[NotifyParentProperty (true)]
+		public TableItemStyle SortedAscendingCellStyle {
+			get {
+				if (sortedAscendingCellStyle == null) {
+					sortedAscendingCellStyle = new TableItemStyle ();
+					if (IsTrackingViewState)
+						((IStateManager)sortedAscendingCellStyle).TrackViewState ();
+				}
+
+				return sortedAscendingCellStyle;
+			}
+		}
+
+		[PersistenceMode (PersistenceMode.InnerProperty)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
+		[NotifyParentProperty (true)]
+		public TableItemStyle SortedAscendingHeaderStyle {
+			get {
+				if (sortedAscendingHeaderStyle == null) {
+					sortedAscendingHeaderStyle = new TableItemStyle ();
+					if (IsTrackingViewState)
+						((IStateManager)sortedAscendingHeaderStyle).TrackViewState ();
+				}
+
+				return sortedAscendingHeaderStyle;
+			}
+		}
+
+		[PersistenceMode (PersistenceMode.InnerProperty)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
+		[NotifyParentProperty (true)]
+		public TableItemStyle SortedDescendingCellStyle {
+			get {
+				if (sortedDescendingCellStyle == null) {
+					sortedDescendingCellStyle = new TableItemStyle ();
+					if (IsTrackingViewState)
+						((IStateManager)sortedDescendingCellStyle).TrackViewState ();
+				}
+
+				return sortedDescendingCellStyle;
+			}
+		}
+
+		[PersistenceMode (PersistenceMode.InnerProperty)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
+		[NotifyParentProperty (true)]
+		public TableItemStyle SortedDescendingHeaderStyle {
+			get {
+				if (sortedDescendingHeaderStyle == null) {
+					sortedDescendingHeaderStyle = new TableItemStyle ();
+					if (IsTrackingViewState)
+						((IStateManager)sortedDescendingHeaderStyle).TrackViewState ();
+				}
+
+				return sortedDescendingHeaderStyle;
+			}
+		}		
+#endif
 		public virtual bool IsBindableType (Type type)
 		{
 			return type.IsPrimitive || type == typeof (string) || type == typeof (decimal) || type == typeof (DateTime) || type == typeof (Guid);
@@ -1225,7 +1374,19 @@ namespace System.Web.UI.WebControls
 		{
 			return new ContainedTable (this);
 		}
-	
+
+		void CreateHeaderRow (Table mainTable, DataControlField[] fields, bool dataBinding)
+		{
+			GridViewRow headerRow = CreateRow (-1, -1, DataControlRowType.Header, DataControlRowState.Normal);
+			InitializeRow (headerRow, fields);
+			OnRowCreated (new GridViewRowEventArgs (headerRow));
+			mainTable.Rows.Add (headerRow);
+			if (dataBinding) {
+				headerRow.DataBind ();
+				OnRowDataBound (new GridViewRowEventArgs (headerRow));
+			}
+		}
+		
 		protected override int CreateChildControls (IEnumerable data, bool dataBinding)
 		{
 			// clear GridView
@@ -1298,6 +1459,28 @@ namespace System.Web.UI.WebControls
 
 			// Main table creation
 			Table mainTable = ContainedTable;
+			List <DataKey> dataKeyList;
+			string[] dataKeyNames;
+#if NET_4_0
+			List <DataKey> dataKeySuffixList;
+			string[] clientIDRowSuffix;
+#endif
+			if (dataBinding) {
+				dataKeyList = DataKeyList;
+				dataKeyNames = DataKeyNames;
+#if NET_4_0
+				dataKeySuffixList = DataKeySuffixList;
+				clientIDRowSuffix = ClientIDRowSuffix;
+#endif
+			} else {
+				dataKeyList = null;
+				dataKeyNames = null;
+#if NET_4_0
+				dataKeySuffixList = null;
+				clientIDRowSuffix = null;
+#endif
+			}
+
 			while (skip_first || enumerator.MoveNext ()) {
 				skip_first = false;
 				object obj = enumerator.Current;
@@ -1315,14 +1498,8 @@ namespace System.Web.UI.WebControls
 							topPagerRow.Visible = false;
 					}
 
-					GridViewRow headerRow = CreateRow (-1, -1, DataControlRowType.Header, DataControlRowState.Normal);
-					InitializeRow (headerRow, fields);
-					OnRowCreated (new GridViewRowEventArgs (headerRow));
-					mainTable.Rows.Add (headerRow);
-					if (dataBinding) {
-						headerRow.DataBind ();
-						OnRowDataBound (new GridViewRowEventArgs (headerRow));
-					}
+					if (ShowHeader)
+						CreateHeaderRow (mainTable, fields, dataBinding);
 				}
 				
 				DataControlRowState rstate = GetRowState (list.Count);
@@ -1336,12 +1513,20 @@ namespace System.Web.UI.WebControls
 					row.DataBind ();					
 					if (EditIndex == row.RowIndex)
 						oldEditValues = new DataKey (GetRowValues (row, true, true));
-					DataKeyArrayList.Add (new DataKey (CreateRowDataKey (row), DataKeyNames));
+					dataKeyList.Add (new DataKey (CreateRowDataKey (row), dataKeyNames));
+#if NET_4_0
+					dataKeySuffixList.Add (new DataKey (CreateRowSuffixDataKey (row), clientIDRowSuffix));
+#endif
 					OnRowDataBound (new GridViewRowEventArgs (row));
 				} 
 			}
 
+			int retValue;
 			if (list.Count == 0) {
+#if NET_4_0
+ 				if (ShowHeader && ShowHeaderWhenEmpty)
+ 					CreateHeaderRow (mainTable, fields, dataBinding);
+#endif
 				GridViewRow emptyRow = CreateEmptyrRow (fieldCount);
 				if (emptyRow != null) {
 					OnRowCreated (new GridViewRowEventArgs (emptyRow));
@@ -1351,6 +1536,10 @@ namespace System.Web.UI.WebControls
 						OnRowDataBound (new GridViewRowEventArgs (emptyRow));
 					}
 				}
+#if NET_4_0
+				if (mainTable.Rows.Count == 0)
+					table = null;
+#endif
 				return 0;
 			} else {
 				GridViewRow footerRow = CreateRow (-1, -1, DataControlRowType.Footer, DataControlRowState.Normal);
@@ -1392,6 +1581,7 @@ namespace System.Web.UI.WebControls
 					table = CreateChildTable ();
 					Controls.Add (table);
 				}
+				
 				return table;
 			}
 		}
@@ -1484,25 +1674,45 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
-		IOrderedDictionary CreateRowDataKey (GridViewRow row)
+		void LoadAndCacheProperties (string[] names, object dataItem, ref PropertyDescriptor[] cache)
 		{
-			if (cachedKeyProperties == null) {
-				PropertyDescriptorCollection props = TypeDescriptor.GetProperties (row.DataItem);
-				cachedKeyProperties = new PropertyDescriptor [DataKeyNames.Length];
-				for (int n=0; n<DataKeyNames.Length; n++) { 
-					PropertyDescriptor p = props.Find (DataKeyNames [n], true);
-					if (p == null)
-						throw new InvalidOperationException ("Property '" + DataKeyNames [n] + "' not found in object of type " + row.DataItem.GetType ());
-					cachedKeyProperties [n] = p;
-				}
+			if (cache != null)
+				return;
+
+			PropertyDescriptorCollection props = TypeDescriptor.GetProperties (dataItem);
+			int len = names != null ? names.Length : 0;
+			cache = new PropertyDescriptor [len];
+			for (int n = 0; n < len; n++) {
+				string propName = names [n];
+				PropertyDescriptor p = props.Find (propName, true);
+				if (p == null)
+					throw new InvalidOperationException ("Property '" + propName + "' not found in object of type " + dataItem.GetType ());
+				cache [n] = p;
 			}
-			
+		}
+
+		IOrderedDictionary CreateDictionaryFromProperties (PropertyDescriptor[] cache, object dataItem)
+		{
 			OrderedDictionary dic = new OrderedDictionary ();
-			foreach (PropertyDescriptor p in cachedKeyProperties)
-				dic [p.Name] = p.GetValue (row.DataItem);
+			foreach (PropertyDescriptor p in cache)
+				dic [p.Name] = p.GetValue (dataItem);
 			return dic;
 		}
 		
+		IOrderedDictionary CreateRowDataKey (GridViewRow row)
+		{
+			object dataItem = row.DataItem;
+			LoadAndCacheProperties (DataKeyNames, dataItem, ref cachedKeyProperties);
+			return CreateDictionaryFromProperties (cachedKeyProperties, dataItem);
+		}
+#if NET_4_0
+		IOrderedDictionary CreateRowSuffixDataKey (GridViewRow row)
+		{
+			object dataItem = row.DataItem;
+			LoadAndCacheProperties (ClientIDRowSuffix, dataItem, ref cachedSuffixKeyProperties);
+			return CreateDictionaryFromProperties (cachedSuffixKeyProperties, dataItem);
+		}
+#endif
 		IOrderedDictionary GetRowValues (GridViewRow row, bool includeReadOnlyFields, bool includePrimaryKey)
 		{
 			OrderedDictionary dic = new OrderedDictionary ();
@@ -1540,11 +1750,11 @@ namespace System.Web.UI.WebControls
 		
 		public sealed override void DataBind ()
 		{
-			DataKeyArrayList.Clear ();
+			DataKeyList.Clear ();
 			cachedKeyProperties = null;
 			base.DataBind ();
 
-			keys = new DataKeyArray (DataKeyArrayList);
+			keys = new DataKeyArray (DataKeyList);
 			
 			GridViewRow row = HeaderRow;
 			if (row != null)
@@ -1602,7 +1812,10 @@ namespace System.Web.UI.WebControls
 					default:
 						break;
 				}
-
+#if NET_4_0
+				string sortExpression = SortExpression;
+				bool haveSorting = !String.IsNullOrEmpty (sortExpression);
+#endif
 				foreach (TableCell cell in row.Cells) {
 					DataControlFieldCell fcell = cell as DataControlFieldCell;
 					if (fcell != null) {
@@ -1618,6 +1831,10 @@ namespace System.Web.UI.WebControls
 							case DataControlRowType.Header:
 								if (field.HeaderStyleCreated && !field.HeaderStyle.IsEmpty)
 									cell.ControlStyle.MergeWith (field.HeaderStyle);
+#if NET_4_0
+								if (haveSorting)
+									MergeWithSortingStyle (sortExpression, sortedAscendingHeaderStyle, sortedDescendingHeaderStyle, field, cell);
+#endif
 								break;
 							case DataControlRowType.Footer:
 								if (field.FooterStyleCreated && !field.FooterStyle.IsEmpty)
@@ -1633,13 +1850,25 @@ namespace System.Web.UI.WebControls
 								}
 								if (field.ItemStyleCreated && !field.ItemStyle.IsEmpty)
 									cell.ControlStyle.MergeWith (field.ItemStyle);
+#if NET_4_0
+								if (haveSorting)
+									MergeWithSortingStyle (sortExpression, sortedAscendingCellStyle, sortedDescendingCellStyle, field, cell);
+#endif
 								break;
 						}
 					}
 				}
 			}
 		}
-		
+#if NET_4_0
+		void MergeWithSortingStyle (string sortExpression, TableItemStyle ascending, TableItemStyle descending, DataControlField field, TableCell cell)
+		{
+			if (String.Compare (field.SortExpression, sortExpression, StringComparison.OrdinalIgnoreCase) != 0)
+				return;
+
+			cell.ControlStyle.MergeWith (SortDirection == SortDirection.Ascending ? ascending : descending);
+		}
+#endif
 		protected internal override void OnInit (EventArgs e)
 		{
 			Page page = Page;
@@ -1732,25 +1961,25 @@ namespace System.Web.UI.WebControls
 							newIndex = paramIndex - 1;
 							break;
 					}
-					ShowPage (newIndex);
+					SetPageIndex (newIndex);
 					break;
 					
 				case DataControlCommands.FirstPageCommandArgument:
-					ShowPage (0);
+					SetPageIndex (0);
 					break;
 
 				case DataControlCommands.LastPageCommandArgument:
-					ShowPage (PageCount - 1);
+					SetPageIndex (PageCount - 1);
 					break;
 					
 				case DataControlCommands.NextPageCommandArgument:
 					if (PageIndex < PageCount - 1)
-						ShowPage (PageIndex + 1);
+						SetPageIndex (PageIndex + 1);
 					break;
 
 				case DataControlCommands.PreviousPageCommandArgument:
 					if (PageIndex > 0)
-						ShowPage (PageIndex - 1);
+						SetPageIndex (PageIndex - 1);
 					break;
 					
 				case DataControlCommands.SelectCommandName:
@@ -1758,7 +1987,7 @@ namespace System.Web.UI.WebControls
 					break;
 					
 				case DataControlCommands.EditCommandName:
-					EditRow (int.Parse (param));
+					SetEditRow (int.Parse (param));
 					break;
 					
 				case DataControlCommands.UpdateCommandName:
@@ -1805,7 +2034,9 @@ namespace System.Web.UI.WebControls
 			
 			OnSorted (EventArgs.Empty);
 		}
-		
+#if NET_4_0
+		public
+#endif
 		void SelectRow (int index)
 		{
 			GridViewSelectEventArgs args = new GridViewSelectEventArgs (index);
@@ -1816,8 +2047,10 @@ namespace System.Web.UI.WebControls
 				OnSelectedIndexChanged (EventArgs.Empty);
 			}
 		}
-		
-		void ShowPage (int newIndex)
+#if NET_4_0
+		public
+#endif
+		void SetPageIndex (int newIndex)
 		{
 			GridViewPageEventArgs args = new GridViewPageEventArgs (newIndex);
 			OnPageIndexChanging (args);
@@ -1829,8 +2062,10 @@ namespace System.Web.UI.WebControls
 			PageIndex = args.NewPageIndex;
 			OnPageIndexChanged (EventArgs.Empty);
 		}
-		
-		void EditRow (int index)
+#if NET_4_0
+		public
+#endif
+		void SetEditRow (int index)
 		{
 			GridViewEditEventArgs args = new GridViewEditEventArgs (index);
 			OnRowEditing (args);
@@ -1942,7 +2177,8 @@ namespace System.Web.UI.WebControls
 
 		protected internal override void LoadControlState (object ob)
 		{
-			if (ob == null) return;
+			if (ob == null)
+				return;
 			object[] state = (object[]) ob;
 			base.LoadControlState (state[0]);
 			pageIndex = (int) state[1];
@@ -1952,10 +2188,16 @@ namespace System.Web.UI.WebControls
 			sortDirection = (SortDirection) state[5];
 			DataKeyNames = (string []) state [6];
 			if (state [7] != null)
-				LoadDataKeyArrayState ((object []) state [7]);
+				LoadDataKeyArrayState ((object []) state [7], out keys);
 			if (state [8] != null)
 				((IStateManager) OldEditValues).LoadViewState (state [8]);
 			pageCount = (int)state [9];
+#if NET_4_0
+			if (state [10] != null)
+				ClientIDRowSuffix = (string[]) state [10];
+			if (state [11] != null)
+				LoadDataKeyArrayState ((object []) state [11], out rowSuffixKeys);
+#endif
 		}
 		
 		protected internal override object SaveControlState ()
@@ -1980,13 +2222,17 @@ namespace System.Web.UI.WebControls
 				sortExpression, 
 				sortDirection, 
 				DataKeyNames,
-				SaveDataKeyArrayState (),
+				SaveDataKeyArrayState (keys),
 				(oldEditValues == null ? null : ((IStateManager)oldEditValues).SaveViewState ()),
-				pageCount
+				pageCount,
+#if NET_4_0
+				ClientIDRowSuffix,
+				SaveDataKeyArrayState (rowSuffixKeys)
+#endif
 			};
 		}
 
-		object [] SaveDataKeyArrayState ()
+		object [] SaveDataKeyArrayState (DataKeyArray keys)
 		{
 			if (keys == null)
 				return null;
@@ -1997,14 +2243,18 @@ namespace System.Web.UI.WebControls
 			return state;
 		}
 
-		void LoadDataKeyArrayState (object [] state)
+		void LoadDataKeyArrayState (object [] state, out DataKeyArray keys)
 		{
+			List <DataKey> dataKeyList = DataKeyList;
+			string[] dataKeyNames = DataKeyNames;
+			int dataKeyNamesLen = dataKeyNames.Length;
+			
 			for (int i = 0; i < state.Length; i++) {
-				DataKey dataKey = new DataKey (new OrderedDictionary (DataKeyNames.Length), DataKeyNames);
+				DataKey dataKey = new DataKey (new OrderedDictionary (dataKeyNamesLen), dataKeyNames);
 				((IStateManager) dataKey).LoadViewState (state [i]);
-				DataKeyArrayList.Add (dataKey);
+				dataKeyList.Add (dataKey);
 			}
-			keys = new DataKeyArray (DataKeyArrayList);
+			keys = new DataKeyArray (dataKeyList);
 		}
 
 		protected override void TrackViewState ()
@@ -2030,6 +2280,21 @@ namespace System.Web.UI.WebControls
 				((IStateManager)editRowStyle).TrackViewState();
 			if (emptyDataRowStyle != null)
 				((IStateManager)emptyDataRowStyle).TrackViewState();
+#if NET_4_0
+			if (sortedAscendingCellStyle != null)
+				((IStateManager)sortedAscendingCellStyle).TrackViewState ();
+			
+			if (sortedAscendingHeaderStyle != null)
+				((IStateManager)sortedAscendingHeaderStyle).TrackViewState ();
+			
+			if (sortedDescendingCellStyle != null)
+				((IStateManager)sortedDescendingCellStyle).TrackViewState ();
+			
+			if (sortedDescendingHeaderStyle != null)
+				((IStateManager)sortedDescendingHeaderStyle).TrackViewState ();
+			if (rowSuffixKeys != null)
+				((IStateManager) rowSuffixKeys).TrackViewState ();
+#endif
 			if (keys != null)
 				((IStateManager)keys).TrackViewState();
 			if (autoFieldProperties != null) {
@@ -2040,28 +2305,40 @@ namespace System.Web.UI.WebControls
 
 		protected override object SaveViewState ()
 		{
-			object[] states = new object [12];
-			states[0] = base.SaveViewState();
-			states[1] = (columns == null ? null : ((IStateManager)columns).SaveViewState());
-			states[2] = (pagerSettings == null ? null : ((IStateManager)pagerSettings).SaveViewState());
-			states[3] = (alternatingRowStyle == null ? null : ((IStateManager)alternatingRowStyle).SaveViewState());
-			states[4] = (footerStyle == null ? null : ((IStateManager)footerStyle).SaveViewState());
-			states[5] = (headerStyle == null ? null : ((IStateManager)headerStyle).SaveViewState());
-			states[6] = (pagerStyle == null ? null : ((IStateManager)pagerStyle).SaveViewState());
-			states[7] = (rowStyle == null ? null : ((IStateManager)rowStyle).SaveViewState());
-			states[8] = (selectedRowStyle == null ? null : ((IStateManager)selectedRowStyle).SaveViewState());
-			states[9] = (editRowStyle == null ? null : ((IStateManager)editRowStyle).SaveViewState());
-			states[10] = (emptyDataRowStyle == null ? null : ((IStateManager)emptyDataRowStyle).SaveViewState());
+			object[] autoFieldsData = null;
 			
 			if (autoFieldProperties != null) {
 				object[] data = new object [autoFieldProperties.Length];
 				bool allNull = true;
-				for (int n=0; n<data.Length; n++) {
+				for (int n = 0; n < data.Length; n++) {
 					data [n] = ((IStateManager)autoFieldProperties [n]).SaveViewState ();
-					if (data [n] != null) allNull = false;
+					if (data [n] != null)
+						allNull = false;
 				}
-				if (!allNull) states [11] = data;
+				if (!allNull)
+					autoFieldsData = data;
 			}
+			
+			object[] states = {
+				base.SaveViewState(), // 0
+				(columns == null ? null : ((IStateManager)columns).SaveViewState()), // 1
+				(pagerSettings == null ? null : ((IStateManager)pagerSettings).SaveViewState()), // 2
+				(alternatingRowStyle == null ? null : ((IStateManager)alternatingRowStyle).SaveViewState()), // 3
+				(footerStyle == null ? null : ((IStateManager)footerStyle).SaveViewState()), // 4
+				(headerStyle == null ? null : ((IStateManager)headerStyle).SaveViewState()), // 5
+				(pagerStyle == null ? null : ((IStateManager)pagerStyle).SaveViewState()), // 6
+				(rowStyle == null ? null : ((IStateManager)rowStyle).SaveViewState()), // 7
+				(selectedRowStyle == null ? null : ((IStateManager)selectedRowStyle).SaveViewState()), // 8
+				(editRowStyle == null ? null : ((IStateManager)editRowStyle).SaveViewState()), // 9
+				(emptyDataRowStyle == null ? null : ((IStateManager)emptyDataRowStyle).SaveViewState()), // 10
+				autoFieldsData, // 11
+#if NET_4_0
+				sortedAscendingCellStyle == null ? null : ((IStateManager)sortedAscendingCellStyle).SaveViewState (), // 12
+				sortedAscendingHeaderStyle == null ? null : ((IStateManager)sortedAscendingHeaderStyle).SaveViewState (), // 13
+				sortedDescendingCellStyle == null ? null : ((IStateManager)sortedDescendingCellStyle).SaveViewState (), // 14
+				sortedDescendingHeaderStyle == null ? null : ((IStateManager)sortedDescendingHeaderStyle).SaveViewState () // 15
+#endif
+			};
 
 			for (int i = states.Length - 1; i >= 0; i--) {
 				if (states [i] != null)
@@ -2113,6 +2390,16 @@ namespace System.Web.UI.WebControls
 				((IStateManager)EditRowStyle).LoadViewState (states[9]);
 			if (states[10] != null)
 				((IStateManager)EmptyDataRowStyle).LoadViewState (states[10]);
+#if NET_4_0
+			if (states [12] != null)
+				((IStateManager)sortedAscendingCellStyle).LoadViewState (states [12]);
+			if (states [13] != null)
+				((IStateManager)sortedAscendingHeaderStyle).LoadViewState (states [13]);
+			if (states [14] != null)
+				((IStateManager)sortedDescendingCellStyle).LoadViewState (states [14]);
+			if (states [15] != null)
+				((IStateManager)sortedDescendingHeaderStyle).LoadViewState (states [15]);
+#endif
 		}
 		
 		void ICallbackEventHandler.RaiseCallbackEvent (string eventArgs)

+ 5 - 0
mcs/class/System.Web/System.Web.UI.WebControls/HyperLink.cs

@@ -166,5 +166,10 @@ namespace System.Web.UI.WebControls
 					Controls.Clear ();
 			}
 		}
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 	}
 }

+ 6 - 10
mcs/class/System.Web/System.Web.UI.WebControls/Image.cs

@@ -147,7 +147,11 @@ namespace System.Web.UI.WebControls
 			}
 			set { ViewState ["GenerateEmptyAlternateText"] = value; }
 		}
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		protected override void AddAttributesToRender (HtmlTextWriter writer)
 		{
 			base.AddAttributesToRender (writer);
@@ -189,20 +193,12 @@ namespace System.Web.UI.WebControls
 					writer.AddAttribute (HtmlTextWriterAttribute.Align, "texttop", false);
 					break;
 			}
-#if NET_2_0
 #if BUG_78875_FIXED
 			if (Context.Request.Browser.SupportsCss)
 #endif
+#if !NET_4_0
 			if (BorderWidth.IsEmpty)
 				writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
-#if BUG_78875_FIXED
-			else
-#endif
-#else
-			// if border-with is not specified in style or 
-			// no style is defined - set image to no border
-			if (!ControlStyleCreated || ControlStyle.BorderWidth.IsEmpty)
-				writer.AddAttribute (HtmlTextWriterAttribute.Border, "0");
 #endif
 		}
 

+ 5 - 1
mcs/class/System.Web/System.Web.UI.WebControls/ImageButton.cs

@@ -135,7 +135,11 @@ namespace System.Web.UI.WebControls
 			get { return AlternateText; }
 			set { AlternateText = value; }
 		}
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		protected override void AddAttributesToRender (HtmlTextWriter writer)
 		{			
 			Page page = Page;

+ 5 - 1
mcs/class/System.Web/System.Web.UI.WebControls/Label.cs

@@ -72,7 +72,11 @@ namespace System.Web.UI.WebControls
 			get { return ViewState.GetString ("AssociatedControlID", String.Empty); }
 			set { ViewState ["AssociatedControlID"] = value; }
 		}
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		protected override void LoadViewState (object savedState)
 		{
 			base.LoadViewState (savedState);

+ 5 - 0
mcs/class/System.Web/System.Web.UI.WebControls/LinkButton.cs

@@ -263,6 +263,11 @@ namespace System.Web.UI.WebControls
 			get { return ViewState.GetString ("ValidationGroup", String.Empty); }
 			set { ViewState ["ValidationGroup"] = value; }
 		}
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 	}
 }
 

+ 5 - 2
mcs/class/System.Web/System.Web.UI.WebControls/LoginName.cs

@@ -60,8 +60,11 @@ namespace System.Web.UI.WebControls {
 					ViewState ["FormatString"] = value;
 			}
 		}
-
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		protected internal override void Render (HtmlTextWriter writer)
 		{
 			if (!Anonymous) {

+ 6 - 1
mcs/class/System.Web/System.Web.UI.WebControls/Menu.cs

@@ -260,8 +260,13 @@ namespace System.Web.UI.WebControls
 		public Unit StaticSubMenuIndent {
 			get {
 				object o = ViewState ["StaticSubMenuIndent"];
-				if (o != null) return (Unit)o;
+				if (o != null)
+					return (Unit)o;
+#if NET_4_0
+				return Unit.Empty;
+#else
 				return new Unit (16);
+#endif
 			}
 			set {
 				ViewState["StaticSubMenuIndent"] = value;

+ 27 - 50
mcs/class/System.Web/System.Web.UI.WebControls/Panel.cs

@@ -41,7 +41,9 @@ namespace System.Web.UI.WebControls {
 	[Designer ("System.Web.UI.Design.WebControls.PanelDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
 	[ParseChildren (false)]
 	[PersistChildren (true)]
+#if !NET_4_0
 	[ToolboxData ("<{0}:Panel runat=server>Panel</{0}:Panel>")]
+#endif
 	public class Panel : WebControl {
 
 		public Panel () : base (HtmlTextWriterTag.Div) 
@@ -118,56 +120,15 @@ namespace System.Web.UI.WebControls {
 				w.AddAttribute (HtmlTextWriterAttribute.Align, align);
 #endif
 		}
-		
-#if !NET_2_0
-		[Bindable(true)]
-		[DefaultValue("")]
-		[Editor("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof(System.Drawing.Design.UITypeEditor))]
-		[WebSysDescription ("")]
-		[WebCategory ("Appearance")]
-		public virtual string BackImageUrl {
-			get {
-				return ViewState.GetString ("BackImageUrl", "");
-			}
-			
-			set {
-				ViewState ["BackImageUrl"] = value;
-			}
-		}
-		
-		[Bindable(true)]
-		[DefaultValue(HorizontalAlign.NotSet)]
-		[WebSysDescription ("")]
-		[WebCategory ("Layout")]
-		public virtual HorizontalAlign HorizontalAlign {
-			get {
-				return (HorizontalAlign) ViewState.GetInt ("HorizontalAlign", (int) HorizontalAlign.NotSet);
-			}
-			set {
-				ViewState ["HorizontalAlign"] = (int) value;
-			}
-		}
-		
-		[Bindable(true)]
-		[DefaultValue(true)]
-		[WebSysDescription ("")]
-		[WebCategory ("Layout")]
-		public virtual bool Wrap {
-			get {
-				return ViewState.GetBool ("Wrap", true);
-			}
-			set {
-				ViewState ["Wrap"] = value;
-			}
-		}
-#endif
-
 #if NET_2_0
 		PanelStyle PanelStyle {
 			get { return (ControlStyle as PanelStyle); }
 		}
-		
+#if NET_4_0
+		[UrlProperty]
+#else
 		[Bindable (true)]
+#endif
 		[DefaultValue ("")]
 		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
 		[WebSysDescription ("")]
@@ -189,8 +150,9 @@ namespace System.Web.UI.WebControls {
 					ViewState ["BackImageUrl"] = value;
 			}
 		}
-
+#if !NET_4_0
 		[Bindable (true)]
+#endif
 		[DefaultValue (HorizontalAlign.NotSet)]
 		[WebSysDescription ("")]
 		[WebCategory ("Layout")]
@@ -211,8 +173,9 @@ namespace System.Web.UI.WebControls {
 					ViewState ["HorizontalAlign"] = value;
 			}
 		}
-
+#if !NET_4_0
 		[Bindable (true)]
+#endif
 		[DefaultValue (true)]
 		[WebSysDescription ("")]
 		[WebCategory ("Layout")]
@@ -235,6 +198,9 @@ namespace System.Web.UI.WebControls {
 		}
 		
 		[ThemeableAttribute (false)]
+#if NET_4_0
+		[DefaultValue ("")]
+#endif
 		public virtual string DefaultButton {
 			get {
 				return ViewState.GetString ("DefaultButton", String.Empty);
@@ -243,7 +209,9 @@ namespace System.Web.UI.WebControls {
 				ViewState ["DefaultButton"] = value;
 			}
 		}
-
+#if NET_4_0
+		[DefaultValue (ContentDirection.NotSet)]
+#endif
 		public virtual ContentDirection Direction {
 			get {
 				if (ControlStyleCreated) {
@@ -263,6 +231,9 @@ namespace System.Web.UI.WebControls {
 		}
 
 		[LocalizableAttribute (true)]
+#if NET_4_0
+		[DefaultValue ("")]
+#endif
 		public virtual string GroupingText {
 			get {
 				return ViewState.GetString ("GroupingText", String.Empty);
@@ -271,7 +242,9 @@ namespace System.Web.UI.WebControls {
 				ViewState ["GroupingText"] = value;
 			}
 		}
-
+#if NET_4_0
+		[DefaultValue (ScrollBars.None)]
+#endif
 		public virtual ScrollBars ScrollBars {
 			get {
 				if (ControlStyleCreated) {
@@ -289,7 +262,11 @@ namespace System.Web.UI.WebControls {
 					ViewState ["ScrollBars"] = value;
 			}
 		}
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		protected override Style CreateControlStyle ()
 		{
 			return new PanelStyle (ViewState);

+ 22 - 19
mcs/class/System.Web/System.Web.UI.WebControls/SiteMapPath.cs

@@ -402,10 +402,9 @@ namespace System.Web.UI.WebControls
 					if (PathSeparatorTemplate != null) {
 						item.ApplyStyle (PathSeparatorStyle);
 						PathSeparatorTemplate.InstantiateIn (item);
-					}
-					else {
+					} else {
 						Literal h = new Literal ();
-						h.Text = PathSeparator;
+						h.Text = HttpUtility.HtmlEncode (PathSeparator);
 						item.ApplyStyle (PathSeparatorStyle);
 						item.Controls.Add (h);
 					}
@@ -461,28 +460,32 @@ namespace System.Web.UI.WebControls
 		protected internal override void RenderContents (HtmlTextWriter w)
 		{
 			string skip_id = ClientID + "_SkipLink";
+			string altText = SkipLinkText;
+			bool needAnchor = !String.IsNullOrEmpty (altText);
+			
+			if (needAnchor) {
+				// Anchor start
+				w.AddAttribute (HtmlTextWriterAttribute.Href, "#" + skip_id);
+				w.RenderBeginTag (HtmlTextWriterTag.A);
 
-			if (SkipLinkText != "") {
-				HtmlAnchor anchor = new HtmlAnchor ();
-				anchor.HRef = "#" + skip_id;
-
-				Image img = new Image ();
-				img.ImageUrl = Page.ClientScript.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif");
-				img.Attributes.Add ("height", "0");
-				img.Attributes.Add ("width", "0");
-				img.AlternateText = SkipLinkText;
-
-				anchor.Controls.Add (img);
+				// Image
+				w.AddAttribute (HtmlTextWriterAttribute.Alt, altText);
+				w.AddAttribute (HtmlTextWriterAttribute.Height, "0");
+				w.AddAttribute (HtmlTextWriterAttribute.Width, "0");
+				w.AddAttribute (HtmlTextWriterAttribute.Src, Page.ClientScript.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif"));
+				w.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
+				w.RenderBeginTag (HtmlTextWriterTag.Img);
+				w.RenderEndTag ();
 
-				anchor.Render (w);
+				w.RenderEndTag ();
 			}
 
 			base.RenderContents (w);
 
-			if (SkipLinkText != "") {
-				HtmlAnchor anchor = new HtmlAnchor ();
-				anchor.ID = skip_id;
-				anchor.Render (w);
+			if (needAnchor) {
+				 w.AddAttribute(HtmlTextWriterAttribute.Id, skip_id);
+				 w.RenderBeginTag(HtmlTextWriterTag.A);
+				 w.RenderEndTag();
 			}
 		}
 		

+ 18 - 103
mcs/class/System.Web/System.Web.UI.WebControls/Style.cs

@@ -433,105 +433,6 @@ namespace System.Web.UI.WebControls {
 #endif
 			}
 		}
-
-#if ONLY_1_1
-		void WriteStyleAttributes (HtmlTextWriter writer) 
-		{
-			string s;
-			Color		color;
-			BorderStyle	bs;
-			Unit		u;
-
-			if (CheckBit ((int) Styles.BackColor)) {
-				color = (Color)viewstate["BackColor"];
-				if (!color.IsEmpty)
-					writer.AddStyleAttribute (HtmlTextWriterStyle.BackgroundColor, ColorTranslator.ToHtml(color));
-			}
-
-			if (CheckBit ((int) Styles.BorderColor)) {
-				color = (Color)viewstate["BorderColor"];
-				if (!color.IsEmpty)
-					writer.AddStyleAttribute (HtmlTextWriterStyle.BorderColor, ColorTranslator.ToHtml(color));
-			}
-
-			bool have_width = false;
-			if (CheckBit ((int) Styles.BorderWidth)) {
-				u = (Unit)viewstate["BorderWidth"];
-				if (!u.IsEmpty) {
-					if (u.Value > 0)
-						have_width = true;
-					writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, u.ToString());
-				}
-			}
-
-			if (CheckBit ((int) Styles.BorderStyle)) {
-				bs = (BorderStyle)viewstate["BorderStyle"];
-				if (bs != BorderStyle.NotSet) 
-					writer.AddStyleAttribute (HtmlTextWriterStyle.BorderStyle, bs.ToString());
-				else {
-					if (CheckBit ((int) Styles.BorderWidth))
-						writer.AddStyleAttribute (HtmlTextWriterStyle.BorderStyle, "solid");
-				}
-			} else if (have_width) {
-				writer.AddStyleAttribute (HtmlTextWriterStyle.BorderStyle, "solid");
-			}
-
-			if (CheckBit ((int) Styles.ForeColor)) {
-				color = (Color)viewstate["ForeColor"];
-				if (!color.IsEmpty)
-					writer.AddStyleAttribute (HtmlTextWriterStyle.Color, ColorTranslator.ToHtml(color));
-			}
-
-			if (CheckBit ((int) Styles.Height)) {
-				u = (Unit)viewstate["Height"];
-				if (!u.IsEmpty)
-					writer.AddStyleAttribute (HtmlTextWriterStyle.Height, u.ToString());
-			}
-
-			if (CheckBit ((int) Styles.Width)) {
-				u = (Unit)viewstate["Width"];
-				if (!u.IsEmpty)
-					writer.AddStyleAttribute (HtmlTextWriterStyle.Width, u.ToString());
-			}
-
-			if (CheckBit ((int) Style.Styles.FontAll)) {
-				// Fonts are a bit weird
-				FontInfo font = Font;
-				if (font.Name != string.Empty) {
-					s = font.Names[0];
-					for (int i = 1; i < font.Names.Length; i++)
-						s += "," + font.Names[i];
-					writer.AddStyleAttribute (HtmlTextWriterStyle.FontFamily, s);
-				}
-
-				if (font.Bold)
-					writer.AddStyleAttribute (HtmlTextWriterStyle.FontWeight, "bold");
-
-				if (font.Italic)
-					writer.AddStyleAttribute (HtmlTextWriterStyle.FontStyle, "italic");
-
-				if (!font.Size.IsEmpty)
-					writer.AddStyleAttribute (HtmlTextWriterStyle.FontSize, font.Size.ToString());
-
-				// These styles are munged into a attribute decoration
-				s = string.Empty;
-
-				if (font.Overline)
-					s += "overline ";
-
-				if (font.Strikeout)
-					s += "line-through ";
-
-				if (font.Underline)
-					s += "underline ";
-
-				s = (s != "") ? s : AlwaysRenderTextDecoration ? "none" : "";
-				if (s != "")
-					writer.AddStyleAttribute (HtmlTextWriterStyle.TextDecoration, s);
-			}
-		}
-#endif
-
 #if NET_2_0
 		protected virtual void FillStyleAttributes (CssStyleCollection attributes, IUrlResolutionService urlResolver)
 		{
@@ -856,15 +757,29 @@ namespace System.Web.UI.WebControls {
 			fontinfo = null;
 		}
 
-		internal void AddCssClass (string cssClass) {
+		internal void AddCssClass (string cssClass)
+		{
 			if (String.IsNullOrEmpty (cssClass))
 				return;
 
-			if (CssClass.Length > 0)
-				CssClass += " ";
-			CssClass += cssClass;
+			string newClass = CssClass;
+			if (newClass.Length > 0)
+				newClass += " ";
+			newClass += cssClass;
+			CssClass = newClass;
 		}
+#if NET_4_0
+		internal void PrependCssClass (string cssClass)
+		{
+			if (String.IsNullOrEmpty (cssClass))
+				return;
 
+			string oldClass = CssClass;
+			if (oldClass.Length > 0)
+				cssClass += " ";
+			CssClass = cssClass + oldClass;
+		}
+#endif
 		public void SetDirty ()
 		{
 			if (viewstate != null)

+ 12 - 4
mcs/class/System.Web/System.Web.UI.WebControls/Table.cs

@@ -190,16 +190,21 @@ namespace System.Web.UI.WebControls {
 		private TableStyle TableStyle {
 			get { return (ControlStyle as TableStyle); }
 		}
-
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		protected override void AddAttributesToRender (HtmlTextWriter writer)
 		{
 			base.AddAttributesToRender (writer);
+#if !NET_4_0
 			if (!ControlStyleCreated || TableStyle.IsEmpty) {
 				// for some reason border=X seems to be always present
 				// and isn't rendered as a style attribute
 				writer.AddAttribute (HtmlTextWriterAttribute.Border, "0", false);
 			}
+#endif
 		}
 
 		protected override ControlCollection CreateControlCollection ()
@@ -287,9 +292,12 @@ namespace System.Web.UI.WebControls {
 				writer.RenderBeginTag (HtmlTextWriterTag.Caption);
 				writer.Write (s);
 				writer.RenderEndTag ();
-			} else if (HasControls ()) {
-				writer.Indent++;
 			}
+// #if !NET_4_0
+// 			else if (HasControls ()) {
+// 				writer.Indent++;
+// 			}
+// #endif
 		}
 
 #if NET_2_0

+ 5 - 1
mcs/class/System.Web/System.Web.UI.WebControls/TableCell.cs

@@ -189,7 +189,11 @@ namespace System.Web.UI.WebControls {
 			}
 			set { TableItemStyle.Wrap = value; }
 		}
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		TableItemStyle TableItemStyle {
 			get { return (ControlStyle as TableItemStyle); }
 		}

+ 5 - 2
mcs/class/System.Web/System.Web.UI.WebControls/TableRow.cs

@@ -108,8 +108,11 @@ namespace System.Web.UI.WebControls {
 		TableItemStyle TableItemStyle {
 			get { return (ControlStyle as TableItemStyle); }
 		}
-
-
+#if NET_4_0
+		public override bool SupportsDisabledAttribute {
+			get { return RenderingCompatibilityLessThan40; }
+		}
+#endif
 		protected override ControlCollection CreateControlCollection ()
 		{
 			return new CellControlCollection (this);

+ 9 - 6
mcs/class/System.Web/System.Web.UI.WebControls/TableStyle.cs

@@ -175,8 +175,9 @@ namespace System.Web.UI.WebControls {
 				SetBit ((int) TableStyles.HorizontalAlign);
 			}
 		}
-
-
+#if NET_4_0
+		[MonoTODO ("collapse style should be rendered only for browsers which support that.")]
+#endif
 		public override void AddAttributesToRender (HtmlTextWriter writer, WebControl owner)
 		{
 			base.AddAttributesToRender (writer, owner);
@@ -191,9 +192,8 @@ namespace System.Web.UI.WebControls {
 			i = CellSpacing;
 			if (i != -1) {
 				writer.AddAttribute (HtmlTextWriterAttribute.Cellspacing, i.ToString (Helpers.InvariantCulture), false);
-				if (i == 0) {
+				if (i == 0)
 					writer.AddStyleAttribute(HtmlTextWriterStyle.BorderCollapse, "collapse");
-				}
 			}
 
 			GridLines g = GridLines;
@@ -224,7 +224,10 @@ namespace System.Web.UI.WebControls {
 				writer.AddAttribute (HtmlTextWriterAttribute.Align, "justify", false);
 				break;
 			}
-
+#if NET_4_0
+			if (g != GridLines.None && BorderWidth.IsEmpty)
+				writer.AddAttribute (HtmlTextWriterAttribute.Border, "1", false);
+#else
 			// border (=0) is always present (and base class doesn't seems to add it)
 			// but border is "promoted" to 1 if gridlines are present (with BorderWidth == 0)
 			if (g == GridLines.None) {
@@ -234,7 +237,7 @@ namespace System.Web.UI.WebControls {
 			} else {
 				writer.AddAttribute (HtmlTextWriterAttribute.Border, BorderWidth.Value.ToString (Helpers.InvariantCulture));
 			}
-
+#endif
 #if !NET_2_0
 			string s = BackImageUrl;
 			if (s.Length > 0) {

+ 6 - 1
mcs/class/System.Web/System.Web.UI.WebControls/TextBox.cs

@@ -209,8 +209,13 @@ namespace System.Web.UI.WebControls {
 		{
 			// Why didn't msft just override RenderContents!?
 			RenderBeginTag (w);
-			if (TextMode == TextBoxMode.MultiLine)
+			if (TextMode == TextBoxMode.MultiLine) {
+#if NET_4_0
+				w.WriteLine ();
+#endif
 				HttpUtility.HtmlEncode (Text, w);
+			}
+			
 			RenderEndTag (w);
 		}
 		

+ 44 - 11
mcs/class/System.Web/System.Web.UI.WebControls/WebControl.cs

@@ -41,7 +41,11 @@ namespace System.Web.UI.WebControls {
 #else	
 	[PersistChildrenAttribute (false)]
 #endif		
-	public class WebControl : Control, IAttributeAccessor {
+	public class WebControl : Control, IAttributeAccessor
+	{
+#if NET_4_0
+		const string DEFAULT_DISABLED_CSS_CLASS = "aspNetDisabled";
+#endif
 		Style style;
 		HtmlTextWriterTag tag;
 		string tag_name;
@@ -49,7 +53,12 @@ namespace System.Web.UI.WebControls {
 		StateBag attribute_state;
 		bool enabled;
 		bool track_enabled_state;
-
+#if NET_4_0
+		static WebControl ()
+		{
+			DisabledCssClass = DEFAULT_DISABLED_CSS_CLASS;
+		}
+#endif
 		public WebControl (HtmlTextWriterTag tag) 
 		{
 			this.tag = tag;
@@ -424,7 +433,17 @@ namespace System.Web.UI.WebControls {
 #endif
 			}
 		}
-
+#if NET_4_0
+		public static string DisabledCssClass {
+			get;
+			set;
+		}
+		
+		[Browsable (false)]
+		public virtual bool SupportsDisabledAttribute {
+			get { return true; }
+		}
+#endif
 		public void ApplyStyle (Style s) 
 		{
 			if (s != null && !s.IsEmpty)
@@ -506,24 +525,38 @@ namespace System.Web.UI.WebControls {
 				return;
 
 			if (!ControlStyle.BorderWidth.IsEmpty ||
-			(ControlStyle.BorderStyle != BorderStyle.None && ControlStyle.BorderStyle != BorderStyle.NotSet) ||
-			!ControlStyle.Height.IsEmpty ||
-			!ControlStyle.Width.IsEmpty)
+			    (ControlStyle.BorderStyle != BorderStyle.None && ControlStyle.BorderStyle != BorderStyle.NotSet) ||
+			    !ControlStyle.Height.IsEmpty ||
+			    !ControlStyle.Width.IsEmpty)
 				writer.AddStyleAttribute (HtmlTextWriterStyle.Display, "inline-block");
 		}
 #endif
+		void RenderDisabled (HtmlTextWriter writer)
+		{
+			if (!IsEnabled) {
+#if NET_4_0
+				if (!SupportsDisabledAttribute)
+					ControlStyle.PrependCssClass (DisabledCssClass);
+				else
+#endif
+					writer.AddAttribute (HtmlTextWriterAttribute.Disabled, "disabled", false);
+			}
 
+		}
+		
 		protected virtual void AddAttributesToRender (HtmlTextWriter writer) 
 		{
+#if NET_4_0
+			RenderDisabled (writer);
+#endif
 			if (ID != null)
 				writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
-
+#if !NET_4_0
+			RenderDisabled (writer);
+#endif
 			if (AccessKey != string.Empty)
 				writer.AddAttribute (HtmlTextWriterAttribute.Accesskey, AccessKey);
-
-			if (!IsEnabled)
-				writer.AddAttribute (HtmlTextWriterAttribute.Disabled, "disabled", false);
-
+			
 			if (ToolTip != string.Empty)
 				writer.AddAttribute (HtmlTextWriterAttribute.Title, ToolTip);
 

+ 10 - 0
mcs/class/System.Web/System.Web.UI/ChangeLog

@@ -1,3 +1,13 @@
+2010-07-02  Marek Habersack  <[email protected]>
+
+	* TemplateControlParser.cs: added support for ClientIDMode
+	property
+
+	* Control.cs: implemented 4.0 features - ClientIDMode and
+	RenderingCompatibility.
+
+	* ClientIDMode.cs, IDataKeysControl.cs: added
+
 2010-06-17  Marek Habersack  <[email protected]>
 
 	* RootBuilder.cs: both LINK and META HTML tags must be represented

+ 39 - 0
mcs/class/System.Web/System.Web.UI/ClientIDMode.cs

@@ -0,0 +1,39 @@
+//
+// Authors:
+//   Marek Habersack ([email protected])
+//
+// (C) 2002,2003 Ximian, Inc. (http://www.ximian.com)
+// Copyright (C) 2003-2010 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.
+//
+
+using System;
+
+namespace System.Web.UI
+{
+	public enum ClientIDMode
+	{
+		Inherit,
+		AutoID,
+		Predictable,
+		Static
+	}
+}

+ 241 - 9
mcs/class/System.Web/System.Web.UI/Control.cs

@@ -42,9 +42,12 @@ using System.ComponentModel.Design.Serialization;
 using System.Globalization;
 using System.IO;
 using System.Security.Permissions;
+using System.Text;
 using System.Web;
-using System.Web.Util;
+using System.Web.Configuration;
 using System.Web.UI.Adapters;
+using System.Web.UI.WebControls;
+using System.Web.Util;
 
 #if NET_4_0
 using System.Web.Routing;
@@ -86,6 +89,7 @@ namespace System.Web.UI
 		static Dictionary <Type, bool> loadViewStateByIDCache;
 		bool? loadViewStateByID;
 		string uniqueID;
+		string clientID;
 		string _userId;
 		ControlCollection _controls;
 		Control _namingContainer;
@@ -105,6 +109,10 @@ namespace System.Web.UI
 		string _templateSourceDirectory;
 #if NET_4_0
 		ViewStateMode viewStateMode;
+		ClientIDMode? clientIDMode;
+		ClientIDMode? effectiveClientIDMode;
+		Version renderingCompatibility;
+		bool? renderingCompatibilityOld;
 #endif
 		/*************/
 		int stateMask;
@@ -190,6 +198,9 @@ namespace System.Web.UI
 
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[EditorBrowsable (EditorBrowsableState.Never), Browsable (false)]
+#if NET_4_0
+		[Bindable (true)]
+#endif
 		public Control BindingContainer {
 			get {
 				Control container = NamingContainer;
@@ -205,18 +216,227 @@ namespace System.Web.UI
 		[WebSysDescription ("An Identification of the control that is rendered.")]
 		public virtual string ClientID {
 			get {
-				string client = UniqueID;
+				if (clientID != null)
+					return clientID;
+#if NET_4_0
+				switch (EffectiveClientIDMode) {
+					case ClientIDMode.AutoID:
+						clientID = UniqueID2ClientID (UniqueID);
+						break;
 
-				if (client != null)
-					client = UniqueID2ClientID (client);
+					case ClientIDMode.Predictable:
+						EnsureID ();
+						clientID = GeneratePredictableClientID ();
+						break;
 
+					case ClientIDMode.Static:
+						EnsureID ();
+						clientID = ID;
+						break;
+				}
+#else
+				clientID = UniqueID2ClientID (UniqueID);
+#endif				
 				stateMask |= ID_SET;
-				return client;
+				return clientID;
+			}
+		}
+#if NET_4_0
+		[Bindable (false)]
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		public virtual Version RenderingCompatibility {
+			get {
+				if (renderingCompatibility == null) {
+					var ps = WebConfigurationManager.GetSection ("system.web/pages") as PagesSection;
+					renderingCompatibility = ps != null ? ps.ControlRenderingCompatibilityVersion : new Version (4, 0);
+				}
+
+				return renderingCompatibility;
+			}
+			
+			set {
+				renderingCompatibility = value;
+				renderingCompatibilityOld = null;
+			}
+		}
+
+		internal bool RenderingCompatibilityLessThan40 {
+			get {
+				if (!renderingCompatibilityOld.HasValue)
+					renderingCompatibilityOld = RenderingCompatibility < new Version (4, 0);
+
+				return renderingCompatibilityOld.Value;
+			}
+		}
+		
+		[Bindable (false)]
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsableAttribute (EditorBrowsableState.Never)]
+		public Control DataItemContainer {
+			get {
+				Control container = NamingContainer;
+				if (container == null)
+					return null;
+
+				if (container is IDataItemContainer)
+					return container;
+
+				return container.DataItemContainer;
+			}
+		}
+
+		[Bindable (false)]
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsableAttribute (EditorBrowsableState.Never)]
+		public Control DataKeysContainer {
+			get {
+				Control container = NamingContainer;
+				if (container == null)
+					return null;
+
+				if (container is IDataKeysControl)
+					return container;
+
+				return container.DataKeysContainer;
+			}
+		}
+
+		[Themeable (false)]
+		[DefaultValue (ClientIDMode.Inherit)]
+		public virtual ClientIDMode ClientIDMode {
+			get {
+				if (!clientIDMode.HasValue)
+					return ClientIDMode.Inherit;
+
+				return clientIDMode.Value;
+			}
+			
+			set {
+				if (clientIDMode.HasValue && clientIDMode.Value != value) {
+					ClearCachedClientID ();
+					ClearEffectiveClientIDMode ();
+					clientIDMode = value;
+				}
 			}
 		}
 
+		internal ClientIDMode EffectiveClientIDMode {
+			get {
+				if (effectiveClientIDMode.HasValue)
+					return effectiveClientIDMode.Value;
+				
+				ClientIDMode ret = ClientIDMode;
+				if (ret != ClientIDMode.Inherit) {
+					effectiveClientIDMode = ret;
+					return ret;
+				}
+				
+				// not sure about this, but it seems logical as INamingContainer is
+				// the top of the hierarchy and it should "reset" the mode.
+				Control container = NamingContainer;
+				if (container != null) {
+					effectiveClientIDMode = container.EffectiveClientIDMode;
+					return effectiveClientIDMode.Value;
+				}
+
+				var ps = WebConfigurationManager.GetSection ("system.web/pages") as PagesSection;
+				effectiveClientIDMode = ps.ClientIDMode;
+
+				return effectiveClientIDMode.Value;
+			}	
+		}
+
+		protected void ClearCachedClientID ()
+		{
+			clientID = null;
+			if (!HasControls ())
+				return;
+
+			for (int i = 0; i < _controls.Count; i++)
+				_controls [i].ClearCachedClientID ();
+		}
+
+		protected void ClearEffectiveClientIDMode ()
+		{
+			effectiveClientIDMode = null;
+			if (!HasControls ())
+				return;
+
+			for (int i = 0; i < _controls.Count; i++)
+				_controls [i].ClearEffectiveClientIDMode ();
+		}
+		
+		string GeneratePredictableClientID ()
+		{
+			string myID = ID;
+			char separator = ClientIDSeparator;
+			
+			var sb = new StringBuilder ();
+			Control container = NamingContainer;
+			if (container != null && container != Page) {
+				string containerID = container.ID;
+				if (!String.IsNullOrEmpty (containerID)) {
+					sb.Append (container.ClientID);
+					sb.Append (separator);
+				} else
+					sb.Append (container.GeneratePredictableClientID ());
+			}
+
+			if (String.IsNullOrEmpty (myID))
+				return sb.ToString ();
+			
+			sb.Append (myID);
+			IDataItemContainer dataItemContainer = DataItemContainer as IDataItemContainer;
+			if (dataItemContainer == null)
+				return sb.ToString ();
+
+			IDataKeysControl dataKeysContainer = DataKeysContainer as IDataKeysControl;
+			GetDataBoundControlFieldValue (sb, separator, dataItemContainer, dataKeysContainer);
+			
+			return sb.ToString ();
+		}
+
+		void GetDataBoundControlFieldValue (StringBuilder sb, char separator, IDataItemContainer dataItemContainer, IDataKeysControl dataKeysContainer)
+		{
+			if (dataItemContainer is IDataBoundItemControl)
+				return;
+			
+			int index = dataItemContainer.DisplayIndex;
+			if (dataKeysContainer == null) {
+				if (index >= 0) {
+					sb.Append (separator);
+					sb.Append (index);
+				}
+				return;
+			}
+			
+			string[] suffixes = dataKeysContainer.ClientIDRowSuffix;
+			DataKeyArray keys = dataKeysContainer.ClientIDRowSuffixDataKeys;
+			if (keys == null || suffixes == null || suffixes.Length == 0) {
+				sb.Append (separator);
+				sb.Append (index);
+				return;
+			}
+
+			object value;
+			DataKey key = keys [index];
+			foreach (string suffix in suffixes) {
+				sb.Append (separator);
+				value = key != null ? key [suffix] : null;
+				if (value == null)
+					continue;
+				sb.Append (value.ToString ());
+			}
+		}
+#endif
 		internal string UniqueID2ClientID (string uniqueId)
 		{
+			if (String.IsNullOrEmpty (uniqueId))
+				return null;
+			
 			return uniqueId.Replace (IdSeparator, ClientIDSeparator);
 		}
 
@@ -301,6 +521,9 @@ namespace System.Web.UI
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[Browsable (false)]
 		[WebSysDescription ("The container that this control is part of. The control's name has to be unique within the container.")]
+#if NET_4_0
+		[Bindable (true)]
+#endif
 		public virtual Control NamingContainer {
 			get {
 				if (_namingContainer == null && _parent != null) {
@@ -335,6 +558,9 @@ namespace System.Web.UI
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[Browsable (false)]
 		[WebSysDescription ("The parent control of this control.")]
+#if NET_4_0
+		[Bindable (true)]
+#endif
 		public virtual Control Parent { //DIT
 			get { return _parent; }
 		}
@@ -349,6 +575,9 @@ namespace System.Web.UI
 
 		[Browsable (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+#if NET_4_0
+		[Bindable (true)]
+#endif
 		public TemplateControl TemplateControl {
 			get { return TemplateControlInternal; }
 
@@ -412,13 +641,13 @@ namespace System.Web.UI
 				if (uniqueID != null)
 					return uniqueID;
 
-				if (NamingContainer == null)
+				Control container = NamingContainer;
+				if (container == null)
 					return _userId;
 
 				EnsureIDInternal ();
-
-				string prefix = NamingContainer.UniqueID;
-				if (NamingContainer == Page || prefix == null) {
+				string prefix = container.UniqueID;
+				if (container == Page || prefix == null) {
 					uniqueID = _userId;
 #if TARGET_J2EE
 					if (getFacesContext () != null)
@@ -566,6 +795,9 @@ namespace System.Web.UI
 		void NullifyUniqueID ()
 		{
 			uniqueID = null;
+#if NET_4_0
+			ClearCachedClientID ();
+#endif
 			if (!HasControls ())
 				return;
 

+ 36 - 0
mcs/class/System.Web/System.Web.UI/IDataKeysControl.cs

@@ -0,0 +1,36 @@
+//
+// Authors:
+//   Marek Habersack <[email protected]>
+//
+// (C) 2010 Novell, Inc. (http://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.
+//
+using System;
+using System.Web.UI.WebControls;
+
+namespace System.Web.UI
+{
+	public interface IDataKeysControl
+	{
+		string[] ClientIDRowSuffix { get; }
+		DataKeyArray ClientIDRowSuffixDataKeys { get; }
+	}
+}

+ 4 - 2
mcs/class/System.Web/System.Web.UI/PageParser.cs

@@ -459,8 +459,10 @@ namespace System.Web.UI
 			}
 			return retval;
 		}
-
-		public static Type GetCompiledPageType (string virtualPath, string inputFile, HttpContext context)
+#if !NET_4_0
+		public static
+#endif
+		Type GetCompiledPageType (string virtualPath, string inputFile, HttpContext context)
 		{
 			return BuildManager.GetCompiledType (virtualPath);
 		}

+ 26 - 12
mcs/class/System.Web/System.Web.UI/TemplateControlParser.cs

@@ -46,6 +46,9 @@ namespace System.Web.UI
 		bool autoEventWireup = true;
 		bool enableViewState = true;
 		CompilationMode compilationMode = CompilationMode.Always;
+#if NET_4_0
+		ClientIDMode? clientIDMode;
+#endif
 		TextReader reader;
 
 		protected TemplateControlParser ()
@@ -67,19 +70,26 @@ namespace System.Web.UI
 			autoEventWireup = GetBool (atts, "AutoEventWireup", autoEventWireup);
 			enableViewState = GetBool (atts, "EnableViewState", enableViewState);
 
-			string cmode = GetString (atts, "CompilationMode", compilationMode.ToString ());
-			if (!String.IsNullOrEmpty (cmode)) {
-				if (String.Compare (cmode, "always", StringComparison.InvariantCultureIgnoreCase) == 0)
-					compilationMode = CompilationMode.Always;
-				else if (String.Compare (cmode, "auto", StringComparison.InvariantCultureIgnoreCase) == 0)
-					compilationMode = CompilationMode.Auto;
-				else if (String.Compare (cmode, "never", StringComparison.InvariantCultureIgnoreCase) == 0)
-					compilationMode = CompilationMode.Never;
-				else
-					ThrowParseException ("Invalid value of the CompilationMode attribute");
+			string value = GetString (atts, "CompilationMode", compilationMode.ToString ());
+			if (!String.IsNullOrEmpty (value)) {
+				try {
+					compilationMode = (CompilationMode) Enum.Parse (typeof (CompilationMode), value, true);
+				} catch (Exception ex) {
+					ThrowParseException ("Invalid value of the CompilationMode attribute.", ex);
+				}
 			}
+			
 			atts.Remove ("TargetSchema"); // Ignored
-
+#if NET_4_0
+			value = GetString (atts, "ClientIDMode", null);
+			if (!String.IsNullOrEmpty (value)) {
+				try {
+					clientIDMode = (ClientIDMode) Enum.Parse (typeof (ClientIDMode), value, true);
+				} catch (Exception ex) {
+					ThrowParseException ("Invalid value of the ClientIDMode attribute.", ex);
+				}
+			}
+#endif
 			base.ProcessMainAttributes (atts);
 		}
 
@@ -196,8 +206,12 @@ namespace System.Web.UI
 		
 		internal CompilationMode CompilationMode {
 			get { return compilationMode; }
+		}		
+#if NET_4_0
+		internal ClientIDMode? ClientIDMode {
+			get { return clientIDMode; }
 		}
-		
+#endif
 		internal override TextReader Reader {
 			get { return reader; }
 			set { reader = value; }

+ 5 - 0
mcs/class/System.Web/System.Web_standalone_test.dll.sources

@@ -14,3 +14,8 @@ Test/standalone-tests/FormViewUpdateParameters_Bug607722.cs
 Test/standalone-tests/RootBuilderChildControlTypes_Bug603541.cs
 Test/standalone-tests/MD5PasswordAuth_Bug601727.cs
 Test/standalone-tests/WebControlsMustUseIsEnabled_Bug571715.cs
+Test/standalone-tests/ControlRenderingCompatibilityVersion.cs
+Test/standalone-tests/DisabledAttributeRendering.cs
+Test/standalone-tests/GridViewShowHeaderWhenEmpty.cs
+Test/standalone-tests/GridViewSortingStyles.cs
+Test/standalone-tests/SiteMapPathRendering.cs

+ 1 - 0
mcs/class/System.Web/System.Web_test.dll.sources

@@ -264,6 +264,7 @@ System.Web.UI.WebControls/RectangleHotSpotTest.cs
 System.Web.UI.WebControls/RegularExpressionValidatorTest.cs
 System.Web.UI.WebControls/RepeatInfoTest.auto.cs
 System.Web.UI.WebControls/RepeatInfoTest.auto.2.0.cs
+System.Web.UI.WebControls/RepeatInfoTest.auto.4.0.cs
 System.Web.UI.WebControls/RepeatInfoTest.cs
 System.Web.UI.WebControls/RepeaterItemCollectionTest.cs
 System.Web.UI.WebControls/RepeaterTest.cs

+ 64 - 13
mcs/class/System.Web/Test/System.Web.UI.WebControls/CheckBoxListTest.cs

@@ -165,8 +165,13 @@ namespace MonoTests.System.Web.UI.WebControls {
 		{
 			WebTest t = new WebTest ("CheckBoxList_Bug377703_1.aspx");
 			t.Invoker = PageInvoker.CreateOnInit (CheckBoxList_Bug377703_1_OnInit);
+#if NET_4_0
+			string origHtmlFirst = "<table id=\"cbxl1\">\r\n\t<tr>\r\n\t\t<td><input id=\"cbxl1_0\" type=\"checkbox\" name=\"cbxl1$0\" value=\"x\" /><label for=\"cbxl1_0\">x</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl1_1\" type=\"checkbox\" name=\"cbxl1$1\" value=\"y\" /><label for=\"cbxl1_1\">y</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl1_2\" type=\"checkbox\" name=\"cbxl1$2\" value=\"z\" /><label for=\"cbxl1_2\">z</label></td>\r\n\t</tr>\r\n</table>";
+			string origHtmlSecond = "<table id=\"cbxl1\">\r\n\t<tr>\r\n\t\t<td><input id=\"cbxl1_0\" type=\"checkbox\" name=\"cbxl1$0\" checked=\"checked\" value=\"x\" /><label for=\"cbxl1_0\">x</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl1_1\" type=\"checkbox\" name=\"cbxl1$1\" value=\"y\" /><label for=\"cbxl1_1\">y</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl1_2\" type=\"checkbox\" name=\"cbxl1$2\" value=\"z\" /><label for=\"cbxl1_2\">z</label></td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtmlFirst = "<table id=\"cbxl1\" border=\"0\">\r\n\t<tr>\r\n\t\t<td><input id=\"cbxl1_0\" type=\"checkbox\" name=\"cbxl1$0\" /><label for=\"cbxl1_0\">x</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl1_1\" type=\"checkbox\" name=\"cbxl1$1\" /><label for=\"cbxl1_1\">y</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl1_2\" type=\"checkbox\" name=\"cbxl1$2\" /><label for=\"cbxl1_2\">z</label></td>\r\n\t</tr>\r\n</table>";
 			string origHtmlSecond = "<table id=\"cbxl1\" border=\"0\">\r\n\t<tr>\r\n\t\t<td><input id=\"cbxl1_0\" type=\"checkbox\" name=\"cbxl1$0\" checked=\"checked\" /><label for=\"cbxl1_0\">x</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl1_1\" type=\"checkbox\" name=\"cbxl1$1\" /><label for=\"cbxl1_1\">y</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl1_2\" type=\"checkbox\" name=\"cbxl1$2\" /><label for=\"cbxl1_2\">z</label></td>\r\n\t</tr>\r\n</table>";
+#endif
 			string html = t.Run ();
 			string listHtml = HtmlDiff.GetControlFromPageHtml (html);
 
@@ -215,9 +220,15 @@ namespace MonoTests.System.Web.UI.WebControls {
 		{
 			WebTest t = new WebTest ("CheckBoxList_Bug377703_2.aspx");
 			t.Invoker = PageInvoker.CreateOnInit (CheckBoxList_Bug377703_2_OnInit);
+#if NET_4_0
+			string origHtmlFirst = "<table id=\"cbxl2\">\r\n\t<tr>\r\n\t\t<td><input id=\"cbxl2_0\" type=\"checkbox\" name=\"cbxl2$0\" value=\"x\" /><label for=\"cbxl2_0\">x</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl2_1\" type=\"checkbox\" name=\"cbxl2$1\" value=\"y\" /><label for=\"cbxl2_1\">y</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl2_2\" type=\"checkbox\" name=\"cbxl2$2\" value=\"z\" /><label for=\"cbxl2_2\">z</label></td>\r\n\t</tr>\r\n</table>";
+			string origHtmlSecond = "<table id=\"cbxl2\" class=\"aspNetDisabled\">\r\n\t<tr>\r\n\t\t<td><span class=\"aspNetDisabled\"><input id=\"cbxl2_0\" type=\"checkbox\" name=\"cbxl2$0\" checked=\"checked\" disabled=\"disabled\" value=\"x\" /><label for=\"cbxl2_0\">x</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span class=\"aspNetDisabled\"><input id=\"cbxl2_1\" type=\"checkbox\" name=\"cbxl2$1\" disabled=\"disabled\" value=\"y\" /><label for=\"cbxl2_1\">y</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span class=\"aspNetDisabled\"><input id=\"cbxl2_2\" type=\"checkbox\" name=\"cbxl2$2\" checked=\"checked\" disabled=\"disabled\" value=\"z\" /><label for=\"cbxl2_2\">z</label></span></td>\r\n\t</tr>\r\n</table>";
+			string origHtmlThird = "<table id=\"cbxl2\" class=\"aspNetDisabled\">\r\n\t<tr>\r\n\t\t<td><span class=\"aspNetDisabled\"><input id=\"cbxl2_0\" type=\"checkbox\" name=\"cbxl2$0\" checked=\"checked\" disabled=\"disabled\" value=\"x\" /><label for=\"cbxl2_0\">x</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span class=\"aspNetDisabled\"><input id=\"cbxl2_1\" type=\"checkbox\" name=\"cbxl2$1\" disabled=\"disabled\" value=\"y\" /><label for=\"cbxl2_1\">y</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span class=\"aspNetDisabled\"><input id=\"cbxl2_2\" type=\"checkbox\" name=\"cbxl2$2\" checked=\"checked\" disabled=\"disabled\" value=\"z\" /><label for=\"cbxl2_2\">z</label></span></td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtmlFirst = "<table id=\"cbxl2\" border=\"0\">\r\n\t<tr>\r\n\t\t<td><input id=\"cbxl2_0\" type=\"checkbox\" name=\"cbxl2$0\" /><label for=\"cbxl2_0\">x</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl2_1\" type=\"checkbox\" name=\"cbxl2$1\" /><label for=\"cbxl2_1\">y</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"cbxl2_2\" type=\"checkbox\" name=\"cbxl2$2\" /><label for=\"cbxl2_2\">z</label></td>\r\n\t</tr>\r\n</table>";
 			string origHtmlSecond = "<table id=\"cbxl2\" disabled=\"disabled\" border=\"0\">\r\n\t<tr>\r\n\t\t<td><span disabled=\"disabled\"><input id=\"cbxl2_0\" type=\"checkbox\" name=\"cbxl2$0\" checked=\"checked\" disabled=\"disabled\" /><label for=\"cbxl2_0\">x</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span disabled=\"disabled\"><input id=\"cbxl2_1\" type=\"checkbox\" name=\"cbxl2$1\" disabled=\"disabled\" /><label for=\"cbxl2_1\">y</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span disabled=\"disabled\"><input id=\"cbxl2_2\" type=\"checkbox\" name=\"cbxl2$2\" checked=\"checked\" disabled=\"disabled\" /><label for=\"cbxl2_2\">z</label></span></td>\r\n\t</tr>\r\n</table>";
 			string origHtmlThird = "<table id=\"cbxl2\" disabled=\"disabled\" border=\"0\">\r\n\t<tr>\r\n\t\t<td><span disabled=\"disabled\"><input id=\"cbxl2_0\" type=\"checkbox\" name=\"cbxl2$0\" checked=\"checked\" disabled=\"disabled\" /><label for=\"cbxl2_0\">x</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span disabled=\"disabled\"><input id=\"cbxl2_1\" type=\"checkbox\" name=\"cbxl2$1\" disabled=\"disabled\" /><label for=\"cbxl2_1\">y</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span disabled=\"disabled\"><input id=\"cbxl2_2\" type=\"checkbox\" name=\"cbxl2$2\" checked=\"checked\" disabled=\"disabled\" /><label for=\"cbxl2_2\">z</label></span></td>\r\n\t</tr>\r\n</table>";
+#endif
 			string html = t.Run ();
 			string listHtml = HtmlDiff.GetControlFromPageHtml (html);
 
@@ -270,7 +281,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 		{
 			WebTest t = new WebTest ("CheckBoxList_Bug578770.aspx");
 			t.Invoker = PageInvoker.CreateOnInit (CheckBoxList_Bug578770_OnInit);
+#if NET_4_0
+			string origHtml = "<table id=\"test\">\r\n\t<tr>\r\n\t\t<td><span class=\"aspNetDisabled\"><input id=\"test_0\" type=\"checkbox\" name=\"test$0\" disabled=\"disabled\" value=\"Sun\" /><label for=\"test_0\">Sun</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span><input id=\"test_1\" type=\"checkbox\" name=\"test$1\" value=\"Mon\" /><label for=\"test_1\">Mon</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span><input id=\"test_2\" type=\"checkbox\" name=\"test$2\" value=\"Tue\" /><label for=\"test_2\">Tue</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span><input id=\"test_3\" type=\"checkbox\" name=\"test$3\" value=\"Wed\" /><label for=\"test_3\">Wed</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span><input id=\"test_4\" type=\"checkbox\" name=\"test$4\" value=\"Thu\" /><label for=\"test_4\">Thu</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span><input id=\"test_5\" type=\"checkbox\" name=\"test$5\" value=\"Fri\" /><label for=\"test_5\">Fri</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><span><input id=\"test_6\" type=\"checkbox\" name=\"test$6\" value=\"Sat\" /><label for=\"test_6\">Sat</label></span></td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtml = "<table id=\"test\" border=\"0\">\r\n\t<tr>\r\n\t\t<td><span disabled=\"disabled\"><input id=\"test_0\" type=\"checkbox\" name=\"test$0\" disabled=\"disabled\" /><label for=\"test_0\">Sun</label></span></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"test_1\" type=\"checkbox\" name=\"test$1\" /><label for=\"test_1\">Mon</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"test_2\" type=\"checkbox\" name=\"test$2\" /><label for=\"test_2\">Tue</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"test_3\" type=\"checkbox\" name=\"test$3\" /><label for=\"test_3\">Wed</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"test_4\" type=\"checkbox\" name=\"test$4\" /><label for=\"test_4\">Thu</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"test_5\" type=\"checkbox\" name=\"test$5\" /><label for=\"test_5\">Fri</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"test_6\" type=\"checkbox\" name=\"test$6\" /><label for=\"test_6\">Sat</label></td>\r\n\t</tr>\r\n</table>";
+#endif
 			string html = t.Run ();
 			string listHtml = HtmlDiff.GetControlFromPageHtml (html);
 
@@ -290,9 +305,15 @@ namespace MonoTests.System.Web.UI.WebControls {
 		public void CheckBoxList_Bug600415 ()
 		{
 			WebTest t = new WebTest ("CheckBoxList_Bug600415.aspx");
+#if NET_4_0
+			string origHtmlFirst = "<table id=\"checkBoxList\">\r\n\t<tr>\r\n\t\t<td><input id=\"checkBoxList_0\" type=\"checkbox\" name=\"checkBoxList$0\" checked=\"checked\" value=\"Item 1\" /><label for=\"checkBoxList_0\">Item 1</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_1\" type=\"checkbox\" name=\"checkBoxList$1\" value=\"Item 2\" /><label for=\"checkBoxList_1\">Item 2</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_2\" type=\"checkbox\" name=\"checkBoxList$2\" checked=\"checked\" value=\"Item 3\" /><label for=\"checkBoxList_2\">Item 3</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_3\" type=\"checkbox\" name=\"checkBoxList$3\" value=\"Item 4\" /><label for=\"checkBoxList_3\">Item 4</label></td>\r\n\t</tr>\r\n</table>";
+			string origHtmlSecond = "<table id=\"checkBoxList\">\r\n\t<tr>\r\n\t\t<td><input id=\"checkBoxList_0\" type=\"checkbox\" name=\"checkBoxList$0\" value=\"Item 1\" /><label for=\"checkBoxList_0\">Item 1</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_1\" type=\"checkbox\" name=\"checkBoxList$1\" value=\"Item 2\" /><label for=\"checkBoxList_1\">Item 2</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_2\" type=\"checkbox\" name=\"checkBoxList$2\" value=\"Item 3\" /><label for=\"checkBoxList_2\">Item 3</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_3\" type=\"checkbox\" name=\"checkBoxList$3\" value=\"Item 4\" /><label for=\"checkBoxList_3\">Item 4</label></td>\r\n\t</tr>\r\n</table>";
+			string origHtmlThird = "<table id=\"checkBoxList\">\r\n\t<tr>\r\n\t\t<td><input id=\"checkBoxList_0\" type=\"checkbox\" name=\"checkBoxList$0\" checked=\"checked\" value=\"Item 1\" /><label for=\"checkBoxList_0\">Item 1</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_1\" type=\"checkbox\" name=\"checkBoxList$1\" checked=\"checked\" value=\"Item 2\" /><label for=\"checkBoxList_1\">Item 2</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_2\" type=\"checkbox\" name=\"checkBoxList$2\" checked=\"checked\" value=\"Item 3\" /><label for=\"checkBoxList_2\">Item 3</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_3\" type=\"checkbox\" name=\"checkBoxList$3\" checked=\"checked\" value=\"Item 4\" /><label for=\"checkBoxList_3\">Item 4</label></td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtmlFirst = "<table id=\"checkBoxList\" border=\"0\">\r\n\t<tr>\r\n\t\t<td><input id=\"checkBoxList_0\" type=\"checkbox\" name=\"checkBoxList$0\" checked=\"checked\" /><label for=\"checkBoxList_0\">Item 1</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_1\" type=\"checkbox\" name=\"checkBoxList$1\" /><label for=\"checkBoxList_1\">Item 2</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_2\" type=\"checkbox\" name=\"checkBoxList$2\" checked=\"checked\" /><label for=\"checkBoxList_2\">Item 3</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_3\" type=\"checkbox\" name=\"checkBoxList$3\" /><label for=\"checkBoxList_3\">Item 4</label></td>\r\n\t</tr>\r\n</table>";
 			string origHtmlSecond = "<table id=\"checkBoxList\" border=\"0\">\r\n\t<tr>\r\n\t\t<td><input id=\"checkBoxList_0\" type=\"checkbox\" name=\"checkBoxList$0\" /><label for=\"checkBoxList_0\">Item 1</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_1\" type=\"checkbox\" name=\"checkBoxList$1\" /><label for=\"checkBoxList_1\">Item 2</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_2\" type=\"checkbox\" name=\"checkBoxList$2\" /><label for=\"checkBoxList_2\">Item 3</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_3\" type=\"checkbox\" name=\"checkBoxList$3\" /><label for=\"checkBoxList_3\">Item 4</label></td>\r\n\t</tr>\r\n</table>";
 			string origHtmlThird = "<table id=\"checkBoxList\" border=\"0\">\r\n\t<tr>\r\n\t\t<td><input id=\"checkBoxList_0\" type=\"checkbox\" name=\"checkBoxList$0\" checked=\"checked\" /><label for=\"checkBoxList_0\">Item 1</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_1\" type=\"checkbox\" name=\"checkBoxList$1\" checked=\"checked\" /><label for=\"checkBoxList_1\">Item 2</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_2\" type=\"checkbox\" name=\"checkBoxList$2\" checked=\"checked\" /><label for=\"checkBoxList_2\">Item 3</label></td>\r\n\t</tr><tr>\r\n\t\t<td><input id=\"checkBoxList_3\" type=\"checkbox\" name=\"checkBoxList$3\" checked=\"checked\" /><label for=\"checkBoxList_3\">Item 4</label></td>\r\n\t</tr>\r\n</table>";
+#endif
 			string html = t.Run ();
 			string listHtml = HtmlDiff.GetControlFromPageHtml (html);
 
@@ -370,6 +391,13 @@ namespace MonoTests.System.Web.UI.WebControls {
 		[Test]
 		public void RenderItem ()
 		{
+#if NET_4_0
+			string origHtml1 = "<input id=\"0\" type=\"checkbox\" name=\"0\" value=\"value1\" /><label for=\"0\">item1</label>";
+			string origHtml2 = "<input id=\"1\" type=\"checkbox\" name=\"1\" value=\"value2\" /><label for=\"1\">item2</label>";
+#else
+			string origHtml1 = "<input id=\"0\" type=\"checkbox\" name=\"0\" /><label for=\"0\">item1</label>";
+			string origHtml2 = "<input id=\"1\" type=\"checkbox\" name=\"1\" /><label for=\"1\">item2</label>";
+#endif
 			CheckBoxListPoker c = new CheckBoxListPoker ();
 			ListItem l1 = new ListItem ("item1", "value1");
 			ListItem l2 = new ListItem ("item2", "value2");
@@ -377,9 +405,9 @@ namespace MonoTests.System.Web.UI.WebControls {
 			c.Items.Add (l1);
 			c.Items.Add (l2);
 			string html = c.RenderItem (ListItemType.Item, 0, null);
-			HtmlDiff.AssertAreEqual ("<input id=\"0\" type=\"checkbox\" name=\"0\" /><label for=\"0\">item1</label>", html, "RenderItem#1");
+			HtmlDiff.AssertAreEqual (origHtml1, html, "RenderItem#1");
 			html = c.RenderItem (ListItemType.Item, 1, null);
-			HtmlDiff.AssertAreEqual ("<input id=\"1\" type=\"checkbox\" name=\"1\" /><label for=\"1\">item2</label>", html, "RenderItem#2");
+			HtmlDiff.AssertAreEqual (origHtml2, html, "RenderItem#2");
 		}
 
 		[Test]
@@ -539,6 +567,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 		[Test]
 		public void RepeatInfoRenderItem ()
 		{
+#if NET_4_0
+			string origHtml = "<input id=\"0\" type=\"checkbox\" name=\"0\" value=\"one\" /><label for=\"0\">one</label>";
+#else
+			string origHtml = "<input id=\"0\" type=\"checkbox\" name=\"0\" /><label for=\"0\">one</label>";
+#endif
 			StringWriter sw = new StringWriter ();
 			HtmlTextWriter tw = new HtmlTextWriter (sw);
 			CheckBoxList c = new CheckBoxList ();
@@ -548,9 +581,9 @@ namespace MonoTests.System.Web.UI.WebControls {
 			c.Items.Add ("one");
 			c.Items.Add ("two");
 
-			ri.RenderItem (ListItemType.Item, 0, r, tw); 
-			Assert.AreEqual ("<input id=\"0\" type=\"checkbox\" name=\"0\" />" +
-					"<label for=\"0\">one</label>", sw.ToString (), "A1");
+			ri.RenderItem (ListItemType.Item, 0, r, tw);
+			string html = sw.ToString ();
+			Assert.AreEqual (origHtml, html, "A1");
 		}
 
 		[Test]
@@ -631,20 +664,22 @@ namespace MonoTests.System.Web.UI.WebControls {
 #endif
 		public void Render ()
 		{
+#if NET_4_0
+			string origHtml1 = "<table>\n\t<tr>\n\t\t<td><input id=\"0\" name=\"0\" type=\"checkbox\" value=\"foo\"/><label for=\"0\">foo</label></td>\n\t</tr>\n</table>";
+			string origHtml2 = "<table>\n\t<tr>\n\t\t<td><input id=\"0\" name=\"0\" type=\"checkbox\" value=\"foo\"/><label for=\"0\">foo</label></td>\n\t</tr>\n</table>";
+#else
+			string origHtml1 = "<table border=\"0\">\n\t<tr>\n\t\t<td><input id=\"0\" name=\"0\" type=\"checkbox\" /><label for=\"0\">foo</label></td>\n\t</tr>\n</table>";
+			string origHtml2 = "<table border=\"0\">\n\t<tr>\n\t\t<td><input id=\"0\" name=\"0\" type=\"checkbox\" /><label for=\"0\">foo</label></td>\n\t</tr>\n</table>";
+#endif
 			CheckBoxList c;
 			c = new CheckBoxList ();
 			c.Items.Add ("foo");
-			Render (c, "<table border=\"0\">\n\t<tr>\n\t\t<td><input id=\"0\" " +
-					"name=\"0\" type=\"checkbox\" />" +
-					"<label for=\"0\">foo</label>" +
-					"</td>\n\t</tr>\n</table>", "A5");
+
+			Render (c, origHtml1, "A5");
 
 			c = new CheckBoxList ();
 			c.Items.Add ("foo");
-			Render (c, "<table border=\"0\">\n\t<tr>\n\t\t<td><input id=\"0\" " +
-					"name=\"0\" type=\"checkbox\" />" +
-					"<label for=\"0\">foo</label>" +
-					"</td>\n\t</tr>\n</table>", "A6");
+			Render (c, origHtml2, "A6");
 		}
 
 		// bug 51648
@@ -657,11 +692,19 @@ namespace MonoTests.System.Web.UI.WebControls {
 			CheckBoxList c = new CheckBoxList ();
 			c.TabIndex = 5;
 			c.Items.Add ("Item1");
+#if NET_4_0
+			string exp = @"<table>
+	<tr>
+		<td><input id=""0"" name=""0"" tabindex=""5"" type=""checkbox"" value=""Item1""/><label for=""0"">Item1</label></td>
+	</tr>
+</table>";
+#else
 			string exp = @"<table border=""0"">
 	<tr>
 		<td><input id=""0"" name=""0"" tabindex=""5"" type=""checkbox"" /><label for=""0"">Item1</label></td>
 	</tr>
 </table>";
+#endif
 			Render (c, exp, "B1");
 		}
 
@@ -675,11 +718,19 @@ namespace MonoTests.System.Web.UI.WebControls {
 			CheckBoxList c = new CheckBoxList ();
 			c.Enabled = false;
 			c.Items.Add ("Item1");
+#if NET_4_0
+			string exp = @"<table class=""aspNetDisabled"">
+	<tr>
+		<td><span class=""aspNetDisabled""><input disabled=""disabled"" id=""0"" name=""0"" type=""checkbox"" value=""Item1""/><label for=""0"">Item1</label></span></td>
+	</tr>
+</table>";
+#else
 			string exp = @"<table border=""0"" disabled=""disabled"">
 	<tr>
 		<td><span disabled=""disabled""><input disabled=""disabled"" id=""0"" name=""0"" type=""checkbox"" /><label for=""0"">Item1</label></span></td>
 	</tr>
 </table>";
+#endif
 			Render (c, exp, "C1");
 		}	
 #if NET_2_0

+ 15 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/CheckBoxTest.cs

@@ -184,6 +184,21 @@ namespace MonoTests.System.Web.UI.WebControls {
 			HtmlDiff.AssertAreEqual ("<input type=\"checkbox\" Atribute=\"Test\" />", html, "Input Attribute fail");
 		}
 
+		[Test]
+		public void InputAttributesTest2 ()
+		{
+			TestCheckBox c = new TestCheckBox ();
+			c.InputAttributes.Add ("value", "value1");
+			c.Text = "Title";
+			c.Checked = true;
+#if NET_4_0
+			string origHtml = "<input id=\"\" type=\"checkbox\" checked=\"checked\" value=\"value1\" /><label for=\"\">Title</label>";
+#else
+			string origHtml = "<input type=\"checkbox\" checked=\"checked\" value=\"value1\" /><label for>Title</label>";
+#endif
+			string html = c.Render ();
+			HtmlDiff.AssertAreEqual (origHtml, html, "#A1");
+		}
 
 		[Test]
 		public void LabelAttributesTest_1 ()

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/DataGridTest.cs


+ 58 - 3
mcs/class/System.Web/Test/System.Web.UI.WebControls/DetailsViewTest.cs

@@ -634,8 +634,12 @@ namespace MonoTests.System.Web.UI.WebControls
 			fr.Controls["__EVENTARGUMENT"].Value = "";
 			t.Request = fr;
 			result = t.Run ();
-			string newHtml = HtmlDiff.GetControlFromPageHtml (result); 
+			string newHtml = HtmlDiff.GetControlFromPageHtml (result);
+#if NET_4_0
+			string origHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\r\n\t</table>\r\n</div><a id=\"LinkButton1\" href=\"javascript:__doPostBack(&#39;LinkButton1&#39;,&#39;&#39;)\">Test</a>";
+#else
 			string origHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\r\n\t</table>\r\n</div><a id=\"LinkButton1\" href=\"javascript:__doPostBack('LinkButton1','')\">Test</a>";
+#endif
 			HtmlDiff.AssertAreEqual(origHtml, newHtml, "EmptyContentTest");
 		}
 		
@@ -678,7 +682,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			t.Request = fr;
 			result = t.Run ();
 			string newHtml = HtmlDiff.GetControlFromPageHtml (result); 
+#if NET_4_0
+			string origHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\r\n\t</table>\r\n</div><a id=\"LinkButton1\" href=\"javascript:__doPostBack(&#39;LinkButton1&#39;,&#39;&#39;)\">Test</a>";
+#else
 			string origHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\r\n\t</table>\r\n</div><a id=\"LinkButton1\" href=\"javascript:__doPostBack('LinkButton1','')\">Test</a>";
+#endif
 			HtmlDiff.AssertAreEqual(origHtml, newHtml, "EmptyFooterTextTest");
 		}
 		
@@ -720,7 +728,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			t.Request = fr;
 			result = t.Run ();
 			string newHtml = HtmlDiff.GetControlFromPageHtml (result); 
+#if NET_4_0
+			string origHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\r\n\t</table>\r\n</div><a id=\"LinkButton1\" href=\"javascript:__doPostBack(&#39;LinkButton1&#39;,&#39;&#39;)\">Test</a>";
+#else
 			string origHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n\r\n\t</table>\r\n</div><a id=\"LinkButton1\" href=\"javascript:__doPostBack('LinkButton1','')\">Test</a>";
+#endif
 			HtmlDiff.AssertAreEqual(origHtml, newHtml, "EmptyHeaderTextTest");
 		}
 		
@@ -759,7 +771,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			//t.Invoker = PageInvoker.CreateOnLoad (pd);
 			result = t.Run ();
 			string newHtml = HtmlDiff.GetControlFromPageHtml (result); 
+#if NET_4_0
+			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<td>Empty Data</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div><a id=\"LinkButton1\" href=\"javascript:__doPostBack(&#39;LinkButton1&#39;,&#39;&#39;)\">Test</a>";
+#else
 			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<td>Empty Data</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div><a id=\"LinkButton1\" href=\"javascript:__doPostBack('LinkButton1','')\">Test</a>";
+#endif
 			HtmlDiff.AssertAreEqual(origHtml, newHtml, "EmptyDataTextTest");
 		}
 
@@ -864,7 +880,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			string html = new WebTest (PageInvoker.CreateOnLoad (
 				new PageDelegate (DetailsView_DeleteItem))).Run ();
 			string newHtml = HtmlDiff.GetControlFromPageHtml (html);
+#if NET_4_0
+			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<td>ID</td><td>1002</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Melanie</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Talmadge</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Page$2&#39;)\">2</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			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<td>ID</td><td>1002</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Melanie</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Talmadge</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('ctl01','Page$2')\">2</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (origHtml, newHtml, "DeleteItemMethod");
 		}
 
@@ -1183,9 +1203,13 @@ namespace MonoTests.System.Web.UI.WebControls
 			PokerDetailsView dv = new PokerDetailsView ();
 			Table tb = dv.DoCreateTable();
 			Assert.AreEqual (null, tb.Parent, "CreateTable1");
-			Assert.AreEqual ("", tb.BackImageUrl, "CreateTable2");
+			Assert.AreEqual (String.Empty, tb.BackImageUrl, "CreateTable2");
 			Assert.AreEqual (0, tb.Rows.Count, "CreateTable3");
+#if NET_4_0
+			Assert.AreEqual (String.Empty, tb.ClientID, "CreateTable3");
+#else
 			Assert.AreEqual (null, tb.ClientID , "CreateTable3");
+#endif
 			dv.ID = "testId"; //private filed _parentID should be set to "testId"			
 			tb = dv.DoCreateTable ();
 			Assert.AreEqual (-1, tb.CellSpacing, "CreateTable4");
@@ -1418,7 +1442,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			//Footer Template property is checked.
 			string renderedPageHtml = new WebTest ("FooterTemplateTest.aspx").Run ();
 			string newHtmlValue = HtmlDiff.GetControlFromPageHtml (renderedPageHtml);
+#if NET_4_0
+			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Mahesh</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\">\n                Footer Template Test<a id=\"DetailsView1_HyperLink1\">Footer</a>\n            </td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$2&#39;)\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Mahesh</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\">\n                Footer Template Test<a id=\"DetailsView1_HyperLink1\">Footer</a>\n            </td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$3')\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";	
+#endif
 
 			HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderFooterTemplate");
 		}
@@ -1430,8 +1458,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			//Header Template property is checked
 			string renderedPageHtml = new WebTest ("DetailsViewTemplates.aspx").Run ();
 			string newHtmlValue = HtmlDiff.GetControlFromPageHtml (renderedPageHtml);
+#if NET_4_0
+			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td colspan=\"2\">\n                Header Template<input type=\"submit\" name=\"DetailsView1$Button1\" value=\"Header button\" id=\"DetailsView1_Button1\" />\n            </td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Mahesh</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Delete$0&#39;)\">Delete</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$2&#39;)\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td colspan=\"2\">\n                Header Template<input type=\"submit\" name=\"DetailsView1$Button1\" value=\"Header button\" id=\"DetailsView1_Button1\" />\n            </td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Mahesh</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack('DetailsView1','Delete$0')\">Delete</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$3')\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
-		
+#endif
 			HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderHeaderTemplate");
 		}
 
@@ -1453,7 +1484,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			string renderedPageHtml = new WebTest ("DetailsViewTemplates_3.aspx").Run ();
 			string newHtmlValue = HtmlDiff.GetControlFromPageHtml (renderedPageHtml);
+#if NET_4_0
+			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView3\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Mahesh</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack(&#39;DetailsView3&#39;,&#39;$0&#39;)\">TestButtonField</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>&nbsp;</td><td><a></a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Image field</td><td></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>&nbsp;</td><td></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Template Field</td><td style=\"background-color:#FFE0C0;\">&nbsp;</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView3&#39;,&#39;Page$2&#39;)\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView3&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView3\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Mahesh</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack('DetailsView3','$0')\">TestButtonField</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>&nbsp;</td><td><a></a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Image field</td><td></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>&nbsp;</td><td></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Template Field</td><td style=\"background-color:#FFE0C0;\">&nbsp;</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('DetailsView3','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('DetailsView3','Page$3')\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 					
 			HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderDataFields");
 		}
@@ -1466,7 +1501,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			t.Invoker = PageInvoker.CreateOnLoad (PagingPostback_Load);
 			string pageHTML = t.Run ();
 			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Mahesh</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Edit$0&#39;)\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Delete$0&#39;)\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;New$0&#39;)\">New</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$2&#39;)\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Mahesh</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack('DetailsView1','Edit$0')\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack('DetailsView1','Delete$0')\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack('DetailsView1','New$0')\">New</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$3')\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (origHtmlValue, renderedHtml, "BeforePagingDataPostback");
 			FormRequest fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
@@ -1476,7 +1515,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			t.Request = fr;
 			pageHTML = t.Run ();
 			renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1002</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Melanie</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Talmadge</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Edit$1&#39;)\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Delete$1&#39;)\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;New$1&#39;)\">New</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$1&#39;)\">1</a></td><td><span>2</span></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else			
 			origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1002</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Melanie</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Talmadge</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack('DetailsView1','Edit$1')\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack('DetailsView1','Delete$1')\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack('DetailsView1','New$1')\">New</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><a href=\"javascript:__doPostBack('DetailsView1','Page$1')\">1</a></td><td><span>2</span></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$3')\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (origHtmlValue, renderedHtml, "AfterPagingDataPostback");
 
 			// Checking for change index event fired.
@@ -1547,7 +1590,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			t.Request = fr;			
 			pageHTML = t.Run ();
 			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td><input name=\"DetailsView1$ctl01\" type=\"text\" value=\"Mahesh\" title=\"FName\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td><input name=\"DetailsView1$ctl02\" type=\"text\" value=\"Chand\" title=\"LName\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack(&#39;DetailsView1$ctl03&#39;,&#39;&#39;)\">Update</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Cancel$0&#39;)\">Cancel</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$2&#39;)\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1001</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td><input name=\"DetailsView1$ctl01\" type=\"text\" value=\"Mahesh\" title=\"FName\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td><input name=\"DetailsView1$ctl02\" type=\"text\" value=\"Chand\" title=\"LName\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack('DetailsView1$ctl03','')\">Update</a>&nbsp;<a href=\"javascript:__doPostBack('DetailsView1','Cancel$0')\">Cancel</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$3')\">3</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (origHtmlValue, renderedHtml, "AfterEditPostback");
 			// Checking for change mode event fired.
 			ArrayList eventlist = t.UserData as ArrayList;
@@ -1618,7 +1665,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			pageHTML = t.Run ();
 			//Console.WriteLine ("XXXXFAIL {0}", pageHTML);
 			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1002</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Melanie</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Talmadge</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Edit$0&#39;)\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Delete$0&#39;)\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;New$0&#39;)\">New</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Page$2&#39;)\">2</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td>1002</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td>Melanie</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td>Talmadge</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack('DetailsView1','Edit$0')\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack('DetailsView1','Delete$0')\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack('DetailsView1','New$0')\">New</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('DetailsView1','Page$2')\">2</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 
 			HtmlDiff.AssertAreEqual (origHtmlValue, renderedHtml, "DeleteDataPostback");
 			Assert.AreEqual (false, renderedHtml.Contains ("1001"), "AfterDeletePostback");
@@ -1690,7 +1741,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			t.Request = fr;			
 			pageHTML = t.Run ();
 			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td><input name=\"DetailsView1$ctl01\" type=\"text\" title=\"ID\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td><input name=\"DetailsView1$ctl02\" type=\"text\" title=\"FName\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td><input name=\"DetailsView1$ctl03\" type=\"text\" title=\"LName\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack(&#39;DetailsView1$ctl04&#39;,&#39;&#39;)\">Insert</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;DetailsView1&#39;,&#39;Cancel$-1&#39;)\">Cancel</a></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string origHtmlValue = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"DetailsView1\" style=\"height:50px;width:125px;border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td>ID</td><td><input name=\"DetailsView1$ctl01\" type=\"text\" title=\"ID\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FName</td><td><input name=\"DetailsView1$ctl02\" type=\"text\" title=\"FName\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>LName</td><td><input name=\"DetailsView1$ctl03\" type=\"text\" title=\"LName\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"2\"><a href=\"javascript:__doPostBack('DetailsView1$ctl04','')\">Insert</a>&nbsp;<a href=\"javascript:__doPostBack('DetailsView1','Cancel$-1')\">Cancel</a></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";    
+#endif
 
 			HtmlDiff.AssertAreEqual (origHtmlValue, renderedHtml, "InsertDataPostback");
 			

+ 40 - 1
mcs/class/System.Web/Test/System.Web.UI.WebControls/FormViewTest.cs

@@ -1568,7 +1568,11 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
 		{
 			string renderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
 			string newHtmlValue = HtmlDiff.GetControlFromPageHtml (renderedPageHtml);
+#if NET_4_0
+			string origHtmlValue = "<table cellspacing=\"2\" cellpadding=\"3\" rules=\"all\" id=\"FormView1\" style=\"background-color:#DEBA84;border-color:#DEBA84;border-width:1px;border-style:None;\">\r\n\t<tr style=\"color:#8C4510;background-color:#FFF7E7;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView1_Label1\">1</span>\n            </td>\r\n\t</tr><tr align=\"center\" style=\"color:#8C4510;\">\r\n\t\t<td colspan=\"2\"><table>\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$2&#39;)\" style=\"color:#8C4510;\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$3&#39;)\" style=\"color:#8C4510;\">3</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$4&#39;)\" style=\"color:#8C4510;\">4</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$5&#39;)\" style=\"color:#8C4510;\">5</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$6&#39;)\" style=\"color:#8C4510;\">6</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtmlValue = "<table cellspacing=\"2\" cellpadding=\"3\" rules=\"all\" border=\"1\" id=\"FormView1\" style=\"background-color:#DEBA84;border-color:#DEBA84;border-width:1px;border-style:None;\">\r\n\t<tr style=\"color:#8C4510;background-color:#FFF7E7;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView1_Label1\">1</span>\n            </td>\r\n\t</tr><tr align=\"center\" style=\"color:#8C4510;\">\r\n\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('FormView1','Page$2')\" style=\"color:#8C4510;\">2</a></td><td><a href=\"javascript:__doPostBack('FormView1','Page$3')\" style=\"color:#8C4510;\">3</a></td><td><a href=\"javascript:__doPostBack('FormView1','Page$4')\" style=\"color:#8C4510;\">4</a></td><td><a href=\"javascript:__doPostBack('FormView1','Page$5')\" style=\"color:#8C4510;\">5</a></td><td><a href=\"javascript:__doPostBack('FormView1','Page$6')\" style=\"color:#8C4510;\">6</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";         
+#endif
 	
 			HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderSimpleTemplate");                  
 		}
@@ -1582,7 +1586,11 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
 		{
 			string renderedPageHtml = new WebTest ("FormViewTest1_2.aspx").Run ();
 			string newHtmlValue = HtmlDiff.GetControlFromPageHtml (renderedPageHtml);
+#if NET_4_0
+			string origHtmlValue = "<table cellspacing=\"0\" cellpadding=\"4\" id=\"FormView2\" style=\"color:#333333;border-collapse:collapse;\">\r\n\t<tr style=\"color:#333333;background-color:#F7F6F3;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView2_Label2\">1</span>\n            </td>\r\n\t</tr><tr style=\"color:White;background-color:#5D7B9D;font-weight:bold;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView2_Label3\">Footer Template Test</span>\n            </td>\r\n\t</tr><tr align=\"center\" style=\"color:White;background-color:#284775;\">\r\n\t\t<td colspan=\"2\">\n                <input type=\"submit\" name=\"FormView2$ctl01$Button1\" value=\"Prev Item\" id=\"FormView2_ctl01_Button1\" />\n                <input type=\"submit\" name=\"FormView2$ctl01$Button2\" value=\"Next Item\" id=\"FormView2_ctl01_Button2\" />\n                <input type=\"submit\" name=\"FormView2$ctl01$Button3\" value=\"First Item\" id=\"FormView2_ctl01_Button3\" />\n                <input type=\"submit\" name=\"FormView2$ctl01$Button4\" value=\"Last Item\" id=\"FormView2_ctl01_Button4\" />\n            </td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtmlValue = "<table cellspacing=\"0\" cellpadding=\"4\" border=\"0\" id=\"FormView2\" style=\"color:#333333;border-collapse:collapse;\">\r\n\t<tr style=\"color:#333333;background-color:#F7F6F3;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView2_Label2\">1</span>\n            </td>\r\n\t</tr><tr style=\"color:White;background-color:#5D7B9D;font-weight:bold;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView2_Label3\">Footer Template Test</span>\n            </td>\r\n\t</tr><tr align=\"center\" style=\"color:White;background-color:#284775;\">\r\n\t\t<td colspan=\"2\">\n                <input type=\"submit\" name=\"FormView2$ctl01$Button1\" value=\"Prev Item\" id=\"FormView2_ctl01_Button1\" />\n                <input type=\"submit\" name=\"FormView2$ctl01$Button2\" value=\"Next Item\" id=\"FormView2_ctl01_Button2\" />\n                <input type=\"submit\" name=\"FormView2$ctl01$Button3\" value=\"First Item\" id=\"FormView2_ctl01_Button3\" />\n                <input type=\"submit\" name=\"FormView2$ctl01$Button4\" value=\"Last Item\" id=\"FormView2_ctl01_Button4\" />\n            </td>\r\n\t</tr>\r\n</table>";    
+#endif
 			HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "FormView_RenderFooterAndPager");
 		}
 
@@ -1595,7 +1603,11 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
 		{
 			string renderedPageHtml = new WebTest ("FormViewTest1_4.aspx").Run ();
 			string newHtmlValue = HtmlDiff.GetControlFromPageHtml (renderedPageHtml);
+#if NET_4_0
+			string origHtmlValue = "<table cellspacing=\"10\" cellpadding=\"3\" align=\"Right\" rules=\"all\" id=\"FormView4\" style=\"background-color:White;border-color:#CCCCCC;border-width:1px;border-style:None;\">\r\n\t<tr align=\"left\" style=\"color:White;background-color:#006699;font-weight:bold;\">\r\n\t\t<td colspan=\"2\">Using Header Text property</td>\r\n\t</tr><tr align=\"center\" style=\"color:#000066;background-color:Maroon;\">\r\n\t\t<td colspan=\"2\">Using Footer Text property</td>\r\n\t</tr><tr align=\"left\" style=\"color:#000066;background-color:LightGrey;\">\r\n\t\t<td colspan=\"2\">\n                <a id=\"FormView4_ctl01_LinkButton1\" href=\"javascript:__doPostBack(&#39;FormView4$ctl01$LinkButton1&#39;,&#39;&#39;)\">Next</a>\n                <a id=\"FormView4_ctl01_LinkButton2\" href=\"javascript:__doPostBack(&#39;FormView4$ctl01$LinkButton2&#39;,&#39;&#39;)\">Prev</a>\n                <span id=\"FormView4_ctl01_Label7\">Page Index: 0</span>\n            </td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtmlValue = "<table cellspacing=\"10\" cellpadding=\"3\" align=\"Right\" rules=\"all\" border=\"1\" id=\"FormView4\" style=\"background-color:White;border-color:#CCCCCC;border-width:1px;border-style:None;\">\r\n\t<tr align=\"left\" style=\"color:White;background-color:#006699;font-weight:bold;\">\r\n\t\t<td colspan=\"2\">Using Header Text property</td>\r\n\t</tr><tr align=\"center\" style=\"color:#000066;background-color:Maroon;\">\r\n\t\t<td colspan=\"2\">Using Footer Text property</td>\r\n\t</tr><tr align=\"left\" style=\"color:#000066;background-color:LightGrey;\">\r\n\t\t<td colspan=\"2\">\n                <a id=\"FormView4_ctl01_LinkButton1\" href=\"javascript:__doPostBack('FormView4$ctl01$LinkButton1','')\">Next</a>\n                <a id=\"FormView4_ctl01_LinkButton2\" href=\"javascript:__doPostBack('FormView4$ctl01$LinkButton2','')\">Prev</a>\n                <span id=\"FormView4_ctl01_Label7\">Page Index: 0</span>\n            </td>\r\n\t</tr>\r\n</table>"; 			
+#endif
 			HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");
 		}
 
@@ -1609,7 +1621,11 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
 		{
 			string RenderedPageHtml = new WebTest ("FormViewTest1_3.aspx").Run ();
 			string newHtmlValue = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+			string origHtmlValue = "<table cellspacing=\"0\" cellpadding=\"2\" id=\"FormView3\" style=\"color:Black;background-color:LightGoldenrodYellow;border-color:Tan;border-width:1px;border-style:solid;border-collapse:collapse;\">\r\n\t<tr align=\"center\" valign=\"top\" style=\"color:#C00000;background-color:Tan;font-weight:bold;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView3_Label5\">Header Template Test</span>\n            </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView3_Label4\">1</span>\n            </td>\r\n\t</tr><tr align=\"right\" style=\"color:#FFC0FF;background-color:Tan;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView3_Label6\">FormView Footer</span>\n            </td>\r\n\t</tr><tr align=\"center\" style=\"color:DarkSlateBlue;background-color:PaleGoldenrod;\">\r\n\t\t<td colspan=\"2\"><table>\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;FormView3&#39;,&#39;Page$2&#39;)\" style=\"color:DarkSlateBlue;\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView3&#39;,&#39;Page$3&#39;)\" style=\"color:DarkSlateBlue;\">3</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView3&#39;,&#39;Page$4&#39;)\" style=\"color:DarkSlateBlue;\">4</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView3&#39;,&#39;Page$5&#39;)\" style=\"color:DarkSlateBlue;\">5</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView3&#39;,&#39;Page$6&#39;)\" style=\"color:DarkSlateBlue;\">6</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtmlValue = "<table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" id=\"FormView3\" style=\"color:Black;background-color:LightGoldenrodYellow;border-color:Tan;border-width:1px;border-style:solid;border-collapse:collapse;\">\r\n\t<tr align=\"center\" valign=\"top\" style=\"color:#C00000;background-color:Tan;font-weight:bold;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView3_Label5\">Header Template Test</span>\n            </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView3_Label4\">1</span>\n            </td>\r\n\t</tr><tr align=\"right\" style=\"color:#FFC0FF;background-color:Tan;\">\r\n\t\t<td colspan=\"2\">\n                <span id=\"FormView3_Label6\">FormView Footer</span>\n            </td>\r\n\t</tr><tr align=\"center\" style=\"color:DarkSlateBlue;background-color:PaleGoldenrod;\">\r\n\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('FormView3','Page$2')\" style=\"color:DarkSlateBlue;\">2</a></td><td><a href=\"javascript:__doPostBack('FormView3','Page$3')\" style=\"color:DarkSlateBlue;\">3</a></td><td><a href=\"javascript:__doPostBack('FormView3','Page$4')\" style=\"color:DarkSlateBlue;\">4</a></td><td><a href=\"javascript:__doPostBack('FormView3','Page$5')\" style=\"color:DarkSlateBlue;\">5</a></td><td><a href=\"javascript:__doPostBack('FormView3','Page$6')\" style=\"color:DarkSlateBlue;\">6</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";        
+#endif
 			HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");
 		}
 		
@@ -1621,7 +1637,11 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
 			WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
 			string pageHTML = t.Run ();
 			string newHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			string origHtml = "<table cellspacing=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    <span id=\"FormView1_ID\">1001</span>&nbsp;\n                    <span id=\"FormView1_LName\">Chand</span>\n                    <span id=\"FormView1_FName\">Mahesh</span>&nbsp;\n                    <a id=\"FormView1_EditButton\" href=\"javascript:__doPostBack(&#39;FormView1$EditButton&#39;,&#39;&#39;)\">Edit</a>\n                    <a id=\"FormView1_NewButton\" href=\"javascript:__doPostBack(&#39;FormView1$NewButton&#39;,&#39;&#39;)\">New</a>\n                    <a id=\"FormView1_DeleteButton\" href=\"javascript:__doPostBack(&#39;FormView1$DeleteButton&#39;,&#39;&#39;)\">Delete</a>\n                </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\"><table>\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$2&#39;)\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtml = "<table cellspacing=\"0\" border=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    <span id=\"FormView1_ID\">1001</span>&nbsp;\n                    <span id=\"FormView1_LName\">Chand</span>\n                    <span id=\"FormView1_FName\">Mahesh</span>&nbsp;\n                    <a id=\"FormView1_EditButton\" href=\"javascript:__doPostBack('FormView1$EditButton','')\">Edit</a>\n                    <a id=\"FormView1_NewButton\" href=\"javascript:__doPostBack('FormView1$NewButton','')\">New</a>\n                    <a id=\"FormView1_DeleteButton\" href=\"javascript:__doPostBack('FormView1$DeleteButton','')\">Delete</a>\n                </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('FormView1','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('FormView1','Page$3')\">3</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#endif
 			HtmlDiff.AssertAreEqual (origHtml, newHtml, "BeforeEditPostback");
 
 			//Edit button postback (change to edit mode - buttons "Update" and "Cancel" should appear.
@@ -1634,7 +1654,11 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
 			t.Request = fr;
 			pageHTML = t.Run ();
 			newHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			origHtml = "<table cellspacing=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    Enter First Name:<input name=\"FormView1$FNameEdit\" type=\"text\" value=\"Mahesh\" id=\"FormView1_FNameEdit\" /><br />\n                    Enter Last Name:<input name=\"FormView1$LNameEdit\" type=\"text\" value=\"Chand\" id=\"FormView1_LNameEdit\" /><br />\n                    <a id=\"FormView1_UpdateButton\" href=\"javascript:__doPostBack(&#39;FormView1$UpdateButton&#39;,&#39;&#39;)\">Update</a>\n                    <a id=\"FormView1_CancelUpdateButton\" href=\"javascript:__doPostBack(&#39;FormView1$CancelUpdateButton&#39;,&#39;&#39;)\">Cancel</a>\n                </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\"><table>\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$2&#39;)\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#else
 			origHtml = "<table cellspacing=\"0\" border=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    Enter First Name:<input name=\"FormView1$FNameEdit\" type=\"text\" value=\"Mahesh\" id=\"FormView1_FNameEdit\" /><br />\n                    Enter Last Name:<input name=\"FormView1$LNameEdit\" type=\"text\" value=\"Chand\" id=\"FormView1_LNameEdit\" /><br />\n                    <a id=\"FormView1_UpdateButton\" href=\"javascript:__doPostBack('FormView1$UpdateButton','')\">Update</a>\n                    <a id=\"FormView1_CancelUpdateButton\" href=\"javascript:__doPostBack('FormView1$CancelUpdateButton','')\">Cancel</a>\n                </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('FormView1','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('FormView1','Page$3')\">3</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#endif
 			HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterEditPostback");
 
 			//Update record postback                
@@ -1651,7 +1675,11 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
 			t.Request = fr;
 			pageHTML = t.Run ();
 			newHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			origHtml = "<table cellspacing=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    <span id=\"FormView1_ID\">1001</span>&nbsp;\n                    <span id=\"FormView1_LName\">Test</span>\n                    <span id=\"FormView1_FName\">Merav</span>&nbsp;\n                    <a id=\"FormView1_EditButton\" href=\"javascript:__doPostBack(&#39;FormView1$EditButton&#39;,&#39;&#39;)\">Edit</a>\n                    <a id=\"FormView1_NewButton\" href=\"javascript:__doPostBack(&#39;FormView1$NewButton&#39;,&#39;&#39;)\">New</a>\n                    <a id=\"FormView1_DeleteButton\" href=\"javascript:__doPostBack(&#39;FormView1$DeleteButton&#39;,&#39;&#39;)\">Delete</a>\n                </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\"><table>\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$2&#39;)\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#else
 			origHtml = "<table cellspacing=\"0\" border=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    <span id=\"FormView1_ID\">1001</span>&nbsp;\n                    <span id=\"FormView1_LName\">Test</span>\n                    <span id=\"FormView1_FName\">Merav</span>&nbsp;\n                    <a id=\"FormView1_EditButton\" href=\"javascript:__doPostBack('FormView1$EditButton','')\">Edit</a>\n                    <a id=\"FormView1_NewButton\" href=\"javascript:__doPostBack('FormView1$NewButton','')\">New</a>\n                    <a id=\"FormView1_DeleteButton\" href=\"javascript:__doPostBack('FormView1$DeleteButton','')\">Delete</a>\n                </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('FormView1','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('FormView1','Page$3')\">3</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#endif
 			HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterUpdatePostback"); 
   
 			//Postback to return to Edit mode
@@ -1679,15 +1707,22 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
 			t.Request = fr;
 			pageHTML = t.Run ();
 			newHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			origHtml = "<table cellspacing=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    <span id=\"FormView1_ID\">1001</span>&nbsp;\n                    <span id=\"FormView1_LName\">Test</span>\n                    <span id=\"FormView1_FName\">Merav</span>&nbsp;\n                    <a id=\"FormView1_EditButton\" href=\"javascript:__doPostBack(&#39;FormView1$EditButton&#39;,&#39;&#39;)\">Edit</a>\n                    <a id=\"FormView1_NewButton\" href=\"javascript:__doPostBack(&#39;FormView1$NewButton&#39;,&#39;&#39;)\">New</a>\n                    <a id=\"FormView1_DeleteButton\" href=\"javascript:__doPostBack(&#39;FormView1$DeleteButton&#39;,&#39;&#39;)\">Delete</a>\n                </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\"><table>\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$2&#39;)\">2</a></td><td><a href=\"javascript:__doPostBack(&#39;FormView1&#39;,&#39;Page$3&#39;)\">3</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#else
 			origHtml = "<table cellspacing=\"0\" border=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    <span id=\"FormView1_ID\">1001</span>&nbsp;\n                    <span id=\"FormView1_LName\">Test</span>\n                    <span id=\"FormView1_FName\">Merav</span>&nbsp;\n                    <a id=\"FormView1_EditButton\" href=\"javascript:__doPostBack('FormView1$EditButton','')\">Edit</a>\n                    <a id=\"FormView1_NewButton\" href=\"javascript:__doPostBack('FormView1$NewButton','')\">New</a>\n                    <a id=\"FormView1_DeleteButton\" href=\"javascript:__doPostBack('FormView1$DeleteButton','')\">Delete</a>\n                </td>\r\n\t</tr><tr>\r\n\t\t<td colspan=\"2\"><table border=\"0\">\r\n\t\t\t<tr>\r\n\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('FormView1','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('FormView1','Page$3')\">3</a></td>\r\n\t\t\t</tr>\r\n\t\t</table></td>\r\n\t</tr>\r\n</table>";
+#endif
 			HtmlDiff.AssertAreEqual (origHtml, newHtml, "CancelEditedRecordPostback");   
 		}
 
 		[Test (Description="Bug #578863")]
 		public void FormView_PagerSettings_Visibility ()
 		{
+#if NET_4_0
+			string origHtml = "<table cellspacing=\"2\" cellpadding=\"3\" rules=\"all\" id=\"FormView1\" style=\"background-color:#DEBA84;border-color:#DEBA84;border-width:1px;border-style:None;\">\r\n\t<tr style=\"color:#8C4510;background-color:#FFF7E7;\">\r\n\t\t<td colspan=\"2\">\n          <span id=\"FormView1_Label1\">1</span>\n\t</td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtml = "<table cellspacing=\"2\" cellpadding=\"3\" rules=\"all\" border=\"1\" id=\"FormView1\" style=\"background-color:#DEBA84;border-color:#DEBA84;border-width:1px;border-style:None;\">\r\n\t<tr style=\"color:#8C4510;background-color:#FFF7E7;\">\r\n\t\t<td colspan=\"2\">\n          <span id=\"FormView1_Label1\">1</span>\n\t</td>\r\n\t</tr>\r\n</table>";
-			
+#endif
 			WebTest t = new WebTest ("FormViewPagerVisibility.aspx");
 			string pageHtml = t.Run ();
 			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
@@ -2123,7 +2158,11 @@ CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
 			t.Request = fr;
 			pageHTML = t.Run ();
 			string newHtml = HtmlDiff.GetControlFromPageHtml (pageHTML);
+#if NET_4_0
+			string origHtml = "<table cellspacing=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    Insert ID:\n                    <input name=\"FormView1$IDInsert\" type=\"text\" id=\"FormView1_IDInsert\" /><br />\n                    Insert First Name:\n                    <input name=\"FormView1$FNameInsert\" type=\"text\" id=\"FormView1_FNameInsert\" />\n                    <br />\n                    Insert Last Name:&nbsp;\n                    <input name=\"FormView1$LNameInsert\" type=\"text\" id=\"FormView1_LNameInsert\" />\n                    <a id=\"FormView1_InsertButton\" href=\"javascript:__doPostBack(&#39;FormView1$InsertButton&#39;,&#39;&#39;)\">Insert</a>\n                    <a id=\"FormView1_CancelInsertButton\" href=\"javascript:__doPostBack(&#39;FormView1$CancelInsertButton&#39;,&#39;&#39;)\">Cancel</a>\n                </td>\r\n\t</tr>\r\n</table>";
+#else
 			string origHtml = "<table cellspacing=\"0\" border=\"0\" id=\"FormView1\" style=\"border-collapse:collapse;\">\r\n\t<tr>\r\n\t\t<td colspan=\"2\">\n                    Insert ID:\n                    <input name=\"FormView1$IDInsert\" type=\"text\" id=\"FormView1_IDInsert\" /><br />\n                    Insert First Name:\n                    <input name=\"FormView1$FNameInsert\" type=\"text\" id=\"FormView1_FNameInsert\" />\n                    <br />\n                    Insert Last Name:&nbsp;\n                    <input name=\"FormView1$LNameInsert\" type=\"text\" id=\"FormView1_LNameInsert\" />\n                    <a id=\"FormView1_InsertButton\" href=\"javascript:__doPostBack('FormView1$InsertButton','')\">Insert</a>\n                    <a id=\"FormView1_CancelInsertButton\" href=\"javascript:__doPostBack('FormView1$CancelInsertButton','')\">Cancel</a>\n                </td>\r\n\t</tr>\r\n</table>";
+#endif
 			HtmlDiff.AssertAreEqual (origHtml, newHtml, "InsertPostback");
 
 			//Insert new record

+ 68 - 1
mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs

@@ -592,7 +592,39 @@ namespace MonoTests.System.Web.UI.WebControls
 			g.UseAccessibleHeader = false;
 			Assert.AreEqual (false, g.UseAccessibleHeader, "UseAccessibleHeader");
 		}
+#if NET_4_0
+		[Test]
+		public void SortedAscendingCellStyle ()
+		{
+			var g = new PokerGridView ();
+
+			Assert.IsNotNull (g.SortedAscendingCellStyle, "#A1-1");
+		}
+
+		[Test]
+		public void SortedAscendingHeaderStyle ()
+		{
+			var g = new PokerGridView ();
 
+			Assert.IsNotNull (g.SortedAscendingHeaderStyle, "#A1-1");
+		}
+
+		[Test]
+		public void SortedDescendingCellStyle ()
+		{
+			var g = new PokerGridView ();
+
+			Assert.IsNotNull (g.SortedDescendingCellStyle, "#A1-1");
+		}
+
+		[Test]
+		public void SortedDescendingHeaderStyle ()
+		{
+			var g = new PokerGridView ();
+
+			Assert.IsNotNull (g.SortedDescendingHeaderStyle, "#A1-1");
+		}
+#endif
 		[Test]
 		public void GridView_DefaultProtectedProperties ()
 		{
@@ -1565,7 +1597,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderAllowPaging)).Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+			string OriginControlHtml = "<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\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Page$2&#39;)\">2</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string OriginControlHtml = "<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\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('ctl01','Page$2')\">2</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
 		}
 
@@ -1594,7 +1630,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderAllowPaging2)).Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+			string OriginControlHtml = "<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\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>France</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Italy</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><table>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Page$1&#39;)\">1</a></td><td><span>2</span></td><td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Page$3&#39;)\">3</a></td><td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Page$4&#39;)\">4</a></td><td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Page$5&#39;)\">...</a></td><td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Page$Last&#39;)\">&gt;&gt;</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string OriginControlHtml = "<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\">Item</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>France</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Italy</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Page$1')\">1</a></td><td><span>2</span></td><td><a href=\"javascript:__doPostBack('ctl01','Page$3')\">3</a></td><td><a href=\"javascript:__doPostBack('ctl01','Page$4')\">4</a></td><td><a href=\"javascript:__doPostBack('ctl01','Page$5')\">...</a></td><td><a href=\"javascript:__doPostBack('ctl01','Page$Last')\">&gt;&gt;</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
 		}
 
@@ -1633,7 +1673,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderProperty)).Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+				string OriginControlHtml = "<div id=\"__gvctl01__div\">\r\n\t<table cellspacing=\"1\" cellpadding=\"0\" align=\"Justify\" rules=\"rows\" border=\"1\" style=\"background-image:url(http://test);\">\r\n\t\t<caption align=\"Left\">\r\n\t\t\ttest\r\n\t\t</caption><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Edit$0&#39;)\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Delete$0&#39;)\">Delete</a></td><td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Edit$1&#39;)\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Delete$1&#39;)\">Delete</a></td><td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Edit$2&#39;)\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Delete$2&#39;)\">Delete</a></td><td>France</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Edit$3&#39;)\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Delete$3&#39;)\">Delete</a></td><td>Italy</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>&nbsp;</td><td>&nbsp;</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string OriginControlHtml = "<div id=\"__gvctl01__div\">\r\n\t<table cellspacing=\"1\" cellpadding=\"0\" align=\"Justify\" rules=\"rows\" border=\"1\" style=\"background-image:url(http://test);\">\r\n\t\t<caption align=\"Left\">\r\n\t\t\ttest\r\n\t\t</caption><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$0')\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','Delete$0')\">Delete</a></td><td>Norway</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$1')\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','Delete$1')\">Delete</a></td><td>Sweden</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$2')\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','Delete$2')\">Delete</a></td><td>France</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$3')\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','Delete$3')\">Delete</a></td><td>Italy</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>&nbsp;</td><td>&nbsp;</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault");
 		}
 
@@ -1695,7 +1739,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCheckBoxField)).Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+			string OriginControlHtml = "<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\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span class=\"aspNetDisabled\"><input id=\"ctl01_ctl00_0\" type=\"checkbox\" name=\"ctl01$ctl02$ctl00\" checked=\"checked\" disabled=\"disabled\" /></span></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span class=\"aspNetDisabled\"><input id=\"ctl01_ctl00_1\" type=\"checkbox\" name=\"ctl01$ctl03$ctl00\" disabled=\"disabled\" /></span></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string OriginControlHtml = "<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\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span disabled=\"disabled\"><input id=\"ctl01_ctl02_ctl00\" type=\"checkbox\" name=\"ctl01$ctl02$ctl00\" checked=\"checked\" disabled=\"disabled\" /></span></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span disabled=\"disabled\"><input id=\"ctl01_ctl03_ctl00\" type=\"checkbox\" name=\"ctl01$ctl03$ctl00\" disabled=\"disabled\" /></span></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCheckBoxField");
 		}
 
@@ -1704,7 +1752,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCheckBoxField2)).Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+			string OriginControlHtml = "<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\">bool</th><th scope=\"col\">str</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span class=\"aspNetDisabled\" title=\"bool\"><input id=\"ctl01_ctl00_0\" type=\"checkbox\" name=\"ctl01$ctl02$ctl00\" checked=\"checked\" disabled=\"disabled\" /></span></td><td>1</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span class=\"aspNetDisabled\" title=\"bool\"><input id=\"ctl01_ctl00_1\" type=\"checkbox\" name=\"ctl01$ctl03$ctl00\" disabled=\"disabled\" /></span></td><td>2</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>&nbsp;</td><td>&nbsp;</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string OriginControlHtml = "<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\">bool</th><th scope=\"col\">str</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span disabled=\"disabled\" title=\"bool\"><input id=\"ctl01_ctl02_ctl00\" type=\"checkbox\" name=\"ctl01$ctl02$ctl00\" checked=\"checked\" disabled=\"disabled\" /></span></td><td>1</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><span disabled=\"disabled\" title=\"bool\"><input id=\"ctl01_ctl03_ctl00\" type=\"checkbox\" name=\"ctl01$ctl03$ctl00\" disabled=\"disabled\" /></span></td><td>2</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>&nbsp;</td><td>&nbsp;</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCheckBoxField2");
 		}
 		
@@ -1713,7 +1765,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingImageField)).Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+			string OriginControlHtml = "<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\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><img src=\"1\" alt=\"1\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><img src=\"2\" alt=\"2\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string OriginControlHtml = "<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\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><img src=\"1\" alt=\"1\" style=\"border-width:0px;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><img src=\"2\" alt=\"2\" style=\"border-width:0px;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingImageField");
 		}
 
@@ -1722,7 +1778,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCommandField)).Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+			string OriginControlHtml = "<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\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Edit$0&#39;)\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Delete$0&#39;)\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;New$0&#39;)\">New</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Select$0&#39;)\">Select</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Edit$1&#39;)\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Delete$1&#39;)\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;New$1&#39;)\">New</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;Select$1&#39;)\">Select</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string OriginControlHtml = "<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\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$0')\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','Delete$0')\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','New$0')\">New</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','Select$0')\">Select</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><a href=\"javascript:__doPostBack('ctl01','Edit$1')\">Edit</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','Delete$1')\">Delete</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','New$1')\">New</a>&nbsp;<a href=\"javascript:__doPostBack('ctl01','Select$1')\">Select</a></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCommandField");
 		}
 
@@ -1740,7 +1800,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingButtonField)).Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+			string OriginControlHtml = "<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\">HeaderText</th><th scope=\"col\">HeaderText</th><th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input type=\"button\" value=\"1\" onclick=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;$0&#39;)\" /></td><td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;cmd2$0&#39;)\">1</a></td><td><input type=\"image\" src=\"\" alt=\"1\" onclick=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;cmd3$0&#39;);return false;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input type=\"button\" value=\"2\" onclick=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;$1&#39;)\" /></td><td><a href=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;cmd2$1&#39;)\">2</a></td><td><input type=\"image\" src=\"\" alt=\"2\" onclick=\"javascript:__doPostBack(&#39;ctl01&#39;,&#39;cmd3$1&#39;);return false;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td><td>FooterText</td><td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string OriginControlHtml = "<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\">HeaderText</th><th scope=\"col\">HeaderText</th><th scope=\"col\">HeaderText</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input type=\"button\" value=\"1\" onclick=\"javascript:__doPostBack('ctl01','$0')\" /></td><td><a href=\"javascript:__doPostBack('ctl01','cmd2$0')\">1</a></td><td><input type=\"image\" src=\"\" alt=\"1\" onclick=\"javascript:__doPostBack('ctl01','cmd3$0')\" style=\"border-width:0px;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input type=\"button\" value=\"2\" onclick=\"javascript:__doPostBack('ctl01','$1')\" /></td><td><a href=\"javascript:__doPostBack('ctl01','cmd2$1')\">2</a></td><td><input type=\"image\" src=\"\" alt=\"2\" onclick=\"javascript:__doPostBack('ctl01','cmd3$1')\" style=\"border-width:0px;\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>FooterText</td><td>FooterText</td><td>FooterText</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingButtonField");
 		}
 
@@ -1757,10 +1821,13 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Test]
 		public void GridView_RenderingTemplateField ()
 		{
-			
 			string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingTemplateField)).Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+#if NET_4_0
+			string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"grid\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\"><input name=\"grid$ctl01$TextBox1\" type=\"text\" id=\"grid_TextBox1\" /></th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl02$TextBox1\" type=\"text\" value=\"1\" id=\"grid_TextBox1_0\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl03$TextBox1\" type=\"text\" value=\"2\" id=\"grid_TextBox1_1\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl04$TextBox1\" type=\"text\" id=\"grid_TextBox1\" /></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
 			string OriginControlHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"grid\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\"><input name=\"grid$ctl01$TextBox1\" type=\"text\" id=\"grid_ctl01_TextBox1\" /></th>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl02$TextBox1\" type=\"text\" value=\"1\" id=\"grid_ctl02_TextBox1\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl03$TextBox1\" type=\"text\" value=\"2\" id=\"grid_ctl03_TextBox1\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td><input name=\"grid$ctl04$TextBox1\" type=\"text\" id=\"grid_ctl04_TextBox1\" /></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingTemplateField");
 		}
 		

+ 37 - 1
mcs/class/System.Web/Test/System.Web.UI.WebControls/ImageMapTest.cs

@@ -134,8 +134,13 @@ namespace MonoTests.System.Web.UI.WebControls
 		public void ImageMap_Defaults_Render ()
 		{
 			PokerImageMap imageMap = new PokerImageMap ();
+#if NET_4_0
+			string originalHtml = "<img src=\"\" />";
+#else
 			string originalHtml = "<img src=\"\" style=\"border-width:0px;\" />";
-			HtmlDiff.AssertAreEqual (imageMap.Render (), originalHtml, "RenderDefault");
+#endif
+			string renderedHtml = imageMap.Render ();
+			HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "RenderDefault");
 		}
 
 		[Test]
@@ -150,7 +155,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			CircleHotSpot circle = new CircleHotSpot ();
 			circle.NavigateUrl = "NavigateURL";
 			imageMap.HotSpots.Add (circle);
+#if NET_4_0
+			string originalHtml = "<img src=\"\" usemap=\"#ImageMap\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"circle\" coords=\"0,0,0\" href=\"NavigateURL\" target=\"Target\" title=\"\" alt=\"\" />\r\n</map>";
+#else
 			string originalHtml = "<img src=\"\" usemap=\"#ImageMap\" style=\"border-width:0px;\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"circle\" coords=\"0,0,0\" href=\"NavigateURL\" target=\"Target\" title=\"\" alt=\"\" />\r\n</map>";
+#endif
 			string renderedHtml = imageMap.Render ();
 			HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "RenderNavigateTextAssigned");
 		}
@@ -172,7 +181,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			circle.X = 30;
 			circle.Y = 40;
 			imageMap.HotSpots.Add (circle);
+#if NET_4_0
+			string originalHtml = "<img src=\"\" usemap=\"#ImageMap\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"circle\" coords=\"30,40,10\" href=\"NavigateURL\" title=\"Circle\" alt=\"Circle\" accesskey=\"A\" tabindex=\"1\" />\r\n</map>";
+#else
 			string originalHtml = "<img src=\"\" usemap=\"#ImageMap\" style=\"border-width:0px;\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"circle\" coords=\"30,40,10\" href=\"NavigateURL\" title=\"Circle\" alt=\"Circle\" accesskey=\"A\" tabindex=\"1\" />\r\n</map>";
+#endif
 			string renderedHtml = imageMap.Render ();
 			HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "RenderNavigateCircleTextAssigned");
 		}
@@ -204,7 +217,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			poly.TabIndex = 2;
 			poly.Coordinates = "10,20,30,40,50,60,100,200";
 			imageMap.HotSpots.Add (poly);
+#if NET_4_0
+			string originalHtml = "<img src=\"\" usemap=\"#ImageMap\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"rect\" coords=\"30,20,40,10\" href=\"NavigateUrlRect\" title=\"Rectangle\" alt=\"Rectangle\" accesskey=\"R\" tabindex=\"1\" /><area shape=\"poly\" coords=\"10,20,30,40,50,60,100,200\" href=\"NavigateUrlPoly\" title=\"Polygon\" alt=\"Polygon\" accesskey=\"P\" tabindex=\"2\" />\r\n</map>";
+#else
 			string originalHtml = "<img src=\"\" usemap=\"#ImageMap\" style=\"border-width:0px;\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"rect\" coords=\"30,20,40,10\" href=\"NavigateUrlRect\" title=\"Rectangle\" alt=\"Rectangle\" accesskey=\"R\" tabindex=\"1\" /><area shape=\"poly\" coords=\"10,20,30,40,50,60,100,200\" href=\"NavigateUrlPoly\" title=\"Polygon\" alt=\"Polygon\" accesskey=\"P\" tabindex=\"2\" />\r\n</map>";
+#endif
 			string renderedHtml = imageMap.Render ();
 			HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "RenderNavigateShapesTextAssigned");
 		}
@@ -219,7 +236,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			imageMap.HotSpotMode = HotSpotMode.Inactive;
 			imageMap.Target = "Target";
 			imageMap.HotSpots.Add (new CircleHotSpot ());
+#if NET_4_0
+			string originalHtml = "<img src=\"\" usemap=\"#ImageMap\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"circle\" coords=\"0,0,0\" nohref=\"true\" title=\"\" alt=\"\" />\r\n</map>";
+#else
 			string originalHtml = "<img src=\"\" usemap=\"#ImageMap\" style=\"border-width:0px;\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"circle\" coords=\"0,0,0\" nohref=\"true\" title=\"\" alt=\"\" />\r\n</map>";
+#endif
 			string renderedHtml = imageMap.Render ();
 			HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "RenderInaciveTextAssigned");
 		}
@@ -236,8 +257,15 @@ namespace MonoTests.System.Web.UI.WebControls
 			CircleHotSpot circle = new CircleHotSpot ();
 			circle.NavigateUrl = "NavigateURL";
 			imageMap.HotSpots.Add (circle);
+#if NET_4_0
+			string originalHtml = "<img class=\"aspNetDisabled\" src=\"\" usemap=\"#ImageMap\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"circle\" coords=\"0,0,0\" target=\"Target\" title=\"\" alt=\"\" />\r\n</map>";
+#else
 			string originalHtml = "<img disabled=\"disabled\" src=\"\" usemap=\"#ImageMap\" style=\"border-width:0px;\" /><map name=\"ImageMap\" id=\"ImageMap\">\r\n\t<area shape=\"circle\" coords=\"0,0,0\" href=\"NavigateURL\" target=\"Target\" title=\"\" alt=\"\" />\r\n</map>";
+#endif
 			string renderedHtml = imageMap.Render ();
+			Console.WriteLine (renderedHtml);
+			Console.WriteLine ("-----------");
+			Console.WriteLine (originalHtml);
 			HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "RenderDisabledTextAssigne");
 		}
 
@@ -446,7 +474,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			WebTest t = new WebTest (PageInvoker.CreateOnLoad (myPageLoad));
 			#region orig
+#if NET_4_0
+			string strTarget = "<img id=\"imgmap\" src=\"\" usemap=\"#ImageMapimgmap\" /><map name=\"ImageMapimgmap\" id=\"ImageMapimgmap\">\r\n\t<area shape=\"rect\" coords=\"0,0,0,0\" href=\"javascript:__doPostBack(&#39;imgmap&#39;,&#39;0&#39;)\" title=\"\" alt=\"\" /><area shape=\"poly\" coords=\"\" href=\"javascript:__doPostBack(&#39;imgmap&#39;,&#39;1&#39;)\" title=\"\" alt=\"\" /><area shape=\"circle\" coords=\"0,0,0\" href=\"javascript:__doPostBack(&#39;imgmap&#39;,&#39;2&#39;)\" title=\"\" alt=\"\" />\r\n</map>";
+#else
 			string strTarget = "<img id=\"imgmap\" src=\"\" usemap=\"#ImageMapimgmap\" style=\"border-width:0px;\" /><map name=\"ImageMapimgmap\" id=\"ImageMapimgmap\">\r\n\t<area shape=\"rect\" coords=\"0,0,0,0\" href=\"javascript:__doPostBack('imgmap','0')\" title=\"\" alt=\"\" /><area shape=\"poly\" coords=\"\" href=\"javascript:__doPostBack('imgmap','1')\" title=\"\" alt=\"\" /><area shape=\"circle\" coords=\"0,0,0\" href=\"javascript:__doPostBack('imgmap','2')\" title=\"\" alt=\"\" />\r\n</map>";
+#endif
 			#endregion
 			string RenderedPageHtml = t.Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
@@ -466,7 +498,11 @@ namespace MonoTests.System.Web.UI.WebControls
 			fr.Controls["__EVENTARGUMENT"].Value = "0";
 			t.Request = fr;
 			#region orig
+#if NET_4_0
+			string strTarget = "<img id=\"imgmap\" src=\"\" usemap=\"#ImageMapimgmap\" /><map name=\"ImageMapimgmap\" id=\"ImageMapimgmap\">\r\n\t<area shape=\"rect\" coords=\"0,0,0,0\" href=\"javascript:__doPostBack(&#39;imgmap&#39;,&#39;0&#39;)\" title=\"\" alt=\"\" /><area shape=\"poly\" coords=\"\" href=\"javascript:__doPostBack(&#39;imgmap&#39;,&#39;1&#39;)\" title=\"\" alt=\"\" /><area shape=\"circle\" coords=\"0,0,0\" href=\"javascript:__doPostBack(&#39;imgmap&#39;,&#39;2&#39;)\" title=\"\" alt=\"\" />\r\n</map>";
+#else
 			string strTarget = "<img id=\"imgmap\" src=\"\" usemap=\"#ImageMapimgmap\" style=\"border-width:0px;\" /><map name=\"ImageMapimgmap\" id=\"ImageMapimgmap\">\r\n\t<area shape=\"rect\" coords=\"0,0,0,0\" href=\"javascript:__doPostBack('imgmap','0')\" title=\"\" alt=\"\" /><area shape=\"poly\" coords=\"\" href=\"javascript:__doPostBack('imgmap','1')\" title=\"\" alt=\"\" /><area shape=\"circle\" coords=\"0,0,0\" href=\"javascript:__doPostBack('imgmap','2')\" title=\"\" alt=\"\" />\r\n</map>";
+#endif
 			#endregion
 			string RenderedPageHtml = t.Run ();
 			string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 13 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/MenuTest.cs


+ 1 - 1
mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeatInfoTest.auto.2.0.cs

@@ -1,4 +1,4 @@
-#if NET_2_0
+#if NET_2_0 && !NET_4_0
 
 // THIS IS AUTOGENERATED DO NOT EDIT
 //

+ 14347 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeatInfoTest.auto.4.0.cs

@@ -0,0 +1,14347 @@
+#if NET_4_0
+
+// THIS IS AUTOGENERATED DO NOT EDIT
+//
+// Authors:
+//    Ben Maurer ([email protected])
+//
+// Copyright (C) 2005 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.
+//
+
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Drawing;
+using System.IO;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+using NUnit.Framework;
+namespace MonoTests.System.Web.UI.WebControls {
+[TestFixture]
+public class RepeatInfo_Autogen {
+	public class RepeatInfoUser : IRepeatInfoUser {
+
+		private bool footer;
+		private bool header;
+		private bool separators;
+		private int count;
+		private int counter;
+
+
+		public RepeatInfoUser (bool header, bool footer, bool separators, int count)
+		{
+			this.footer = footer;
+			this.header = header;
+			this.separators = separators;
+			this.count = count;
+		}
+
+		static HtmlTextWriter GetWriter ()
+		{
+			StringWriter sw = new StringWriter ();
+			sw.NewLine = "\n";
+			return new HtmlTextWriter (sw);
+		}
+
+		public static string DoTest (int cols, int cnt, RepeatDirection d, RepeatLayout l, bool OuterTableImplied, bool hdr, bool ftr, bool sep)
+		{
+			HtmlTextWriter htw = GetWriter ();
+			RepeatInfo ri = new RepeatInfo ();
+			ri.RepeatColumns = cols;
+			ri.RepeatDirection = d;
+			ri.RepeatLayout = l;
+			ri.OuterTableImplied = OuterTableImplied;
+			Style s = new Style ();
+			if (cols != 3)
+				s.CssClass = "mainstyle";
+
+			ri.RenderRepeater (htw, new RepeatInfoUser (hdr, ftr, sep, cnt), s, new DataList ());
+			return htw.InnerWriter.ToString ();
+		}
+
+
+		public bool HasFooter {
+			get { return footer; }
+		}
+
+		public bool HasHeader {
+			get { return header; }
+		}
+		
+		public bool HasSeparators {
+			get { return separators; }
+		}
+
+		public int RepeatedItemCount {
+			get { return count; }
+		}
+
+		public Style GetItemStyle (ListItemType itemType, int repeatIndex)
+		{
+			Style s = new Style ();
+			s.CssClass = String.Format ("{0}{1}", itemType, repeatIndex);
+			return s;
+		}
+
+		public void RenderItem (ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo, HtmlTextWriter writer)
+		{
+			writer.Write ("({0},{1},{2})", counter++, itemType, repeatIndex);
+		}
+	}
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td colspan=""0"" class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#0");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(2,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#1");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(4,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#2");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""10"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td></td>
+	</tr><tr>
+		<td colspan=""10"" class=""Footer-1"">(10,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#3");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#4");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(10,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#5");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(8,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#6");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(14,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#7");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td class=""Separator6"">(14,Separator,6)</td><td class=""Item7"">(15,Item,7)</td><td class=""Separator7"">(16,Separator,7)</td><td class=""Item8"">(17,Item,8)</td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(18,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#8");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td></td><td></td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(14,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#9");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#10");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Footer,-1)";
+		Assert.AreEqual (exp, v, "#11");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Footer,-1)";
+		Assert.AreEqual (exp, v, "#12");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)(10,Footer,-1)";
+		Assert.AreEqual (exp, v, "#13");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#14");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)(10,Footer,-1)";
+		Assert.AreEqual (exp, v, "#15");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,2)(4,Separator,2)(5,Item,1)(6,Separator,1)(7,Item,3)(8,Footer,-1)";
+		Assert.AreEqual (exp, v, "#16");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,4)(4,Separator,4)(5,Item,1)(6,Separator,1)(7,Item,5)(8,Separator,5)(9,Item,2)(10,Separator,2)(11,Item,6)(12,Item,3)(13,Separator,3)(14,Footer,-1)";
+		Assert.AreEqual (exp, v, "#17");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,6)(6,Separator,6)(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,7)(12,Separator,7)(13,Item,2)(14,Separator,2)(15,Item,5)(16,Separator,5)(17,Item,8)(18,Footer,-1)";
+		Assert.AreEqual (exp, v, "#18");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,5)(6,Separator,5)(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,6)(12,Item,2)(13,Separator,2)(14,Footer,-1)";
+		Assert.AreEqual (exp, v, "#19");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#20");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#21");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#22");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)(10,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#23");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#24");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)<br />(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)<br />(9,Item,4)<br />(10,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#25");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)(7,Item,3)<br />(8,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#26");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)<br />(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)<br />(14,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#27");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)(14,Separator,6)(15,Item,7)(16,Separator,7)(17,Item,8)<br />(18,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#28");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)<br />(14,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#29");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#30");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Footer,-1)";
+		Assert.AreEqual (exp, v, "#31");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Footer,-1)";
+		Assert.AreEqual (exp, v, "#32");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)(10,Footer,-1)";
+		Assert.AreEqual (exp, v, "#33");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#34");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)(10,Footer,-1)";
+		Assert.AreEqual (exp, v, "#35");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,2)(4,Separator,2)(5,Item,1)(6,Separator,1)(7,Item,3)(8,Footer,-1)";
+		Assert.AreEqual (exp, v, "#36");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,4)(4,Separator,4)(5,Item,1)(6,Separator,1)(7,Item,5)(8,Separator,5)(9,Item,2)(10,Separator,2)(11,Item,6)(12,Item,3)(13,Separator,3)(14,Footer,-1)";
+		Assert.AreEqual (exp, v, "#37");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,6)(6,Separator,6)(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,7)(12,Separator,7)(13,Item,2)(14,Separator,2)(15,Item,5)(16,Separator,5)(17,Item,8)(18,Footer,-1)";
+		Assert.AreEqual (exp, v, "#38");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_otrtblimp_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,5)(6,Separator,5)(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,6)(12,Item,2)(13,Separator,2)(14,Footer,-1)";
+		Assert.AreEqual (exp, v, "#39");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td colspan=""0"" class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#40");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(2,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#41");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(4,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#42");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""10"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td></td>
+	</tr><tr>
+		<td colspan=""10"" class=""Footer-1"">(10,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#43");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#44");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(10,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#45");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(8,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#46");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(14,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#47");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td class=""Separator6"">(14,Separator,6)</td><td class=""Item7"">(15,Item,7)</td><td class=""Separator7"">(16,Separator,7)</td><td class=""Item8"">(17,Item,8)</td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(18,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#48");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td></td><td></td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(14,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#49");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#50");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(2,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#51");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(4,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#52");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td>
+	</tr><tr>
+		<td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td>
+	</tr><tr>
+		<td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td>
+	</tr><tr>
+		<td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(10,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#53");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#54");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td>
+	</tr><tr>
+		<td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td>
+	</tr><tr>
+		<td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td>
+	</tr><tr>
+		<td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(10,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#55");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item2"">(3,Item,2)</td><td class=""Separator2"">(4,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item1"">(5,Item,1)</td><td class=""Separator1"">(6,Separator,1)</td><td class=""Item3"">(7,Item,3)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(8,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#56");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item4"">(3,Item,4)</td><td class=""Separator4"">(4,Separator,4)</td>
+	</tr><tr>
+		<td class=""Item1"">(5,Item,1)</td><td class=""Separator1"">(6,Separator,1)</td><td class=""Item5"">(7,Item,5)</td><td class=""Separator5"">(8,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item2"">(9,Item,2)</td><td class=""Separator2"">(10,Separator,2)</td><td class=""Item6"">(11,Item,6)</td><td></td>
+	</tr><tr>
+		<td class=""Item3"">(12,Item,3)</td><td class=""Separator3"">(13,Separator,3)</td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(14,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#57");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item3"">(3,Item,3)</td><td class=""Separator3"">(4,Separator,3)</td><td class=""Item6"">(5,Item,6)</td><td class=""Separator6"">(6,Separator,6)</td>
+	</tr><tr>
+		<td class=""Item1"">(7,Item,1)</td><td class=""Separator1"">(8,Separator,1)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item7"">(11,Item,7)</td><td class=""Separator7"">(12,Separator,7)</td>
+	</tr><tr>
+		<td class=""Item2"">(13,Item,2)</td><td class=""Separator2"">(14,Separator,2)</td><td class=""Item5"">(15,Item,5)</td><td class=""Separator5"">(16,Separator,5)</td><td class=""Item8"">(17,Item,8)</td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(18,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#58");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item3"">(3,Item,3)</td><td class=""Separator3"">(4,Separator,3)</td><td class=""Item5"">(5,Item,5)</td><td class=""Separator5"">(6,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item1"">(7,Item,1)</td><td class=""Separator1"">(8,Separator,1)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item6"">(11,Item,6)</td><td></td>
+	</tr><tr>
+		<td class=""Item2"">(12,Item,2)</td><td class=""Separator2"">(13,Separator,2)</td><td></td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(14,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#59");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#60");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#61");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#62");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)(10,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#63");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#64");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)<br />(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)<br />(9,Item,4)<br />(10,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#65");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)(7,Item,3)<br />(8,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#66");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)<br />(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)<br />(14,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#67");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)(14,Separator,6)(15,Item,7)(16,Separator,7)(17,Item,8)<br />(18,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#68");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)<br />(14,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#69");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#70");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#71");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Separator,0)<br />(3,Item,1)<br />(4,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#72");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Separator,0)<br />(3,Item,1)<br />(4,Separator,1)<br />(5,Item,2)<br />(6,Separator,2)<br />(7,Item,3)<br />(8,Separator,3)<br />(9,Item,4)<br />(10,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#73");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#74");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Separator,0)<br />(3,Item,1)<br />(4,Separator,1)<br />(5,Item,2)<br />(6,Separator,2)<br />(7,Item,3)<br />(8,Separator,3)<br />(9,Item,4)<br />(10,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#75");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,2)(4,Separator,2)<br />(5,Item,1)(6,Separator,1)(7,Item,3)<br />(8,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#76");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,4)(4,Separator,4)<br />(5,Item,1)(6,Separator,1)(7,Item,5)(8,Separator,5)<br />(9,Item,2)(10,Separator,2)(11,Item,6)<br />(12,Item,3)(13,Separator,3)<br />(14,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#77");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,6)(6,Separator,6)<br />(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,7)(12,Separator,7)<br />(13,Item,2)(14,Separator,2)(15,Item,5)(16,Separator,5)(17,Item,8)<br />(18,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#78");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_hdr_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,5)(6,Separator,5)<br />(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,6)<br />(12,Item,2)(13,Separator,2)<br />(14,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#79");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#80");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#81");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(3,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#82");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td></td>
+	</tr><tr>
+		<td colspan=""10"" class=""Footer-1"">(9,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#83");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#84");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(9,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#85");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(7,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#86");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(13,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#87");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td class=""Separator6"">(13,Separator,6)</td><td class=""Item7"">(14,Item,7)</td><td class=""Separator7"">(15,Separator,7)</td><td class=""Item8"">(16,Item,8)</td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(17,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#88");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td></td><td></td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(13,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#89");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Footer,-1)";
+		Assert.AreEqual (exp, v, "#90");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#91");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Footer,-1)";
+		Assert.AreEqual (exp, v, "#92");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)(9,Footer,-1)";
+		Assert.AreEqual (exp, v, "#93");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Footer,-1)";
+		Assert.AreEqual (exp, v, "#94");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)(9,Footer,-1)";
+		Assert.AreEqual (exp, v, "#95");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,2)(3,Separator,2)(4,Item,1)(5,Separator,1)(6,Item,3)(7,Footer,-1)";
+		Assert.AreEqual (exp, v, "#96");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,4)(3,Separator,4)(4,Item,1)(5,Separator,1)(6,Item,5)(7,Separator,5)(8,Item,2)(9,Separator,2)(10,Item,6)(11,Item,3)(12,Separator,3)(13,Footer,-1)";
+		Assert.AreEqual (exp, v, "#97");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,6)(5,Separator,6)(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,7)(11,Separator,7)(12,Item,2)(13,Separator,2)(14,Item,5)(15,Separator,5)(16,Item,8)(17,Footer,-1)";
+		Assert.AreEqual (exp, v, "#98");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_otrtblimp_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,5)(5,Separator,5)(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,6)(11,Item,2)(12,Separator,2)(13,Footer,-1)";
+		Assert.AreEqual (exp, v, "#99");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#100");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#101");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#102");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)(9,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#103");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#104");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)<br />(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)<br />(8,Item,4)<br />(9,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#105");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)(6,Item,3)<br />(7,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#106");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)<br />(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)<br />(13,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#107");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)(13,Separator,6)(14,Item,7)(15,Separator,7)(16,Item,8)<br />(17,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#108");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)<br />(13,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#109");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Footer,-1)";
+		Assert.AreEqual (exp, v, "#110");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#111");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Footer,-1)";
+		Assert.AreEqual (exp, v, "#112");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)(9,Footer,-1)";
+		Assert.AreEqual (exp, v, "#113");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Footer,-1)";
+		Assert.AreEqual (exp, v, "#114");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)(9,Footer,-1)";
+		Assert.AreEqual (exp, v, "#115");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,2)(3,Separator,2)(4,Item,1)(5,Separator,1)(6,Item,3)(7,Footer,-1)";
+		Assert.AreEqual (exp, v, "#116");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,4)(3,Separator,4)(4,Item,1)(5,Separator,1)(6,Item,5)(7,Separator,5)(8,Item,2)(9,Separator,2)(10,Item,6)(11,Item,3)(12,Separator,3)(13,Footer,-1)";
+		Assert.AreEqual (exp, v, "#117");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,6)(5,Separator,6)(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,7)(11,Separator,7)(12,Item,2)(13,Separator,2)(14,Item,5)(15,Separator,5)(16,Item,8)(17,Footer,-1)";
+		Assert.AreEqual (exp, v, "#118");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_otrtblimp_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,5)(5,Separator,5)(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,6)(11,Item,2)(12,Separator,2)(13,Footer,-1)";
+		Assert.AreEqual (exp, v, "#119");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#120");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#121");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(3,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#122");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td></td>
+	</tr><tr>
+		<td colspan=""10"" class=""Footer-1"">(9,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#123");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#124");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(9,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#125");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(7,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#126");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(13,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#127");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td class=""Separator6"">(13,Separator,6)</td><td class=""Item7"">(14,Item,7)</td><td class=""Separator7"">(15,Separator,7)</td><td class=""Item8"">(16,Item,8)</td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(17,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#128");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td></td><td></td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(13,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#129");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#130");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#131");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(3,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#132");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td>
+	</tr><tr>
+		<td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td>
+	</tr><tr>
+		<td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(9,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#133");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#134");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td>
+	</tr><tr>
+		<td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td>
+	</tr><tr>
+		<td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(9,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#135");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item2"">(2,Item,2)</td><td class=""Separator2"">(3,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item1"">(4,Item,1)</td><td class=""Separator1"">(5,Separator,1)</td><td class=""Item3"">(6,Item,3)</td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(7,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#136");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item4"">(2,Item,4)</td><td class=""Separator4"">(3,Separator,4)</td>
+	</tr><tr>
+		<td class=""Item1"">(4,Item,1)</td><td class=""Separator1"">(5,Separator,1)</td><td class=""Item5"">(6,Item,5)</td><td class=""Separator5"">(7,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item2"">(8,Item,2)</td><td class=""Separator2"">(9,Separator,2)</td><td class=""Item6"">(10,Item,6)</td><td></td>
+	</tr><tr>
+		<td class=""Item3"">(11,Item,3)</td><td class=""Separator3"">(12,Separator,3)</td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""4"" class=""Footer-1"">(13,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#137");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item3"">(2,Item,3)</td><td class=""Separator3"">(3,Separator,3)</td><td class=""Item6"">(4,Item,6)</td><td class=""Separator6"">(5,Separator,6)</td>
+	</tr><tr>
+		<td class=""Item1"">(6,Item,1)</td><td class=""Separator1"">(7,Separator,1)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item7"">(10,Item,7)</td><td class=""Separator7"">(11,Separator,7)</td>
+	</tr><tr>
+		<td class=""Item2"">(12,Item,2)</td><td class=""Separator2"">(13,Separator,2)</td><td class=""Item5"">(14,Item,5)</td><td class=""Separator5"">(15,Separator,5)</td><td class=""Item8"">(16,Item,8)</td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(17,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#138");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item3"">(2,Item,3)</td><td class=""Separator3"">(3,Separator,3)</td><td class=""Item5"">(4,Item,5)</td><td class=""Separator5"">(5,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item1"">(6,Item,1)</td><td class=""Separator1"">(7,Separator,1)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item6"">(10,Item,6)</td><td></td>
+	</tr><tr>
+		<td class=""Item2"">(11,Item,2)</td><td class=""Separator2"">(12,Separator,2)</td><td></td><td></td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""6"" class=""Footer-1"">(13,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#139");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#140");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#141");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#142");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)(9,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#143");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#144");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)<br />(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)<br />(8,Item,4)<br />(9,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#145");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)(6,Item,3)<br />(7,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#146");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)<br />(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)<br />(13,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#147");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)(13,Separator,6)(14,Item,7)(15,Separator,7)(16,Item,8)<br />(17,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#148");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)<br />(13,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#149");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#150");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#151");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Separator,0)<br />(2,Item,1)<br />(3,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#152");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Separator,0)<br />(2,Item,1)<br />(3,Separator,1)<br />(4,Item,2)<br />(5,Separator,2)<br />(6,Item,3)<br />(7,Separator,3)<br />(8,Item,4)<br />(9,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#153");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#154");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Separator,0)<br />(2,Item,1)<br />(3,Separator,1)<br />(4,Item,2)<br />(5,Separator,2)<br />(6,Item,3)<br />(7,Separator,3)<br />(8,Item,4)<br />(9,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#155");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,2)(3,Separator,2)<br />(4,Item,1)(5,Separator,1)(6,Item,3)<br />(7,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#156");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,4)(3,Separator,4)<br />(4,Item,1)(5,Separator,1)(6,Item,5)(7,Separator,5)<br />(8,Item,2)(9,Separator,2)(10,Item,6)<br />(11,Item,3)(12,Separator,3)<br />(13,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#157");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,6)(5,Separator,6)<br />(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,7)(11,Separator,7)<br />(12,Item,2)(13,Separator,2)(14,Item,5)(15,Separator,5)(16,Item,8)<br />(17,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#158");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_ftr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,5)(5,Separator,5)<br />(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,6)<br />(11,Item,2)(12,Separator,2)<br />(13,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#159");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#160");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#161");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#162");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""10"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#163");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#164");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#165");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#166");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#167");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td class=""Separator6"">(14,Separator,6)</td><td class=""Item7"">(15,Item,7)</td><td class=""Separator7"">(16,Separator,7)</td><td class=""Item8"">(17,Item,8)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#168");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td></td><td></td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#169");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)";
+		Assert.AreEqual (exp, v, "#170");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)";
+		Assert.AreEqual (exp, v, "#171");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)";
+		Assert.AreEqual (exp, v, "#172");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)";
+		Assert.AreEqual (exp, v, "#173");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)";
+		Assert.AreEqual (exp, v, "#174");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)";
+		Assert.AreEqual (exp, v, "#175");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,2)(4,Separator,2)(5,Item,1)(6,Separator,1)(7,Item,3)";
+		Assert.AreEqual (exp, v, "#176");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,4)(4,Separator,4)(5,Item,1)(6,Separator,1)(7,Item,5)(8,Separator,5)(9,Item,2)(10,Separator,2)(11,Item,6)(12,Item,3)(13,Separator,3)";
+		Assert.AreEqual (exp, v, "#177");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,6)(6,Separator,6)(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,7)(12,Separator,7)(13,Item,2)(14,Separator,2)(15,Item,5)(16,Separator,5)(17,Item,8)";
+		Assert.AreEqual (exp, v, "#178");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_otrtblimp_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,5)(6,Separator,5)(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,6)(12,Item,2)(13,Separator,2)";
+		Assert.AreEqual (exp, v, "#179");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)</span>";
+		Assert.AreEqual (exp, v, "#180");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#181");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#182");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#183");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)</span>";
+		Assert.AreEqual (exp, v, "#184");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)<br />(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)<br />(9,Item,4)<br /></span>";
+		Assert.AreEqual (exp, v, "#185");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)(7,Item,3)<br /></span>";
+		Assert.AreEqual (exp, v, "#186");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)<br />(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#187");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)(14,Separator,6)(15,Item,7)(16,Separator,7)(17,Item,8)<br /></span>";
+		Assert.AreEqual (exp, v, "#188");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#189");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)";
+		Assert.AreEqual (exp, v, "#190");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)";
+		Assert.AreEqual (exp, v, "#191");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)";
+		Assert.AreEqual (exp, v, "#192");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)";
+		Assert.AreEqual (exp, v, "#193");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)";
+		Assert.AreEqual (exp, v, "#194");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)";
+		Assert.AreEqual (exp, v, "#195");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,2)(4,Separator,2)(5,Item,1)(6,Separator,1)(7,Item,3)";
+		Assert.AreEqual (exp, v, "#196");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,4)(4,Separator,4)(5,Item,1)(6,Separator,1)(7,Item,5)(8,Separator,5)(9,Item,2)(10,Separator,2)(11,Item,6)(12,Item,3)(13,Separator,3)";
+		Assert.AreEqual (exp, v, "#197");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,6)(6,Separator,6)(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,7)(12,Separator,7)(13,Item,2)(14,Separator,2)(15,Item,5)(16,Separator,5)(17,Item,8)";
+		Assert.AreEqual (exp, v, "#198");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_otrtblimp_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, true);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,5)(6,Separator,5)(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,6)(12,Item,2)(13,Separator,2)";
+		Assert.AreEqual (exp, v, "#199");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#200");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#201");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#202");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""10"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#203");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#204");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#205");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#206");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td><td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#207");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td class=""Separator6"">(14,Separator,6)</td><td class=""Item7"">(15,Item,7)</td><td class=""Separator7"">(16,Separator,7)</td><td class=""Item8"">(17,Item,8)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#208");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item1"">(3,Item,1)</td><td class=""Separator1"">(4,Separator,1)</td><td class=""Item2"">(5,Item,2)</td><td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td class=""Separator3"">(8,Separator,3)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item5"">(11,Item,5)</td><td class=""Separator5"">(12,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(13,Item,6)</td><td></td><td></td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#209");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#210");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#211");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#212");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td>
+	</tr><tr>
+		<td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td>
+	</tr><tr>
+		<td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td>
+	</tr><tr>
+		<td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#213");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#214");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(2,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td>
+	</tr><tr>
+		<td class=""Separator1"">(4,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td>
+	</tr><tr>
+		<td class=""Separator2"">(6,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td>
+	</tr><tr>
+		<td class=""Separator3"">(8,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(9,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#215");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item2"">(3,Item,2)</td><td class=""Separator2"">(4,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item1"">(5,Item,1)</td><td class=""Separator1"">(6,Separator,1)</td><td class=""Item3"">(7,Item,3)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#216");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""4"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item4"">(3,Item,4)</td><td class=""Separator4"">(4,Separator,4)</td>
+	</tr><tr>
+		<td class=""Item1"">(5,Item,1)</td><td class=""Separator1"">(6,Separator,1)</td><td class=""Item5"">(7,Item,5)</td><td class=""Separator5"">(8,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item2"">(9,Item,2)</td><td class=""Separator2"">(10,Separator,2)</td><td class=""Item6"">(11,Item,6)</td><td></td>
+	</tr><tr>
+		<td class=""Item3"">(12,Item,3)</td><td class=""Separator3"">(13,Separator,3)</td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#217");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item3"">(3,Item,3)</td><td class=""Separator3"">(4,Separator,3)</td><td class=""Item6"">(5,Item,6)</td><td class=""Separator6"">(6,Separator,6)</td>
+	</tr><tr>
+		<td class=""Item1"">(7,Item,1)</td><td class=""Separator1"">(8,Separator,1)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item7"">(11,Item,7)</td><td class=""Separator7"">(12,Separator,7)</td>
+	</tr><tr>
+		<td class=""Item2"">(13,Item,2)</td><td class=""Separator2"">(14,Separator,2)</td><td class=""Item5"">(15,Item,5)</td><td class=""Separator5"">(16,Separator,5)</td><td class=""Item8"">(17,Item,8)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#218");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, true);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""6"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Separator0"">(2,Separator,0)</td><td class=""Item3"">(3,Item,3)</td><td class=""Separator3"">(4,Separator,3)</td><td class=""Item5"">(5,Item,5)</td><td class=""Separator5"">(6,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item1"">(7,Item,1)</td><td class=""Separator1"">(8,Separator,1)</td><td class=""Item4"">(9,Item,4)</td><td class=""Separator4"">(10,Separator,4)</td><td class=""Item6"">(11,Item,6)</td><td></td>
+	</tr><tr>
+		<td class=""Item2"">(12,Item,2)</td><td class=""Separator2"">(13,Separator,2)</td><td></td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#219");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)</span>";
+		Assert.AreEqual (exp, v, "#220");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#221");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#222");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)(9,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#223");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)</span>";
+		Assert.AreEqual (exp, v, "#224");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)<br />(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)<br />(9,Item,4)<br /></span>";
+		Assert.AreEqual (exp, v, "#225");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)(7,Item,3)<br /></span>";
+		Assert.AreEqual (exp, v, "#226");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)<br />(5,Item,2)(6,Separator,2)(7,Item,3)(8,Separator,3)<br />(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#227");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)(14,Separator,6)(15,Item,7)(16,Separator,7)(17,Item,8)<br /></span>";
+		Assert.AreEqual (exp, v, "#228");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,1)(4,Separator,1)(5,Item,2)(6,Separator,2)<br />(7,Item,3)(8,Separator,3)(9,Item,4)(10,Separator,4)(11,Item,5)(12,Separator,5)<br />(13,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#229");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br /></span>";
+		Assert.AreEqual (exp, v, "#230");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#231");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Separator,0)<br />(3,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#232");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Separator,0)<br />(3,Item,1)<br />(4,Separator,1)<br />(5,Item,2)<br />(6,Separator,2)<br />(7,Item,3)<br />(8,Separator,3)<br />(9,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#233");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br /></span>";
+		Assert.AreEqual (exp, v, "#234");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Separator,0)<br />(3,Item,1)<br />(4,Separator,1)<br />(5,Item,2)<br />(6,Separator,2)<br />(7,Item,3)<br />(8,Separator,3)<br />(9,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#235");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,2)(4,Separator,2)<br />(5,Item,1)(6,Separator,1)(7,Item,3)</span>";
+		Assert.AreEqual (exp, v, "#236");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,4)(4,Separator,4)<br />(5,Item,1)(6,Separator,1)(7,Item,5)(8,Separator,5)<br />(9,Item,2)(10,Separator,2)(11,Item,6)<br />(12,Item,3)(13,Separator,3)</span>";
+		Assert.AreEqual (exp, v, "#237");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,6)(6,Separator,6)<br />(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,7)(12,Separator,7)<br />(13,Item,2)(14,Separator,2)(15,Item,5)(16,Separator,5)(17,Item,8)</span>";
+		Assert.AreEqual (exp, v, "#238");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_hdr_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, true);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Separator,0)(3,Item,3)(4,Separator,3)(5,Item,5)(6,Separator,5)<br />(7,Item,1)(8,Separator,1)(9,Item,4)(10,Separator,4)(11,Item,6)<br />(12,Item,2)(13,Separator,2)</span>";
+		Assert.AreEqual (exp, v, "#239");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#240");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#241");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#242");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#243");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#244");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#245");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#246");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#247");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td class=""Separator6"">(13,Separator,6)</td><td class=""Item7"">(14,Item,7)</td><td class=""Separator7"">(15,Separator,7)</td><td class=""Item8"">(16,Item,8)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#248");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_otrtblimp_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td></td><td></td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#249");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"";
+		Assert.AreEqual (exp, v, "#250");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"(0,Item,0)";
+		Assert.AreEqual (exp, v, "#251");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)";
+		Assert.AreEqual (exp, v, "#252");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)";
+		Assert.AreEqual (exp, v, "#253");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"";
+		Assert.AreEqual (exp, v, "#254");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)";
+		Assert.AreEqual (exp, v, "#255");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,2)(3,Separator,2)(4,Item,1)(5,Separator,1)(6,Item,3)";
+		Assert.AreEqual (exp, v, "#256");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,4)(3,Separator,4)(4,Item,1)(5,Separator,1)(6,Item,5)(7,Separator,5)(8,Item,2)(9,Separator,2)(10,Item,6)(11,Item,3)(12,Separator,3)";
+		Assert.AreEqual (exp, v, "#257");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,6)(5,Separator,6)(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,7)(11,Separator,7)(12,Item,2)(13,Separator,2)(14,Item,5)(15,Separator,5)(16,Item,8)";
+		Assert.AreEqual (exp, v, "#258");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_otrtblimp_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,5)(5,Separator,5)(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,6)(11,Item,2)(12,Separator,2)";
+		Assert.AreEqual (exp, v, "#259");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#260");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#261");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#262");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#263");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#264");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)<br />(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)<br />(8,Item,4)<br /></span>";
+		Assert.AreEqual (exp, v, "#265");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)(6,Item,3)<br /></span>";
+		Assert.AreEqual (exp, v, "#266");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)<br />(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#267");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)(13,Separator,6)(14,Item,7)(15,Separator,7)(16,Item,8)<br /></span>";
+		Assert.AreEqual (exp, v, "#268");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_otrtblimp_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#269");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"";
+		Assert.AreEqual (exp, v, "#270");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"(0,Item,0)";
+		Assert.AreEqual (exp, v, "#271");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)";
+		Assert.AreEqual (exp, v, "#272");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)";
+		Assert.AreEqual (exp, v, "#273");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"";
+		Assert.AreEqual (exp, v, "#274");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)";
+		Assert.AreEqual (exp, v, "#275");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,2)(3,Separator,2)(4,Item,1)(5,Separator,1)(6,Item,3)";
+		Assert.AreEqual (exp, v, "#276");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,4)(3,Separator,4)(4,Item,1)(5,Separator,1)(6,Item,5)(7,Separator,5)(8,Item,2)(9,Separator,2)(10,Item,6)(11,Item,3)(12,Separator,3)";
+		Assert.AreEqual (exp, v, "#277");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,6)(5,Separator,6)(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,7)(11,Separator,7)(12,Item,2)(13,Separator,2)(14,Item,5)(15,Separator,5)(16,Item,8)";
+		Assert.AreEqual (exp, v, "#278");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_otrtblimp_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, true);
+		string exp = @"(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,5)(5,Separator,5)(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,6)(11,Item,2)(12,Separator,2)";
+		Assert.AreEqual (exp, v, "#279");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#280");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#281");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#282");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#283");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#284");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#285");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#286");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td><td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#287");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td class=""Separator6"">(13,Separator,6)</td><td class=""Item7"">(14,Item,7)</td><td class=""Separator7"">(15,Separator,7)</td><td class=""Item8"">(16,Item,8)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#288");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Separator1"">(3,Separator,1)</td><td class=""Item2"">(4,Item,2)</td><td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td class=""Separator3"">(7,Separator,3)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item5"">(10,Item,5)</td><td class=""Separator5"">(11,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(12,Item,6)</td><td></td><td></td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#289");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#290");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#291");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#292");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td>
+	</tr><tr>
+		<td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td>
+	</tr><tr>
+		<td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#293");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#294");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Separator0"">(1,Separator,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Separator1"">(3,Separator,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td>
+	</tr><tr>
+		<td class=""Separator2"">(5,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td>
+	</tr><tr>
+		<td class=""Separator3"">(7,Separator,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(8,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#295");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item2"">(2,Item,2)</td><td class=""Separator2"">(3,Separator,2)</td>
+	</tr><tr>
+		<td class=""Item1"">(4,Item,1)</td><td class=""Separator1"">(5,Separator,1)</td><td class=""Item3"">(6,Item,3)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#296");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item4"">(2,Item,4)</td><td class=""Separator4"">(3,Separator,4)</td>
+	</tr><tr>
+		<td class=""Item1"">(4,Item,1)</td><td class=""Separator1"">(5,Separator,1)</td><td class=""Item5"">(6,Item,5)</td><td class=""Separator5"">(7,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item2"">(8,Item,2)</td><td class=""Separator2"">(9,Separator,2)</td><td class=""Item6"">(10,Item,6)</td><td></td>
+	</tr><tr>
+		<td class=""Item3"">(11,Item,3)</td><td class=""Separator3"">(12,Separator,3)</td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#297");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item3"">(2,Item,3)</td><td class=""Separator3"">(3,Separator,3)</td><td class=""Item6"">(4,Item,6)</td><td class=""Separator6"">(5,Separator,6)</td>
+	</tr><tr>
+		<td class=""Item1"">(6,Item,1)</td><td class=""Separator1"">(7,Separator,1)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item7"">(10,Item,7)</td><td class=""Separator7"">(11,Separator,7)</td>
+	</tr><tr>
+		<td class=""Item2"">(12,Item,2)</td><td class=""Separator2"">(13,Separator,2)</td><td class=""Item5"">(14,Item,5)</td><td class=""Separator5"">(15,Separator,5)</td><td class=""Item8"">(16,Item,8)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#298");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, true);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Separator0"">(1,Separator,0)</td><td class=""Item3"">(2,Item,3)</td><td class=""Separator3"">(3,Separator,3)</td><td class=""Item5"">(4,Item,5)</td><td class=""Separator5"">(5,Separator,5)</td>
+	</tr><tr>
+		<td class=""Item1"">(6,Item,1)</td><td class=""Separator1"">(7,Separator,1)</td><td class=""Item4"">(8,Item,4)</td><td class=""Separator4"">(9,Separator,4)</td><td class=""Item6"">(10,Item,6)</td><td></td>
+	</tr><tr>
+		<td class=""Item2"">(11,Item,2)</td><td class=""Separator2"">(12,Separator,2)</td><td></td><td></td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#299");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#300");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#301");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#302");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)(8,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#303");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#304");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)<br />(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)<br />(8,Item,4)<br /></span>";
+		Assert.AreEqual (exp, v, "#305");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)(6,Item,3)<br /></span>";
+		Assert.AreEqual (exp, v, "#306");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)<br />(4,Item,2)(5,Separator,2)(6,Item,3)(7,Separator,3)<br />(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#307");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)(13,Separator,6)(14,Item,7)(15,Separator,7)(16,Item,8)<br /></span>";
+		Assert.AreEqual (exp, v, "#308");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,1)(3,Separator,1)(4,Item,2)(5,Separator,2)<br />(6,Item,3)(7,Separator,3)(8,Item,4)(9,Separator,4)(10,Item,5)(11,Separator,5)<br />(12,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#309");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_sep ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#310");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_sep ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#311");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_sep ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Separator,0)<br />(2,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#312");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_sep ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Separator,0)<br />(2,Item,1)<br />(3,Separator,1)<br />(4,Item,2)<br />(5,Separator,2)<br />(6,Item,3)<br />(7,Separator,3)<br />(8,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#313");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_sep ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#314");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_sep ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Separator,0)<br />(2,Item,1)<br />(3,Separator,1)<br />(4,Item,2)<br />(5,Separator,2)<br />(6,Item,3)<br />(7,Separator,3)<br />(8,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#315");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_sep ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,2)(3,Separator,2)<br />(4,Item,1)(5,Separator,1)(6,Item,3)</span>";
+		Assert.AreEqual (exp, v, "#316");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_sep ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Separator,0)(2,Item,4)(3,Separator,4)<br />(4,Item,1)(5,Separator,1)(6,Item,5)(7,Separator,5)<br />(8,Item,2)(9,Separator,2)(10,Item,6)<br />(11,Item,3)(12,Separator,3)</span>";
+		Assert.AreEqual (exp, v, "#317");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_sep ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,6)(5,Separator,6)<br />(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,7)(11,Separator,7)<br />(12,Item,2)(13,Separator,2)(14,Item,5)(15,Separator,5)(16,Item,8)</span>";
+		Assert.AreEqual (exp, v, "#318");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_sep ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : True
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, true);
+		string exp = @"<span>(0,Item,0)(1,Separator,0)(2,Item,3)(3,Separator,3)(4,Item,5)(5,Separator,5)<br />(6,Item,1)(7,Separator,1)(8,Item,4)(9,Separator,4)(10,Item,6)<br />(11,Item,2)(12,Separator,2)</span>";
+		Assert.AreEqual (exp, v, "#319");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td colspan=""0"" class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#320");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(2,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#321");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(3,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#322");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""5"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td>
+	</tr><tr>
+		<td colspan=""5"" class=""Footer-1"">(6,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#323");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#324");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(6,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#325");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(5,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#326");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(8,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#327");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td class=""Item7"">(8,Item,7)</td><td class=""Item8"">(9,Item,8)</td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(10,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#328");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, true, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(8,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#329");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#330");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Footer,-1)";
+		Assert.AreEqual (exp, v, "#331");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Footer,-1)";
+		Assert.AreEqual (exp, v, "#332");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)(6,Footer,-1)";
+		Assert.AreEqual (exp, v, "#333");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#334");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)(6,Footer,-1)";
+		Assert.AreEqual (exp, v, "#335");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,2)(3,Item,1)(4,Item,3)(5,Footer,-1)";
+		Assert.AreEqual (exp, v, "#336");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,4)(3,Item,1)(4,Item,5)(5,Item,2)(6,Item,6)(7,Item,3)(8,Footer,-1)";
+		Assert.AreEqual (exp, v, "#337");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,3)(3,Item,6)(4,Item,1)(5,Item,4)(6,Item,7)(7,Item,2)(8,Item,5)(9,Item,8)(10,Footer,-1)";
+		Assert.AreEqual (exp, v, "#338");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,3)(3,Item,5)(4,Item,1)(5,Item,4)(6,Item,6)(7,Item,2)(8,Footer,-1)";
+		Assert.AreEqual (exp, v, "#339");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#340");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#341");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Item,1)(3,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#342");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)(6,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#343");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#344");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)<br />(3,Item,2)<br />(4,Item,3)<br />(5,Item,4)<br />(6,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#345");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,1)<br />(3,Item,2)(4,Item,3)<br />(5,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#346");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,1)<br />(3,Item,2)(4,Item,3)<br />(5,Item,4)(6,Item,5)<br />(7,Item,6)<br />(8,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#347");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,1)(3,Item,2)<br />(4,Item,3)(5,Item,4)(6,Item,5)<br />(7,Item,6)(8,Item,7)(9,Item,8)<br />(10,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#348");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,1)(3,Item,2)<br />(4,Item,3)(5,Item,4)(6,Item,5)<br />(7,Item,6)<br />(8,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#349");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#350");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Footer,-1)";
+		Assert.AreEqual (exp, v, "#351");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Footer,-1)";
+		Assert.AreEqual (exp, v, "#352");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)(6,Footer,-1)";
+		Assert.AreEqual (exp, v, "#353");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#354");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)(6,Footer,-1)";
+		Assert.AreEqual (exp, v, "#355");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,2)(3,Item,1)(4,Item,3)(5,Footer,-1)";
+		Assert.AreEqual (exp, v, "#356");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,4)(3,Item,1)(4,Item,5)(5,Item,2)(6,Item,6)(7,Item,3)(8,Footer,-1)";
+		Assert.AreEqual (exp, v, "#357");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,3)(3,Item,6)(4,Item,1)(5,Item,4)(6,Item,7)(7,Item,2)(8,Item,5)(9,Item,8)(10,Footer,-1)";
+		Assert.AreEqual (exp, v, "#358");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_otrtblimp_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, true, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,3)(3,Item,5)(4,Item,1)(5,Item,4)(6,Item,6)(7,Item,2)(8,Footer,-1)";
+		Assert.AreEqual (exp, v, "#359");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td colspan=""0"" class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#360");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(2,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#361");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(3,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#362");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""5"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td>
+	</tr><tr>
+		<td colspan=""5"" class=""Footer-1"">(6,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#363");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#364");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(6,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#365");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(5,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#366");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(8,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#367");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td class=""Item7"">(8,Item,7)</td><td class=""Item8"">(9,Item,8)</td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(10,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#368");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(8,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#369");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#370");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(2,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#371");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(3,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#372");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(6,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#373");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#374");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(6,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#375");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(5,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#376");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item4"">(2,Item,4)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Item5"">(4,Item,5)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Item6"">(6,Item,6)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(8,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#377");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item3"">(2,Item,3)</td><td class=""Item6"">(3,Item,6)</td>
+	</tr><tr>
+		<td class=""Item1"">(4,Item,1)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item7"">(6,Item,7)</td>
+	</tr><tr>
+		<td class=""Item2"">(7,Item,2)</td><td class=""Item5"">(8,Item,5)</td><td class=""Item8"">(9,Item,8)</td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(10,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#378");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, true, true, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item3"">(2,Item,3)</td><td class=""Item5"">(3,Item,5)</td>
+	</tr><tr>
+		<td class=""Item1"">(4,Item,1)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item6"">(6,Item,6)</td>
+	</tr><tr>
+		<td class=""Item2"">(7,Item,2)</td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(8,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#379");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#380");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#381");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Item,1)(3,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#382");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)(6,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#383");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#384");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)<br />(3,Item,2)<br />(4,Item,3)<br />(5,Item,4)<br />(6,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#385");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,1)<br />(3,Item,2)(4,Item,3)<br />(5,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#386");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,1)<br />(3,Item,2)(4,Item,3)<br />(5,Item,4)(6,Item,5)<br />(7,Item,6)<br />(8,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#387");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,1)(3,Item,2)<br />(4,Item,3)(5,Item,4)(6,Item,5)<br />(7,Item,6)(8,Item,7)(9,Item,8)<br />(10,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#388");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,1)(3,Item,2)<br />(4,Item,3)(5,Item,4)(6,Item,5)<br />(7,Item,6)<br />(8,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#389");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#390");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#391");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)<br />(3,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#392");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)<br />(3,Item,2)<br />(4,Item,3)<br />(5,Item,4)<br />(6,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#393");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#394");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)<br />(3,Item,2)<br />(4,Item,3)<br />(5,Item,4)<br />(6,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#395");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,2)<br />(3,Item,1)(4,Item,3)<br />(5,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#396");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,4)<br />(3,Item,1)(4,Item,5)<br />(5,Item,2)(6,Item,6)<br />(7,Item,3)<br />(8,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#397");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,3)(3,Item,6)<br />(4,Item,1)(5,Item,4)(6,Item,7)<br />(7,Item,2)(8,Item,5)(9,Item,8)<br />(10,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#398");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_hdr_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, true, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,3)(3,Item,5)<br />(4,Item,1)(5,Item,4)(6,Item,6)<br />(7,Item,2)<br />(8,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#399");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#400");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#401");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(2,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#402");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td>
+	</tr><tr>
+		<td colspan=""5"" class=""Footer-1"">(5,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#403");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#404");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(5,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#405");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(4,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#406");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(7,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#407");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td class=""Item7"">(7,Item,7)</td><td class=""Item8"">(8,Item,8)</td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(9,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#408");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, true, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(7,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#409");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Footer,-1)";
+		Assert.AreEqual (exp, v, "#410");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#411");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Footer,-1)";
+		Assert.AreEqual (exp, v, "#412");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)(5,Footer,-1)";
+		Assert.AreEqual (exp, v, "#413");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Footer,-1)";
+		Assert.AreEqual (exp, v, "#414");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)(5,Footer,-1)";
+		Assert.AreEqual (exp, v, "#415");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,2)(2,Item,1)(3,Item,3)(4,Footer,-1)";
+		Assert.AreEqual (exp, v, "#416");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,4)(2,Item,1)(3,Item,5)(4,Item,2)(5,Item,6)(6,Item,3)(7,Footer,-1)";
+		Assert.AreEqual (exp, v, "#417");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,3)(2,Item,6)(3,Item,1)(4,Item,4)(5,Item,7)(6,Item,2)(7,Item,5)(8,Item,8)(9,Footer,-1)";
+		Assert.AreEqual (exp, v, "#418");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_otrtblimp_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,3)(2,Item,5)(3,Item,1)(4,Item,4)(5,Item,6)(6,Item,2)(7,Footer,-1)";
+		Assert.AreEqual (exp, v, "#419");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#420");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#421");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)(2,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#422");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)(5,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#423");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#424");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)<br />(2,Item,2)<br />(3,Item,3)<br />(4,Item,4)<br />(5,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#425");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)<br />(2,Item,2)(3,Item,3)<br />(4,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#426");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)<br />(2,Item,2)(3,Item,3)<br />(4,Item,4)(5,Item,5)<br />(6,Item,6)<br />(7,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#427");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span>(0,Item,0)(1,Item,1)(2,Item,2)<br />(3,Item,3)(4,Item,4)(5,Item,5)<br />(6,Item,6)(7,Item,7)(8,Item,8)<br />(9,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#428");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_otrtblimp_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"<span>(0,Item,0)(1,Item,1)(2,Item,2)<br />(3,Item,3)(4,Item,4)(5,Item,5)<br />(6,Item,6)<br />(7,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#429");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Footer,-1)";
+		Assert.AreEqual (exp, v, "#430");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Footer,-1)";
+		Assert.AreEqual (exp, v, "#431");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Footer,-1)";
+		Assert.AreEqual (exp, v, "#432");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)(5,Footer,-1)";
+		Assert.AreEqual (exp, v, "#433");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Footer,-1)";
+		Assert.AreEqual (exp, v, "#434");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)(5,Footer,-1)";
+		Assert.AreEqual (exp, v, "#435");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,2)(2,Item,1)(3,Item,3)(4,Footer,-1)";
+		Assert.AreEqual (exp, v, "#436");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,4)(2,Item,1)(3,Item,5)(4,Item,2)(5,Item,6)(6,Item,3)(7,Footer,-1)";
+		Assert.AreEqual (exp, v, "#437");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,3)(2,Item,6)(3,Item,1)(4,Item,4)(5,Item,7)(6,Item,2)(7,Item,5)(8,Item,8)(9,Footer,-1)";
+		Assert.AreEqual (exp, v, "#438");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_otrtblimp_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, true, false);
+		string exp = @"(0,Item,0)(1,Item,3)(2,Item,5)(3,Item,1)(4,Item,4)(5,Item,6)(6,Item,2)(7,Footer,-1)";
+		Assert.AreEqual (exp, v, "#439");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#440");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#441");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(2,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#442");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td>
+	</tr><tr>
+		<td colspan=""5"" class=""Footer-1"">(5,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#443");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#444");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(5,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#445");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(4,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#446");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(7,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#447");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td class=""Item7"">(7,Item,7)</td><td class=""Item8"">(8,Item,8)</td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(9,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#448");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(7,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#449");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#450");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(1,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#451");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(2,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#452");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(5,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#453");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Footer-1"">(0,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#454");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td>
+	</tr><tr>
+		<td class=""Footer-1"">(5,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#455");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item2"">(1,Item,2)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(4,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#456");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item4"">(1,Item,4)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td><td class=""Item5"">(3,Item,5)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Item6"">(5,Item,6)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td></td>
+	</tr><tr>
+		<td colspan=""2"" class=""Footer-1"">(7,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#457");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item3"">(1,Item,3)</td><td class=""Item6"">(2,Item,6)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item7"">(5,Item,7)</td>
+	</tr><tr>
+		<td class=""Item2"">(6,Item,2)</td><td class=""Item5"">(7,Item,5)</td><td class=""Item8"">(8,Item,8)</td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(9,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#458");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, false, true, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item3"">(1,Item,3)</td><td class=""Item5"">(2,Item,5)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item6"">(5,Item,6)</td>
+	</tr><tr>
+		<td class=""Item2"">(6,Item,2)</td><td></td><td></td>
+	</tr><tr>
+		<td colspan=""3"" class=""Footer-1"">(7,Footer,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#459");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#460");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#461");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)(2,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#462");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)(5,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#463");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#464");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)<br />(2,Item,2)<br />(3,Item,3)<br />(4,Item,4)<br />(5,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#465");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)<br />(2,Item,2)(3,Item,3)<br />(4,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#466");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)<br />(2,Item,2)(3,Item,3)<br />(4,Item,4)(5,Item,5)<br />(6,Item,6)<br />(7,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#467");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span>(0,Item,0)(1,Item,1)(2,Item,2)<br />(3,Item,3)(4,Item,4)(5,Item,5)<br />(6,Item,6)(7,Item,7)(8,Item,8)<br />(9,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#468");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span>(0,Item,0)(1,Item,1)(2,Item,2)<br />(3,Item,3)(4,Item,4)(5,Item,5)<br />(6,Item,6)<br />(7,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#469");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#470");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#471");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)<br />(2,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#472");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_ftr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)<br />(2,Item,2)<br />(3,Item,3)<br />(4,Item,4)<br />(5,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#473");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#474");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_ftr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)<br />(2,Item,2)<br />(3,Item,3)<br />(4,Item,4)<br />(5,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#475");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,2)<br />(2,Item,1)(3,Item,3)<br />(4,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#476");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_ftr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,4)<br />(2,Item,1)(3,Item,5)<br />(4,Item,2)(5,Item,6)<br />(6,Item,3)<br />(7,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#477");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span>(0,Item,0)(1,Item,3)(2,Item,6)<br />(3,Item,1)(4,Item,4)(5,Item,7)<br />(6,Item,2)(7,Item,5)(8,Item,8)<br />(9,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#478");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_ftr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : True
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, true, false);
+		string exp = @"<span>(0,Item,0)(1,Item,3)(2,Item,5)<br />(3,Item,1)(4,Item,4)(5,Item,6)<br />(6,Item,2)<br />(7,Footer,-1)</span>";
+		Assert.AreEqual (exp, v, "#479");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#480");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#481");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#482");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""5"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#483");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#484");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#485");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#486");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#487");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td class=""Item7"">(8,Item,7)</td><td class=""Item8"">(9,Item,8)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#488");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, true, false, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#489");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)";
+		Assert.AreEqual (exp, v, "#490");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)";
+		Assert.AreEqual (exp, v, "#491");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)";
+		Assert.AreEqual (exp, v, "#492");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)";
+		Assert.AreEqual (exp, v, "#493");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)";
+		Assert.AreEqual (exp, v, "#494");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)";
+		Assert.AreEqual (exp, v, "#495");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,2)(3,Item,1)(4,Item,3)";
+		Assert.AreEqual (exp, v, "#496");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,4)(3,Item,1)(4,Item,5)(5,Item,2)(6,Item,6)(7,Item,3)";
+		Assert.AreEqual (exp, v, "#497");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,3)(3,Item,6)(4,Item,1)(5,Item,4)(6,Item,7)(7,Item,2)(8,Item,5)(9,Item,8)";
+		Assert.AreEqual (exp, v, "#498");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_otrtblimp_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,3)(3,Item,5)(4,Item,1)(5,Item,4)(6,Item,6)(7,Item,2)";
+		Assert.AreEqual (exp, v, "#499");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)</span>";
+		Assert.AreEqual (exp, v, "#500");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#501");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#502");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#503");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)</span>";
+		Assert.AreEqual (exp, v, "#504");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)<br />(3,Item,2)<br />(4,Item,3)<br />(5,Item,4)<br /></span>";
+		Assert.AreEqual (exp, v, "#505");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,1)<br />(3,Item,2)(4,Item,3)<br /></span>";
+		Assert.AreEqual (exp, v, "#506");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,1)<br />(3,Item,2)(4,Item,3)<br />(5,Item,4)(6,Item,5)<br />(7,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#507");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,1)(3,Item,2)<br />(4,Item,3)(5,Item,4)(6,Item,5)<br />(7,Item,6)(8,Item,7)(9,Item,8)<br /></span>";
+		Assert.AreEqual (exp, v, "#508");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_otrtblimp_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,1)(3,Item,2)<br />(4,Item,3)(5,Item,4)(6,Item,5)<br />(7,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#509");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)";
+		Assert.AreEqual (exp, v, "#510");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)";
+		Assert.AreEqual (exp, v, "#511");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)";
+		Assert.AreEqual (exp, v, "#512");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)";
+		Assert.AreEqual (exp, v, "#513");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)";
+		Assert.AreEqual (exp, v, "#514");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)";
+		Assert.AreEqual (exp, v, "#515");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,2)(3,Item,1)(4,Item,3)";
+		Assert.AreEqual (exp, v, "#516");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,4)(3,Item,1)(4,Item,5)(5,Item,2)(6,Item,6)(7,Item,3)";
+		Assert.AreEqual (exp, v, "#517");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,3)(3,Item,6)(4,Item,1)(5,Item,4)(6,Item,7)(7,Item,2)(8,Item,5)(9,Item,8)";
+		Assert.AreEqual (exp, v, "#518");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_otrtblimp_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, true, false, false);
+		string exp = @"(0,Header,-1)(1,Item,0)(2,Item,3)(3,Item,5)(4,Item,1)(5,Item,4)(6,Item,6)(7,Item,2)";
+		Assert.AreEqual (exp, v, "#519");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""0"" class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#520");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#521");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#522");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""5"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#523");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#524");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#525");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#526");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#527");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td class=""Item7"">(8,Item,7)</td><td class=""Item8"">(9,Item,8)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#528");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item1"">(2,Item,1)</td><td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item5"">(6,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(7,Item,6)</td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#529");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#530");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#531");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#532");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#533");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#534");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(3,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(4,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(5,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#535");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Item3"">(4,Item,3)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#536");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td colspan=""2"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item4"">(2,Item,4)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Item5"">(4,Item,5)</td>
+	</tr><tr>
+		<td class=""Item2"">(5,Item,2)</td><td class=""Item6"">(6,Item,6)</td>
+	</tr><tr>
+		<td class=""Item3"">(7,Item,3)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#537");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item3"">(2,Item,3)</td><td class=""Item6"">(3,Item,6)</td>
+	</tr><tr>
+		<td class=""Item1"">(4,Item,1)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item7"">(6,Item,7)</td>
+	</tr><tr>
+		<td class=""Item2"">(7,Item,2)</td><td class=""Item5"">(8,Item,5)</td><td class=""Item8"">(9,Item,8)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#538");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, true, false, false);
+		string exp = @"<table>
+	<tr>
+		<td colspan=""3"" class=""Header-1"">(0,Header,-1)</td>
+	</tr><tr>
+		<td class=""Item0"">(1,Item,0)</td><td class=""Item3"">(2,Item,3)</td><td class=""Item5"">(3,Item,5)</td>
+	</tr><tr>
+		<td class=""Item1"">(4,Item,1)</td><td class=""Item4"">(5,Item,4)</td><td class=""Item6"">(6,Item,6)</td>
+	</tr><tr>
+		<td class=""Item2"">(7,Item,2)</td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#539");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)</span>";
+		Assert.AreEqual (exp, v, "#540");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#541");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#542");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)(1,Item,0)(2,Item,1)(3,Item,2)(4,Item,3)(5,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#543");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)</span>";
+		Assert.AreEqual (exp, v, "#544");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)<br />(3,Item,2)<br />(4,Item,3)<br />(5,Item,4)<br /></span>";
+		Assert.AreEqual (exp, v, "#545");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,1)<br />(3,Item,2)(4,Item,3)<br /></span>";
+		Assert.AreEqual (exp, v, "#546");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,1)<br />(3,Item,2)(4,Item,3)<br />(5,Item,4)(6,Item,5)<br />(7,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#547");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,1)(3,Item,2)<br />(4,Item,3)(5,Item,4)(6,Item,5)<br />(7,Item,6)(8,Item,7)(9,Item,8)<br /></span>";
+		Assert.AreEqual (exp, v, "#548");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,1)(3,Item,2)<br />(4,Item,3)(5,Item,4)(6,Item,5)<br />(7,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#549");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br /></span>";
+		Assert.AreEqual (exp, v, "#550");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#551");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#552");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_hdr ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)<br />(3,Item,2)<br />(4,Item,3)<br />(5,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#553");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br /></span>";
+		Assert.AreEqual (exp, v, "#554");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_hdr ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)<br />(2,Item,1)<br />(3,Item,2)<br />(4,Item,3)<br />(5,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#555");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,2)<br />(3,Item,1)(4,Item,3)</span>";
+		Assert.AreEqual (exp, v, "#556");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_hdr ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Header,-1)<br />(1,Item,0)(2,Item,4)<br />(3,Item,1)(4,Item,5)<br />(5,Item,2)(6,Item,6)<br />(7,Item,3)</span>";
+		Assert.AreEqual (exp, v, "#557");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,3)(3,Item,6)<br />(4,Item,1)(5,Item,4)(6,Item,7)<br />(7,Item,2)(8,Item,5)(9,Item,8)</span>";
+		Assert.AreEqual (exp, v, "#558");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_hdr ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : True
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, true, false, false);
+		string exp = @"<span>(0,Header,-1)<br />(1,Item,0)(2,Item,3)(3,Item,5)<br />(4,Item,1)(5,Item,4)(6,Item,6)<br />(7,Item,2)</span>";
+		Assert.AreEqual (exp, v, "#559");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#560");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#561");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#562");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#563");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#564");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#565");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#566");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#567");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td class=""Item7"">(7,Item,7)</td><td class=""Item8"">(8,Item,8)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#568");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl_otrtblimp ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, true, false, false, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#569");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"";
+		Assert.AreEqual (exp, v, "#570");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"(0,Item,0)";
+		Assert.AreEqual (exp, v, "#571");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,1)";
+		Assert.AreEqual (exp, v, "#572");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)";
+		Assert.AreEqual (exp, v, "#573");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"";
+		Assert.AreEqual (exp, v, "#574");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)";
+		Assert.AreEqual (exp, v, "#575");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,2)(2,Item,1)(3,Item,3)";
+		Assert.AreEqual (exp, v, "#576");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,4)(2,Item,1)(3,Item,5)(4,Item,2)(5,Item,6)(6,Item,3)";
+		Assert.AreEqual (exp, v, "#577");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,3)(2,Item,6)(3,Item,1)(4,Item,4)(5,Item,7)(6,Item,2)(7,Item,5)(8,Item,8)";
+		Assert.AreEqual (exp, v, "#578");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl_otrtblimp ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,3)(2,Item,5)(3,Item,1)(4,Item,4)(5,Item,6)(6,Item,2)";
+		Assert.AreEqual (exp, v, "#579");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#580");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#581");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#582");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#583");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#584");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)<br />(2,Item,2)<br />(3,Item,3)<br />(4,Item,4)<br /></span>";
+		Assert.AreEqual (exp, v, "#585");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)<br />(2,Item,2)(3,Item,3)<br /></span>";
+		Assert.AreEqual (exp, v, "#586");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)<br />(2,Item,2)(3,Item,3)<br />(4,Item,4)(5,Item,5)<br />(6,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#587");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span>(0,Item,0)(1,Item,1)(2,Item,2)<br />(3,Item,3)(4,Item,4)(5,Item,5)<br />(6,Item,6)(7,Item,7)(8,Item,8)<br /></span>";
+		Assert.AreEqual (exp, v, "#588");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow_otrtblimp ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"<span>(0,Item,0)(1,Item,1)(2,Item,2)<br />(3,Item,3)(4,Item,4)(5,Item,5)<br />(6,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#589");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"";
+		Assert.AreEqual (exp, v, "#590");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"(0,Item,0)";
+		Assert.AreEqual (exp, v, "#591");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,1)";
+		Assert.AreEqual (exp, v, "#592");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)";
+		Assert.AreEqual (exp, v, "#593");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"";
+		Assert.AreEqual (exp, v, "#594");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)";
+		Assert.AreEqual (exp, v, "#595");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,2)(2,Item,1)(3,Item,3)";
+		Assert.AreEqual (exp, v, "#596");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,4)(2,Item,1)(3,Item,5)(4,Item,2)(5,Item,6)(6,Item,3)";
+		Assert.AreEqual (exp, v, "#597");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,3)(2,Item,6)(3,Item,1)(4,Item,4)(5,Item,7)(6,Item,2)(7,Item,5)(8,Item,8)";
+		Assert.AreEqual (exp, v, "#598");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow_otrtblimp ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : True
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, true, false, false, false);
+		string exp = @"(0,Item,0)(1,Item,3)(2,Item,5)(3,Item,1)(4,Item,4)(5,Item,6)(6,Item,2)";
+		Assert.AreEqual (exp, v, "#599");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_tbl ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#600");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_tbl ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#601");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_tbl ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#602");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_tbl ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#603");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_tbl ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#604");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_tbl ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#605");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_tbl ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#606");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_tbl ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#607");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_tbl ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td class=""Item7"">(7,Item,7)</td><td class=""Item8"">(8,Item,8)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#608");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_tbl ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item1"">(1,Item,1)</td><td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item5"">(5,Item,5)</td>
+	</tr><tr>
+		<td class=""Item6"">(6,Item,6)</td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#609");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_tbl ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#610");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_tbl ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#611");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_tbl ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#612");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_tbl ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#613");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_tbl ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+
+</table>";
+		Assert.AreEqual (exp, v, "#614");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_tbl ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td>
+	</tr><tr>
+		<td class=""Item1"">(1,Item,1)</td>
+	</tr><tr>
+		<td class=""Item2"">(2,Item,2)</td>
+	</tr><tr>
+		<td class=""Item3"">(3,Item,3)</td>
+	</tr><tr>
+		<td class=""Item4"">(4,Item,4)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#615");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_tbl ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item2"">(1,Item,2)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td><td class=""Item3"">(3,Item,3)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#616");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_tbl ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table class=""mainstyle"">
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item4"">(1,Item,4)</td>
+	</tr><tr>
+		<td class=""Item1"">(2,Item,1)</td><td class=""Item5"">(3,Item,5)</td>
+	</tr><tr>
+		<td class=""Item2"">(4,Item,2)</td><td class=""Item6"">(5,Item,6)</td>
+	</tr><tr>
+		<td class=""Item3"">(6,Item,3)</td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#617");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_tbl ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item3"">(1,Item,3)</td><td class=""Item6"">(2,Item,6)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item7"">(5,Item,7)</td>
+	</tr><tr>
+		<td class=""Item2"">(6,Item,2)</td><td class=""Item5"">(7,Item,5)</td><td class=""Item8"">(8,Item,8)</td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#618");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_tbl ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Table
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Table, false, false, false, false);
+		string exp = @"<table>
+	<tr>
+		<td class=""Item0"">(0,Item,0)</td><td class=""Item3"">(1,Item,3)</td><td class=""Item5"">(2,Item,5)</td>
+	</tr><tr>
+		<td class=""Item1"">(3,Item,1)</td><td class=""Item4"">(4,Item,4)</td><td class=""Item6"">(5,Item,6)</td>
+	</tr><tr>
+		<td class=""Item2"">(6,Item,2)</td><td></td><td></td>
+	</tr>
+</table>";
+		Assert.AreEqual (exp, v, "#619");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_horiz_flow ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#620");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_horiz_flow ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#621");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_horiz_flow ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#622");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_horiz_flow ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)(2,Item,2)(3,Item,3)(4,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#623");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_horiz_flow ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#624");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_horiz_flow ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)<br />(2,Item,2)<br />(3,Item,3)<br />(4,Item,4)<br /></span>";
+		Assert.AreEqual (exp, v, "#625");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_horiz_flow ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)<br />(2,Item,2)(3,Item,3)<br /></span>";
+		Assert.AreEqual (exp, v, "#626");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_horiz_flow ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,1)<br />(2,Item,2)(3,Item,3)<br />(4,Item,4)(5,Item,5)<br />(6,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#627");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_horiz_flow ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span>(0,Item,0)(1,Item,1)(2,Item,2)<br />(3,Item,3)(4,Item,4)(5,Item,5)<br />(6,Item,6)(7,Item,7)(8,Item,8)<br /></span>";
+		Assert.AreEqual (exp, v, "#628");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_horiz_flow ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Horizontal
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Horizontal, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span>(0,Item,0)(1,Item,1)(2,Item,2)<br />(3,Item,3)(4,Item,4)(5,Item,5)<br />(6,Item,6)<br /></span>";
+		Assert.AreEqual (exp, v, "#629");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_0itms_vert_flow ()
+	{
+		// cols              : 0
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#630");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_1itms_vert_flow ()
+	{
+		// cols              : 0
+		// cnt               : 1
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 1, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)</span>";
+		Assert.AreEqual (exp, v, "#631");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_2itms_vert_flow ()
+	{
+		// cols              : 0
+		// cnt               : 2
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 2, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)</span>";
+		Assert.AreEqual (exp, v, "#632");
+	}
+
+
+	[Test]
+	public void RepeatInfo_0cols_5itms_vert_flow ()
+	{
+		// cols              : 0
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (0, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)<br />(2,Item,2)<br />(3,Item,3)<br />(4,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#633");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_0itms_vert_flow ()
+	{
+		// cols              : 1
+		// cnt               : 0
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 0, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle""></span>";
+		Assert.AreEqual (exp, v, "#634");
+	}
+
+
+	[Test]
+	public void RepeatInfo_1cols_5itms_vert_flow ()
+	{
+		// cols              : 1
+		// cnt               : 5
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (1, 5, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)<br />(1,Item,1)<br />(2,Item,2)<br />(3,Item,3)<br />(4,Item,4)</span>";
+		Assert.AreEqual (exp, v, "#635");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_4itms_vert_flow ()
+	{
+		// cols              : 2
+		// cnt               : 4
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 4, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,2)<br />(2,Item,1)(3,Item,3)</span>";
+		Assert.AreEqual (exp, v, "#636");
+	}
+
+
+	[Test]
+	public void RepeatInfo_2cols_7itms_vert_flow ()
+	{
+		// cols              : 2
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (2, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span class=""mainstyle"">(0,Item,0)(1,Item,4)<br />(2,Item,1)(3,Item,5)<br />(4,Item,2)(5,Item,6)<br />(6,Item,3)</span>";
+		Assert.AreEqual (exp, v, "#637");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_9itms_vert_flow ()
+	{
+		// cols              : 3
+		// cnt               : 9
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 9, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span>(0,Item,0)(1,Item,3)(2,Item,6)<br />(3,Item,1)(4,Item,4)(5,Item,7)<br />(6,Item,2)(7,Item,5)(8,Item,8)</span>";
+		Assert.AreEqual (exp, v, "#638");
+	}
+
+
+	[Test]
+	public void RepeatInfo_3cols_7itms_vert_flow ()
+	{
+		// cols              : 3
+		// cnt               : 7
+		// RepeatDirection   : Vertical
+		// RepeatLayout      : Flow
+		// OuterTableImplied : False
+		// Header            : False
+		// Footer            : False
+		// Separator         : False
+
+
+		string v = RepeatInfoUser.DoTest (3, 7, RepeatDirection.Vertical, RepeatLayout.Flow, false, false, false, false);
+		string exp = @"<span>(0,Item,0)(1,Item,3)(2,Item,5)<br />(3,Item,1)(4,Item,4)(5,Item,6)<br />(6,Item,2)</span>";
+		Assert.AreEqual (exp, v, "#639");
+	}
+
+
+}
+}
+#endif

+ 6 - 5
mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeatInfoTest.cs

@@ -153,7 +153,8 @@ namespace MonoTests.System.Web.UI.WebControls {
 
 			HtmlTextWriter writer = GetWriter ();
 			ri.RenderRepeater (writer, new RepeatInfoUser (false, false, false, 1), new TableStyle (), wc);
-			Assert.AreEqual (s, writer.InnerWriter.ToString (), msg);
+			string rendered = writer.InnerWriter.ToString ();
+			Assert.AreEqual (s, rendered, msg);
 		}
 
 		[Test]
@@ -166,12 +167,12 @@ namespace MonoTests.System.Web.UI.WebControls {
 		[Test]
 		public void RenderRepeater_BaseControl ()
 		{
-#if NET_2_0
+#if NET_4_0
+			string noid = "<table>\n\t<tr>\n\t\t<td>0</td><td></td><td></td>\n\t</tr>\n</table>";
+			string id_enabled = "<table id=\"foo\" class=\"aspNetDisabled\">\n\t<tr>\n\t\t<td>0</td><td></td><td></td>\n\t</tr>\n</table>";
+#else
 			string noid = "<table border=\"0\">\n\t<tr>\n\t\t<td>0</td><td></td><td></td>\n\t</tr>\n</table>";
 			string id_enabled = "<table id=\"foo\" disabled=\"disabled\" border=\"0\">\n\t<tr>\n\t\t<td>0</td><td></td><td></td>\n\t</tr>\n</table>";
-#else
-			string noid = "<table border=\"0\">\n\t<tr>\n\t\t<td>0</td>\n\t</tr>\n</table>";
-			string id_enabled = "<table id=\"foo\" disabled=\"disabled\" border=\"0\">\n\t<tr>\n\t\t<td>0</td>\n\t</tr>\n</table>";
 #endif
 			RenderRepeater_BaseControl (noid, "Table", new Table ());
 			RenderRepeater_BaseControl (noid, "DataList", new DataList ());

+ 3 - 3
mcs/class/System.Web/Test/System.Web.UI.WebControls/RepeatInfoTest.gen.cs

@@ -110,10 +110,10 @@ class X {
 
 	static void Main ()
 	{
-#if NET_2_0
-	  Console.WriteLine ("#if NET_2_0");
+#if NET_4_0
+		Console.WriteLine ("#if NET_4_0");
 #else
-	  Console.WriteLine ("#if !NET_2_0");
+		Console.WriteLine ("#if NET_2_0 && !NET_4_0");
 #endif
 
 		Console.WriteLine (@"

+ 133 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/TableTest.cs

@@ -117,7 +117,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 			TestTable t = new TestTable ();
 			t.Caption = "CaptionText";
 			string html = t.Render ();
+#if NET_4_0
+			string orig = "<table>\n\t<caption>\n\t\tCaptionText\n\t</caption>\n</table>";
+#else
 			string orig = "<table border=\"0\">\n\t<caption>\n\t\tCaptionText\n\t</caption>\n</table>";
+#endif
 			HtmlDiff.AssertAreEqual (orig, html, "Caption");
 		}
 
@@ -128,7 +132,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 			t.Caption = "CaptionText";
 			t.CaptionAlign = TableCaptionAlign.Left; 
 			string html = t.Render ();
+#if NET_4_0
+			string orig = "<table>\n\t<caption align=\"Left\">\n\t\tCaptionText\n\t</caption>\n</table>";
+#else
 			string orig = "<table border=\"0\">\n\t<caption align=\"Left\">\n\t\tCaptionText\n\t</caption>\n</table>";
+#endif
 			HtmlDiff.AssertAreEqual (orig, html, "CaptionAlign");
 		}
 #endif
@@ -249,16 +257,28 @@ namespace MonoTests.System.Web.UI.WebControls {
 		{
 			TestTable t = new TestTable ();
 			string s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n\n</table>", s, "empty/default");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n\n</table>", s, "empty/default");
+#endif
 
 			t.CellPadding = 1;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table cellpadding=\"1\">\n\n</table>", s, "CellPadding");
+#else
 			Assert.AreEqual ("<table cellpadding=\"1\" border=\"0\">\n\n</table>", s, "CellPadding");
+#endif
 			t.CellPadding = -1;
 
 			t.CellSpacing = 2;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table cellspacing=\"2\">\n\n</table>", s, "CellSpacing");
+#else
 			Assert.AreEqual ("<table cellspacing=\"2\" border=\"0\">\n\n</table>", s, "CellSpacing");
+#endif
 			t.CellSpacing = -1;
 
 			t.GridLines = GridLines.Horizontal;
@@ -274,60 +294,125 @@ namespace MonoTests.System.Web.UI.WebControls {
 
 			t.BorderWidth = new Unit (2);
 			s = t.Render ();
+#if NET_4_0
+			Assert.IsTrue ((s.IndexOf ("\"border-width:2px;border-style:solid;\"") > 0), "border=0/2");
+#else
 			Assert.IsTrue ((s.IndexOf ("border=\"0\"") > 0), "border=0/2");
+#endif
 			t.GridLines = GridLines.Horizontal;
 			s = t.Render ();
+#if NET_4_0
+			Console.WriteLine (s);
+			Assert.IsTrue ((s.IndexOf ("rules=\"rows\" style=\"border-width:2px;border-style:solid;\"") > 0), "2/GridLines.Horizontal");
+#else
 			Assert.IsTrue ((s.IndexOf ("rules=\"rows\" border=\"2\"") > 0), "2/GridLines.Horizontal");
+#endif
 			t.GridLines = GridLines.Vertical;
 			s = t.Render ();
+#if NET_4_0
+			Assert.IsTrue ((s.IndexOf ("rules=\"cols\" style=\"border-width:2px;border-style:solid;\"") > 0), "2/GridLines.Vertical");
+#else
 			Assert.IsTrue ((s.IndexOf ("rules=\"cols\" border=\"2\"") > 0), "2/GridLines.Vertical");
+#endif
 			t.GridLines = GridLines.Both;
 			s = t.Render ();
+#if NET_4_0
+			Assert.IsTrue ((s.IndexOf ("rules=\"all\" style=\"border-width:2px;border-style:solid;\"") > 0), "2/GridLines.Both");
+#else
 			Assert.IsTrue ((s.IndexOf ("rules=\"all\" border=\"2\"") > 0), "2/GridLines.Both");
+#endif
 			t.GridLines = GridLines.None;
 			t.BorderWidth = new Unit ();
 
 			t.HorizontalAlign = HorizontalAlign.Left;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table align=\"left\">\n\n</table>", s.ToLower (), "HorizontalAlign.Left");
+#else
 			Assert.AreEqual ("<table align=\"left\" border=\"0\">\n\n</table>", s.ToLower (), "HorizontalAlign.Left");
+#endif
 			t.HorizontalAlign = HorizontalAlign.Center;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table align=\"center\">\n\n</table>", s.ToLower (), "HorizontalAlign.Center");
+#else
 			Assert.AreEqual ("<table align=\"center\" border=\"0\">\n\n</table>", s.ToLower (), "HorizontalAlign.Center");
+#endif
 			t.HorizontalAlign = HorizontalAlign.Right;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table align=\"right\">\n\n</table>", s.ToLower (), "HorizontalAlign.Right");
+#else
 			Assert.AreEqual ("<table align=\"right\" border=\"0\">\n\n</table>", s.ToLower (), "HorizontalAlign.Right");
+#endif
 			t.HorizontalAlign = HorizontalAlign.Justify;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table align=\"justify\">\n\n</table>", s.ToLower (), "HorizontalAlign.Justify");
+#else
 			Assert.AreEqual ("<table align=\"justify\" border=\"0\">\n\n</table>", s.ToLower (), "HorizontalAlign.Justify");
+#endif
 			t.HorizontalAlign = HorizontalAlign.NotSet;
 
 			t.Caption = "mono";
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n\t<caption>\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n\t<caption>\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption");
+#endif
 
 			t.CaptionAlign = TableCaptionAlign.Top;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n\t<caption align=\"top\">\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption/Top");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n\t<caption align=\"top\">\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption/Top");
+#endif
 			t.CaptionAlign = TableCaptionAlign.Bottom;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n\t<caption align=\"bottom\">\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption/Bottom");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n\t<caption align=\"bottom\">\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption/Bottom");
+#endif
 			t.CaptionAlign = TableCaptionAlign.Right;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n\t<caption align=\"right\">\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption/Right");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n\t<caption align=\"right\">\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption/Right");
+#endif
 			t.CaptionAlign = TableCaptionAlign.Left;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n\t<caption align=\"left\">\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption/Left");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n\t<caption align=\"left\">\n\t\tmono\n\t</caption>\n</table>", s.ToLower (), "Caption/Left");
+#endif
 			t.Caption = null;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n\n</table>", s, "CaptionAlign without Caption");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n\n</table>", s, "CaptionAlign without Caption");
+#endif
 			t.CaptionAlign = TableCaptionAlign.NotSet;
 
 			t.BackImageUrl = imageUrl;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table style=\"background-image:url(http://www.mono-project.com/stylesheets/images.wiki.png);\">\n\n</table>", s, "BackImageUrl");
+#else
 			Assert.AreEqual ("<table border=\"0\" style=\"background-image:url(http://www.mono-project.com/stylesheets/images.wiki.png);\">\n\n</table>", s, "BackImageUrl");
+#endif
 			t.BackImageUrl = localImageUrl;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual ("<table style=\"background-image:url(foo.jpg);\">\n\n</table>", s, "BackImageUrl");
+#else
 			Assert.AreEqual ("<table border=\"0\" style=\"background-image:url(foo.jpg);\">\n\n</table>", s, "BackImageUrl");
+#endif
 			t.BackImageUrl = String.Empty;
 		}
 
@@ -338,7 +423,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 		{
 			WebTest t = new WebTest (PageInvoker.CreateOnLoad (RenderInAspxPage_OnLoad));
 			string res = t.Run ();
+#if NET_4_0
+			Assert.IsTrue (res.IndexOf ("<table id=\"MagicID_A1C3\" style=\"background-image:url(foo.jpg);\"") != -1, res);
+#else
 			Assert.IsTrue (res.IndexOf ("<table id=\"MagicID_A1C3\" border=\"0\" style=\"background-image:url(foo.jpg);\"")!= -1, res);
+#endif
 		}
 
 		public static void RenderInAspxPage_OnLoad (Page p)
@@ -393,19 +482,31 @@ namespace MonoTests.System.Web.UI.WebControls {
 			Assert.AreEqual (1, t.Rows.Count, "r1");
 			Assert.AreEqual (1, t.Controls.Count, "c1");
 			string s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual (Adjust ("<table>\n\t<tr>\n\n\t</tr>\n</table>"), Adjust (s), "tr-1");
+#else
 			Assert.AreEqual (Adjust ("<table border=\"0\">\n\t<tr>\n\n\t</tr>\n</table>"), Adjust (s), "tr-1");
+#endif
 
 			// change instance properties
 			tr.HorizontalAlign = HorizontalAlign.Justify;
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual (Adjust ("<table>\n\t<tr align=\"justify\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-1j");
+#else
 			Assert.AreEqual (Adjust ("<table border=\"0\">\n\t<tr align=\"justify\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-1j");
+#endif
 
 			// add it again (same instance)
 			t.Rows.Add (tr);
 			Assert.AreEqual (1, t.Rows.Count, "t1bis");
 			Assert.AreEqual (1, t.Controls.Count, "c1bis");
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual (Adjust ("<table>\n\t<tr align=\"justify\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-1bis");
+#else
 			Assert.AreEqual (Adjust ("<table border=\"0\">\n\t<tr align=\"justify\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-1bis");
+#endif
 			tr.HorizontalAlign = HorizontalAlign.NotSet;
 
 			tr = new TableRow ();
@@ -414,7 +515,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 			Assert.AreEqual (2, t.Rows.Count, "r2");
 			Assert.AreEqual (2, t.Controls.Count, "c2");
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual (Adjust ("<table>\n\t<tr>\n\n\t</tr><tr align=\"justify\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-2");
+#else
 			Assert.AreEqual (Adjust ("<table border=\"0\">\n\t<tr>\n\n\t</tr><tr align=\"justify\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-2");
+#endif
 
 			tr = new TableRow ();
 			tr.VerticalAlign = VerticalAlign.Bottom;
@@ -422,11 +527,19 @@ namespace MonoTests.System.Web.UI.WebControls {
 			Assert.AreEqual (3, t.Rows.Count, "r3");
 			Assert.AreEqual (3, t.Controls.Count, "c3");
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual (Adjust ("<table>\n\t<tr>\n\n\t</tr><tr align=\"justify\">\n\n\t</tr><tr valign=\"bottom\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-3");
+#else
 			Assert.AreEqual (Adjust ("<table border=\"0\">\n\t<tr>\n\n\t</tr><tr align=\"justify\">\n\n\t</tr><tr valign=\"bottom\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-3");
+#endif
 
 			t.Caption = "caption";
 			s = t.Render ();
+#if NET_4_0
+			Assert.AreEqual (Adjust ("<table>\n\t<caption>\n\t\tcaption\n\t</caption><tr>\n\n\t</tr><tr align=\"justify\">\n\n\t</tr><tr valign=\"bottom\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-2c");
+#else
 			Assert.AreEqual (Adjust ("<table border=\"0\">\n\t<caption>\n\t\tcaption\n\t</caption><tr>\n\n\t</tr><tr align=\"justify\">\n\n\t</tr><tr valign=\"bottom\">\n\n\t</tr>\n</table>"), Adjust (s), "tr-2c");
+#endif
 		}
 
 		[Test]
@@ -515,7 +628,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 			Table t = new Table ();
 			t.RenderBeginTag (writer);
 			string s = writer.InnerWriter.ToString ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n", s, "empty");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n", s, "empty");
+#endif
 		}
 
 		[Test]
@@ -526,7 +643,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 			t.CellPadding = 1;
 			t.RenderBeginTag (writer);
 			string s = writer.InnerWriter.ToString ();
+#if NET_4_0
+			Assert.AreEqual ("<table cellpadding=\"1\">\n", s, "CellPadding");
+#else
 			Assert.AreEqual ("<table cellpadding=\"1\" border=\"0\">\n", s, "CellPadding");
+#endif
 		}
 
 		[Test]
@@ -537,7 +658,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 			t.Caption = "caption";
 			t.RenderBeginTag (writer);
 			string s = writer.InnerWriter.ToString ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n\t<caption>\n\t\tcaption\n\t</caption>", s, "caption");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n\t<caption>\n\t\tcaption\n\t</caption>", s, "caption");
+#endif
 		}
 
 		[Test]
@@ -549,7 +674,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 			t.CaptionAlign = TableCaptionAlign.Top;
 			t.RenderBeginTag (writer);
 			string s = writer.InnerWriter.ToString ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n\t<caption align=\"top\">\n\t\tcaption\n\t</caption>", s.ToLower (), "caption");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n\t<caption align=\"top\">\n\t\tcaption\n\t</caption>", s.ToLower (), "caption");
+#endif
 		}
 
 		[Test]
@@ -560,7 +689,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 			t.Rows.Add (new TableRow ());
 			t.RenderBeginTag (writer);
 			string s = writer.InnerWriter.ToString ();
+#if NET_4_0
+			Assert.AreEqual ("<table>\n", s, "tr");
+#else
 			Assert.AreEqual ("<table border=\"0\">\n", s, "tr");
+#endif
 		}
 
 #if NET_2_0

+ 7 - 4
mcs/class/System.Web/Test/System.Web.UI.WebControls/TextBoxTest.cs

@@ -109,10 +109,10 @@ namespace MonoTests.System.Web.UI.WebControls {
 			Poker t = new Poker ();
 			t.TextMode = TextBoxMode.MultiLine;
 			t.Text = "</textarea>";
-#if NET_2_0
-			string exp = "<textarea rows=\"2\" cols=\"20\">&lt;/textarea&gt;</textarea>";
+#if NET_4_0
+			string exp = "<textarea rows=\"2\" cols=\"20\">\r\n&lt;/textarea&gt;</textarea>";
 #else
-			string exp = "<textarea name>&lt;/textarea&gt;</textarea>";
+			string exp = "<textarea rows=\"2\" cols=\"20\">&lt;/textarea&gt;</textarea>";
 #endif
 
 			HtmlDiff.AssertAreEqual(exp, t.Render (),"MultilineRenderEscape");
@@ -169,8 +169,11 @@ namespace MonoTests.System.Web.UI.WebControls {
 			t.ValidationGroup = "VG";
 			t.CausesValidation = true;
 			t.TextMode = TextBoxMode.MultiLine;
-
+#if NET_4_0
+			string exp = "<textarea rows=\"2\" cols=\"20\">\r\n</textarea>";
+#else
 			string exp = "<textarea rows=\"2\" cols=\"20\"></textarea>";
+#endif
 			HtmlDiff.AssertAreEqual (exp, t.Render (),"ValidationRender");
 		}
 

+ 8 - 3
mcs/class/System.Web/Test/standalone-runner-support/Helpers.cs

@@ -53,20 +53,25 @@ namespace StandAloneRunnerSupport
 		}
 
 		public static string StripWebResourceAxdQuery (string origHtml)
+		{
+			return StripWebResourceAxdQuery (StripWebResourceAxdQuery (origHtml, "\""), "&quot;");
+		}
+
+		static string StripWebResourceAxdQuery (string origHtml, string delimiter)
 		{
 			if (String.IsNullOrEmpty (origHtml))
 				return origHtml;
 			
 			// Naive approach, enough for now
-			int idx = origHtml.IndexOf ("\"/WebResource.axd");
+			int idx = origHtml.IndexOf (delimiter + "/WebResource.axd");
 			if (idx == -1)
 				return origHtml;
 
 			var sb = new StringBuilder ();
 			sb.Append (origHtml.Substring (0, idx));
-			sb.Append ('"');
+			sb.Append (delimiter);
 			idx++;
-			int idx2 = origHtml.IndexOf ("\"", idx);
+			int idx2 = origHtml.IndexOf (delimiter, idx);
 			string webRes;
 			sb.Append ("/WebResource.axd");
 			

+ 78 - 0
mcs/class/System.Web/Test/standalone-tests/ControlRenderingCompatibilityVersion.cs

@@ -0,0 +1,78 @@
+//
+// Authors:
+//   Marek Habersack ([email protected])
+//
+// (C) 2010 Novell, Inc http://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.
+//
+#if NET_4_0
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Web.Util;
+
+using StandAloneRunnerSupport;
+using StandAloneTests;
+
+using NUnit.Framework;
+
+namespace StandAloneTests.ControlRenderingCompatibilityVersion
+{
+	[TestCase ("ControlRenderingCompatibilityVersion", "PagesSection.ControlRenderingCompatibilityVersion")]
+	public sealed class Test_01 : ITestCase
+	{
+		public string PhysicalPath {
+			get { return Path.Combine (Consts.BasePhysicalDir, "ControlRenderingCompatibilityVersion"); }
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("Default.aspx", Default_Aspx));
+			runItems.Add (new TestRunItem ("LessThan3.5/Default.aspx", Default_Aspx_LessThan35));
+			runItems.Add (new TestRunItem ("MoreThan4.0/Default.aspx", Default_Aspx_MoreThan40));
+			return true;
+		}
+		
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "4.0 2.0";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+		
+		void Default_Aspx_LessThan35 (string result, TestRunItem runItem)
+		{
+			Assert.IsTrue (result.IndexOf ("[System.Configuration.ConfigurationErrorsException]") != -1, "#A1");
+		}
+
+		void Default_Aspx_MoreThan40 (string result, TestRunItem runItem)
+		{
+			string originalHtml = "5.0";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+}
+#endif

+ 103 - 0
mcs/class/System.Web/Test/standalone-tests/DisabledAttributeRendering.cs

@@ -0,0 +1,103 @@
+//
+// Authors:
+//   Marek Habersack ([email protected])
+//
+// (C) 2010 Novell, Inc http://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.
+//
+#if NET_4_0
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Web.Util;
+
+using StandAloneRunnerSupport;
+using StandAloneTests;
+
+using NUnit.Framework;
+
+namespace StandAloneTests.DisabledAttributeRendering
+{
+	[TestCase ("DisabledAttributeRendering 01", "4.0 does not render the 'disabled' attribute in default mode. Using default CSS class name.")]
+	public sealed class Test_01 : ITestCase
+	{
+		public string PhysicalPath {
+			get { return Path.Combine (Consts.BasePhysicalDir, "DisabledAttributeRendering", "DefaultClassName"); }
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("Default.aspx", Default_Aspx));
+			runItems.Add (new TestRunItem ("OldRendering/Default.aspx", OldRendering_Default_Aspx));
+			return true;
+		}
+		
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div class=\"aspNetDisabled MyClass\">\r\n\tI am disabled\r\n</div><a class=\"aspNetDisabled\">Disabled link</a>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+		
+		void OldRendering_Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div disabled=\"disabled\" class=\"MyClass\">\r\n\tI am disabled\r\n</div><a disabled=\"disabled\">Disabled link</a>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+
+	[TestCase ("DisabledAttributeRendering 02", "4.0 does not render the 'disabled' attribute in default mode. Using custom CSS class name.")]
+	public sealed class Test_02 : ITestCase
+	{
+		public string PhysicalPath {
+			get { return Path.Combine (Consts.BasePhysicalDir, "DisabledAttributeRendering", "CustomClassName"); }
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("Default.aspx", Default_Aspx));
+			runItems.Add (new TestRunItem ("OldRendering/Default.aspx", OldRendering_Default_Aspx));
+			return true;
+		}
+		
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div class=\"MyDisabledControlClass MyClass\">\r\n\tI am disabled\r\n</div><a class=\"MyDisabledControlClass\">Disabled link</a>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+		
+		void OldRendering_Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div disabled=\"disabled\" class=\"MyClass\">\r\n\tI am disabled\r\n</div><a disabled=\"disabled\">Disabled link</a>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+}
+#endif

+ 87 - 0
mcs/class/System.Web/Test/standalone-tests/GridViewShowHeaderWhenEmpty.cs

@@ -0,0 +1,87 @@
+//
+// Authors:
+//   Marek Habersack ([email protected])
+//
+// (C) 2010 Novell, Inc http://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.
+//
+#if NET_4_0
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Web.Util;
+
+using StandAloneRunnerSupport;
+using StandAloneTests;
+
+using NUnit.Framework;
+
+namespace StandAloneTests.GridViewShowHeaderWhenEmpty
+{
+	[TestCase ("GridViewShowHeaderWhenEmpty 01", "GridView.ShowHeaderWhenEmpty tests")]
+	public sealed class Test_01 : ITestCase
+	{
+		public string PhysicalPath {
+			get { return Path.Combine (Consts.BasePhysicalDir, "GridViewShowHeaderWhenEmpty"); }
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("Default.aspx", Default_Aspx));
+			runItems.Add (new TestRunItem ("NoHeaderAtAll.aspx", NoHeaderAtAll_Aspx));
+			runItems.Add (new TestRunItem ("NoHeaderWhenEmpty.aspx", NoHeaderWhenEmpty_Aspx));
+			runItems.Add (new TestRunItem ("WithHeaderWhenEmpty.aspx", WithHeaderWhenEmpty_Aspx));
+			
+			return true;
+		}
+		
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div>\r\n\r\n</div><pre id=\"log\"></pre>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+		
+		void NoHeaderAtAll_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div>\r\n\r\n</div><pre id=\"log\"></pre>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+
+		void NoHeaderWhenEmpty_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div>\r\n\r\n</div><pre id=\"log\"></pre>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+
+		void WithHeaderWhenEmpty_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ProductID</th><th scope=\"col\">ProductName</th><th scope=\"col\">ProductComment</th>\r\n\t\t</tr>\r\n\t</table>\r\n</div><pre id=\"log\">OnRowCreated called</pre>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+}
+#endif

+ 121 - 0
mcs/class/System.Web/Test/standalone-tests/GridViewSortingStyles.cs

@@ -0,0 +1,121 @@
+//
+// Authors:
+//   Marek Habersack ([email protected])
+//
+// (C) 2010 Novell, Inc http://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.
+//
+#if NET_4_0
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Web.Util;
+
+using StandAloneRunnerSupport;
+using StandAloneTests;
+
+using NUnit.Framework;
+
+namespace StandAloneTests.GridViewSortingStyles
+{
+	[TestCase ("GridViewSortingStyles 01", "GridView supports separate styles for headers/cells when sorting.")]
+	public sealed class Test_01 : ITestCase
+	{
+		public string PhysicalPath {
+			get { return Path.Combine (Consts.BasePhysicalDir, "GridViewSortingStyles"); }
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("Default.aspx", Default_Aspx));
+			runItems.Add (new TestRunItem ("Default.aspx", Default_Aspx_Ascending_ProductName) {
+					PostValues = new string[] {
+						"__EVENTTARGET", "GridView1",
+						"__EVENTARGUMENT", "Sort$ProductName"
+					},
+					UrlDescription = "Ascending sorting on ProductName"
+				}
+			);
+			runItems.Add (new TestRunItem ("Default.aspx", Default_Aspx_Descending_ProductName) {
+					PostValues = new string[] {
+						"__EVENTTARGET", "GridView1",
+						"__EVENTARGUMENT", "Sort$ProductName"
+					},
+					UrlDescription = "Descending sorting on ProductName"
+				}
+			);
+			runItems.Add (new TestRunItem ("Default.aspx", Default_Aspx_Ascending_ProductID) {
+					PostValues = new string[] {
+						"__EVENTTARGET", "GridView1",
+						"__EVENTARGUMENT", "Sort$ProductID"
+					},
+					UrlDescription = "Ascending sorting on ProductID"
+				}
+			);
+			runItems.Add (new TestRunItem ("Default.aspx", Default_Aspx_Descending_ProductID) {
+					PostValues = new string[] {
+						"__EVENTTARGET", "GridView1",
+						"__EVENTARGUMENT", "Sort$ProductID"
+					},
+					UrlDescription = "Descending sorting on ProductID"
+				}
+			);
+			return true;
+		}
+		
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductName&#39;)\">Name</a></th><th scope=\"col\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductID&#39;)\">ID</a></th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Pear</td><td>1</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Apple</td><td>2</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Orange</td><td>3</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+
+		void Default_Aspx_Ascending_ProductName (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\" style=\"background-color:Yellow;\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductName&#39;)\">Name</a></th><th scope=\"col\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductID&#39;)\">ID</a></th>\r\n\t\t</tr><tr>\r\n\t\t\t<td style=\"background-color:LightYellow;\">Apple</td><td>2</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td style=\"background-color:LightYellow;\">Orange</td><td>3</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td style=\"background-color:LightYellow;\">Pear</td><td>1</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+
+		void Default_Aspx_Descending_ProductName (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\" style=\"background-color:LightBlue;\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductName&#39;)\">Name</a></th><th scope=\"col\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductID&#39;)\">ID</a></th>\r\n\t\t</tr><tr>\r\n\t\t\t<td style=\"background-color:AliceBlue;\">Pear</td><td>1</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td style=\"background-color:AliceBlue;\">Orange</td><td>3</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td style=\"background-color:AliceBlue;\">Apple</td><td>2</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+
+		void Default_Aspx_Ascending_ProductID (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductName&#39;)\">Name</a></th><th scope=\"col\" style=\"background-color:Yellow;\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductID&#39;)\">ID</a></th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Pear</td><td style=\"background-color:LightYellow;\">1</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Apple</td><td style=\"background-color:LightYellow;\">2</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Orange</td><td style=\"background-color:LightYellow;\">3</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+
+		void Default_Aspx_Descending_ProductID (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductName&#39;)\">Name</a></th><th scope=\"col\" style=\"background-color:LightBlue;\"><a href=\"javascript:__doPostBack(&#39;GridView1&#39;,&#39;Sort$ProductID&#39;)\">ID</a></th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Orange</td><td style=\"background-color:AliceBlue;\">3</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Apple</td><td style=\"background-color:AliceBlue;\">2</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Pear</td><td style=\"background-color:AliceBlue;\">1</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+}
+#endif

+ 3 - 3
mcs/class/System.Web/Test/standalone-tests/SiteMapDuplicateEntries_Bug570194.cs

@@ -60,19 +60,19 @@ namespace StandAloneTests.SiteMapDuplicateEntries_Bug570194
 
 		void Default_Aspx (string result, TestRunItem runItem)
 		{
-			string originalHtml = @"<span><a href=""#ctl03_SkipLink""><img height=""0"" width=""0"" src=""/WebResource.axd"" alt=""Skip Navigation Links"" style=""border-width:0px;"" /></a><span><a href=""/Default.aspx"">Main</a></span><a id=""ctl03_SkipLink""></a></span>";
+			string originalHtml = "<span><a href=\"#ctl03_SkipLink\"><img alt=\"Skip Navigation Links\" height=\"0\" width=\"0\" src=\"/WebResource.axd\" style=\"border-width:0px;\" /></a><span><a href=\"/Default.aspx\">Main</a></span><a id=\"ctl03_SkipLink\"></a></span>";
 			Helpers.ExtractAndCompareCodeFromHtml (Helpers.StripWebResourceAxdQuery (result), originalHtml, "#A1");
 		}
 
 		void Default_Foo_Aspx (string result, TestRunItem runItem)
 		{
-			string originalHtml = @"<span><a href=""#ctl03_SkipLink""><img height=""0"" width=""0"" src=""/WebResource.axd"" alt=""Skip Navigation Links"" style=""border-width:0px;"" /></a><span><a href=""/Default.aspx"">Main</a></span><span> > </span><span><a href=""/Default.aspx?mode=foo"">Foo</a></span><a id=""ctl03_SkipLink""></a></span>";
+			string originalHtml = "<span><a href=\"#ctl03_SkipLink\"><img alt=\"Skip Navigation Links\" height=\"0\" width=\"0\" src=\"/WebResource.axd\" style=\"border-width:0px;\" /></a><span><a href=\"/Default.aspx\">Main</a></span><span> &gt; </span><span><a href=\"/Default.aspx?mode=foo\">Foo</a></span><a id=\"ctl03_SkipLink\"></a></span>";
 			Helpers.ExtractAndCompareCodeFromHtml (Helpers.StripWebResourceAxdQuery (result), originalHtml, "#A1");
 		}
 
 		void Default_Bar_Aspx (string result, TestRunItem runItem)
 		{
-			string originalHtml = @"<span><a href=""#ctl03_SkipLink""><img height=""0"" width=""0"" src=""/WebResource.axd"" alt=""Skip Navigation Links"" style=""border-width:0px;"" /></a><span><a href=""/Default.aspx"">Main</a></span><span> > </span><span><a href=""/Default.aspx?mode=bar"">Bar</a></span><a id=""ctl03_SkipLink""></a></span>";
+			string originalHtml = "<span><a href=\"#ctl03_SkipLink\"><img alt=\"Skip Navigation Links\" height=\"0\" width=\"0\" src=\"/WebResource.axd\" style=\"border-width:0px;\" /></a><span><a href=\"/Default.aspx\">Main</a></span><span> &gt; </span><span><a href=\"/Default.aspx?mode=bar\">Bar</a></span><a id=\"ctl03_SkipLink\"></a></span>";
 			Helpers.ExtractAndCompareCodeFromHtml (Helpers.StripWebResourceAxdQuery (result), originalHtml, "#A1");
 		}
 	}

+ 79 - 0
mcs/class/System.Web/Test/standalone-tests/SiteMapPathRendering.cs

@@ -0,0 +1,79 @@
+//
+// Authors:
+//   Marek Habersack ([email protected])
+//
+// (C) 2010 Novell, Inc http://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.
+//
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Web;
+using System.Web.Hosting;
+
+using StandAloneRunnerSupport;
+using StandAloneTests;
+
+using NUnit.Framework;
+
+namespace StandAloneTests.SiteMapPathRendering
+{
+	[TestCase ("SiteMapPathRendering", "SiteMapPath does not use child controls when rendering.")]
+	public sealed class SiteMapPathRendering_01 : ITestCase
+	{
+		public string PhysicalPath {
+			get { return Path.Combine (Consts.BasePhysicalDir, "SiteMapPathRendering"); }
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/Default.aspx", Default_Aspx));
+			runItems.Add (new TestRunItem ("/Default.aspx?mode=foo", Default_Foo_Aspx));
+			runItems.Add (new TestRunItem ("/Default.aspx?mode=bar", Default_Bar_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<span id=\"sitemap\"><a href=\"#sitemap_SkipLink\"><img alt=\"Skip Navigation Links\" height=\"0\" width=\"0\" src=\"/WebResource.axd\" style=\"border-width:0px;\" /></a><span><a href=\"/Default.aspx\">Main</a></span><a id=\"sitemap_SkipLink\"></a></span><pre id=\"log\">\tSystem.Web.UI.WebControls.SiteMapNodeItem [sitemap$ctl00]\r\n\tSystem.Web.UI.WebControls.HyperLink [sitemap$ctl00$ctl00]\r\n</pre>";
+			Helpers.ExtractAndCompareCodeFromHtml (Helpers.StripWebResourceAxdQuery (result), originalHtml, "#A1");
+		}
+
+		void Default_Foo_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<span id=\"sitemap\"><a href=\"#sitemap_SkipLink\"><img alt=\"Skip Navigation Links\" height=\"0\" width=\"0\" src=\"/WebResource.axd\" style=\"border-width:0px;\" /></a><span><a href=\"/Default.aspx\">Main</a></span><span> &gt; </span><span><a href=\"/Default.aspx?mode=foo\">Foo</a></span><a id=\"sitemap_SkipLink\"></a></span><pre id=\"log\">\tSystem.Web.UI.WebControls.SiteMapNodeItem [sitemap$ctl00]\r\n\tSystem.Web.UI.WebControls.HyperLink [sitemap$ctl00$ctl00]\r\n\tSystem.Web.UI.WebControls.SiteMapNodeItem [sitemap$ctl01]\r\n\tSystem.Web.UI.WebControls.Literal [sitemap$ctl01$ctl00]\r\n\tSystem.Web.UI.WebControls.SiteMapNodeItem [sitemap$ctl02]\r\n\tSystem.Web.UI.WebControls.HyperLink [sitemap$ctl02$ctl00]\r\n</pre>";
+			Helpers.ExtractAndCompareCodeFromHtml (Helpers.StripWebResourceAxdQuery (result), originalHtml, "#A1");
+		}
+
+		void Default_Bar_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<span id=\"sitemap\"><a href=\"#sitemap_SkipLink\"><img alt=\"Skip Navigation Links\" height=\"0\" width=\"0\" src=\"/WebResource.axd\" style=\"border-width:0px;\" /></a><span><a href=\"/Default.aspx\">Main</a></span><span> &gt; </span><span><a href=\"/Default.aspx?mode=bar\">Bar</a></span><a id=\"sitemap_SkipLink\"></a></span><pre id=\"log\">\tSystem.Web.UI.WebControls.SiteMapNodeItem [sitemap$ctl00]\r\n\tSystem.Web.UI.WebControls.HyperLink [sitemap$ctl00$ctl00]\r\n\tSystem.Web.UI.WebControls.SiteMapNodeItem [sitemap$ctl01]\r\n\tSystem.Web.UI.WebControls.Literal [sitemap$ctl01$ctl00]\r\n\tSystem.Web.UI.WebControls.SiteMapNodeItem [sitemap$ctl02]\r\n\tSystem.Web.UI.WebControls.HyperLink [sitemap$ctl02$ctl00]\r\n</pre>";
+			Helpers.ExtractAndCompareCodeFromHtml (Helpers.StripWebResourceAxdQuery (result), originalHtml, "#A1");
+		}
+	}
+}

+ 5 - 1
mcs/class/System.Web/Test/standalone-tests/WebControlsMustUseIsEnabled_Bug571715.cs

@@ -58,7 +58,11 @@ namespace StandAloneTests.WebControlsMustUseIsEnabled_Bug571715
 
 		void Default_Aspx (string result, TestRunItem runItem)
 		{
-			string originalHtml = "<div>\r\n	<table id=\"GridView1\" cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">\r\n			<tr>\r\n				<th scope=\"col\">ID</th><th scope=\"col\">FULLNAME</th><th scope=\"col\">&nbsp;</th>\r\n			</tr><tr>\r\n				<td>1</td><td>Sheryl Hunter</td><td align=\"left\" style=\"width:60px;\"><input type=\"submit\" name=\"GridView1$ctl02$DeleteBtn\" value=\"Delete\" id=\"GridView1_ctl02_DeleteBtn\" /></td>\r\n			</tr><tr>\r\n				<td>2</td><td>Dean Straight</td><td disabled=\"disabled\" align=\"left\" style=\"width:60px;\"><input type=\"submit\" name=\"GridView1$ctl03$DeleteBtn\" value=\"Delete\" id=\"GridView1_ctl03_DeleteBtn\" disabled=\"disabled\" /></td>\r\n			</tr><tr>\r\n				<td>3</td><td>Marjorie Green</td><td align=\"left\" style=\"width:60px;\"><input type=\"submit\" name=\"GridView1$ctl04$DeleteBtn\" value=\"Delete\" id=\"GridView1_ctl04_DeleteBtn\" /></td>\r\n			</tr>\r\n		</table>\r\n	</div>";
+#if NET_4_0
+			string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ID</th><th scope=\"col\">FULLNAME</th><th scope=\"col\">&nbsp;</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1</td><td>Sheryl Hunter</td><td align=\"left\" style=\"width:60px;\"><input type=\"submit\" name=\"GridView1$ctl02$DeleteBtn\" value=\"Delete\" id=\"GridView1_DeleteBtn_0\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>2</td><td>Dean Straight</td><td class=\"aspNetDisabled\" align=\"left\" style=\"width:60px;\"><input type=\"submit\" name=\"GridView1$ctl03$DeleteBtn\" value=\"Delete\" disabled=\"disabled\" id=\"GridView1_DeleteBtn_1\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>3</td><td>Marjorie Green</td><td align=\"left\" style=\"width:60px;\"><input type=\"submit\" name=\"GridView1$ctl04$DeleteBtn\" value=\"Delete\" id=\"GridView1_DeleteBtn_2\" /></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#else
+			string originalHtml = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"GridView1\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ID</th><th scope=\"col\">FULLNAME</th><th scope=\"col\">&nbsp;</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1</td><td>Sheryl Hunter</td><td align=\"left\" style=\"width:60px;\"><input type=\"submit\" name=\"GridView1$ctl02$DeleteBtn\" value=\"Delete\" id=\"GridView1_ctl02_DeleteBtn\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>2</td><td>Dean Straight</td><td disabled=\"disabled\" align=\"left\" style=\"width:60px;\"><input type=\"submit\" name=\"GridView1$ctl03$DeleteBtn\" value=\"Delete\" disabled=\"disabled\" id=\"GridView1_ctl03_DeleteBtn\" /></td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>3</td><td>Marjorie Green</td><td align=\"left\" style=\"width:60px;\"><input type=\"submit\" name=\"GridView1$ctl04$DeleteBtn\" value=\"Delete\" id=\"GridView1_ctl04_DeleteBtn\" /></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
+#endif
 			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
 		}
 	}

+ 16 - 0
mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/Default.aspx

@@ -0,0 +1,16 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
+
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    ControlRenderingCompatibilityVersion: <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><%= GetVersion () %> <%= SetAndGetVersion (2, 0) %><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 29 - 0
mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/Default.aspx.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Configuration;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+public partial class _Default : System.Web.UI.Page
+{
+	protected void Page_Load (object sender, EventArgs e)
+	{
+
+	}
+
+	protected string GetVersion ()
+	{
+		var ps = WebConfigurationManager.GetSection ("system.web/pages") as PagesSection;
+
+		
+		return ps.ControlRenderingCompatibilityVersion.ToString ();
+	}
+
+	protected string SetAndGetVersion (int major, int minor)
+	{
+		RenderingCompatibility = new Version (major, minor);
+		return RenderingCompatibility.ToString ();
+	}
+}

+ 16 - 0
mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/LessThan3.5/Default.aspx

@@ -0,0 +1,16 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
+
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    ControlRenderingCompatibilityVersion: <%= GetVersion () %>
+    </div>
+    </form>
+</body>
+</html>

+ 22 - 0
mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/LessThan3.5/Default.aspx.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Configuration;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+public partial class _Default : System.Web.UI.Page
+{
+	protected void Page_Load (object sender, EventArgs e)
+	{
+
+	}
+
+	protected string GetVersion ()
+	{
+		var ps = WebConfigurationManager.GetSection ("system.web/pages") as PagesSection;
+
+		return ps.ControlRenderingCompatibilityVersion.ToString ();
+	}
+}

+ 7 - 0
mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/LessThan3.5/web.config

@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<configuration>
+	<system.web>
+		<compilation debug="true" targetFramework="4.0" />
+		<pages controlRenderingCompatibilityVersion="2.0"/>
+	</system.web>
+</configuration>

+ 16 - 0
mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/MoreThan4.0/Default.aspx

@@ -0,0 +1,16 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
+
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    ControlRenderingCompatibilityVersion: <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><%= GetVersion () %><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 22 - 0
mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/MoreThan4.0/Default.aspx.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Configuration;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+public partial class _Default : System.Web.UI.Page
+{
+	protected void Page_Load (object sender, EventArgs e)
+	{
+
+	}
+
+	protected string GetVersion ()
+	{
+		var ps = WebConfigurationManager.GetSection ("system.web/pages") as PagesSection;
+
+		return ps.ControlRenderingCompatibilityVersion.ToString ();
+	}
+}

+ 7 - 0
mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/MoreThan4.0/web.config

@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<configuration>
+	<system.web>
+		<compilation debug="true" targetFramework="4.0" />
+		<pages controlRenderingCompatibilityVersion="5.0"/>
+	</system.web>
+</configuration>

+ 6 - 0
mcs/class/System.Web/Test/standalone/ControlRenderingCompatibilityVersion/web.config

@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<configuration>
+	<system.web>
+		<compilation debug="true" targetFramework="4.0" />
+	</system.web>
+</configuration>

+ 16 - 0
mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/Default.aspx

@@ -0,0 +1,16 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:Panel runat="server" Enabled="false" CssClass="MyClass">I am disabled</asp:Panel><asp:LinkButton runat="server" Enabled="false" Text="Disabled link" PostBackUrl="~/Default.aspx"/><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 7 - 0
mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/Global.asax

@@ -0,0 +1,7 @@
+<%@ Application Language="C#" %>
+<script RunAt="server">
+	void Application_Start (object sender, EventArgs e)
+	{
+		WebControl.DisabledCssClass = "MyDisabledControlClass";
+	}   
+</script>

+ 16 - 0
mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/OldRendering/Default.aspx

@@ -0,0 +1,16 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:Panel runat="server" Enabled="false" CssClass="MyClass">I am disabled</asp:Panel><asp:LinkButton runat="server" Enabled="false" Text="Disabled link" PostBackUrl="~/Default.aspx"/><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 7 - 0
mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/OldRendering/web.config

@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<configuration>
+	<system.web>
+		<compilation debug="true" targetFramework="4.0" />
+		<pages controlRenderingCompatibilityVersion="3.5"/>
+	</system.web>
+</configuration>

+ 6 - 0
mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/CustomClassName/web.config

@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<configuration>
+    <system.web>
+        <compilation debug="true" targetFramework="4.0" />
+    </system.web>
+</configuration>

+ 16 - 0
mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/DefaultClassName/Default.aspx

@@ -0,0 +1,16 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:Panel runat="server" Enabled="false" CssClass="MyClass">I am disabled</asp:Panel><asp:LinkButton runat="server" Enabled="false" Text="Disabled link" PostBackUrl="~/Default.aspx"/><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 16 - 0
mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/DefaultClassName/OldRendering/Default.aspx

@@ -0,0 +1,16 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:Panel runat="server" Enabled="false" CssClass="MyClass">I am disabled</asp:Panel><asp:LinkButton runat="server" Enabled="false" Text="Disabled link" PostBackUrl="~/Default.aspx"/><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 7 - 0
mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/DefaultClassName/OldRendering/web.config

@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<configuration>
+	<system.web>
+		<compilation debug="true" targetFramework="4.0" />
+		<pages controlRenderingCompatibilityVersion="3.5"/>
+	</system.web>
+</configuration>

+ 6 - 0
mcs/class/System.Web/Test/standalone/DisabledAttributeRendering/DefaultClassName/web.config

@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<configuration>
+    <system.web>
+        <compilation debug="true" targetFramework="4.0" />
+    </system.web>
+</configuration>

+ 11 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/App_Code/TestData.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+public class TestData
+{
+	public string ProductID { get; set; }
+	public string ProductName { get; set; }
+	public string ProductComment { get; set; }
+}

+ 15 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/Default.aspx

@@ -0,0 +1,15 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="true" OnRowCreated="GridView1_RowCreated"/><pre runat="server" id="log" /><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 22 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/Default.aspx.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+public partial class _Default : System.Web.UI.Page
+{
+	protected void Page_Load (object sender, EventArgs e)
+	{
+		var data = new List<TestData> ();
+
+		GridView1.DataSource = data;
+		GridView1.DataBind ();
+	}
+
+	protected void GridView1_RowCreated (object sender, GridViewRowEventArgs args)
+	{
+		log.InnerText = "OnRowCreated called";
+	}
+}

+ 15 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/NoHeaderAtAll.aspx

@@ -0,0 +1,15 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NoHeaderAtAll.aspx.cs" Inherits="NoHeaderAtAll" %>
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="true" ShowHeader="false" ShowHeaderWhenEmpty="true" OnRowCreated="GridView1_RowCreated"/><pre runat="server" id="log" /><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 22 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/NoHeaderAtAll.aspx.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+public partial class NoHeaderAtAll : System.Web.UI.Page
+{
+	protected void Page_Load (object sender, EventArgs e)
+	{
+		var data = new List<TestData> ();
+
+		GridView1.DataSource = data;
+		GridView1.DataBind ();
+	}
+
+	protected void GridView1_RowCreated (object sender, GridViewRowEventArgs args)
+	{
+		log.InnerText = "OnRowCreated called";
+	}
+}

+ 15 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/NoHeaderWhenEmpty.aspx

@@ -0,0 +1,15 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NoHeaderWhenEmpty.aspx.cs" Inherits="NoHeaderWhenEmpty" %>
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="true" ShowHeaderWhenEmpty="false" OnRowCreated="GridView1_RowCreated"/><pre runat="server" id="log" /><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 22 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/NoHeaderWhenEmpty.aspx.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+public partial class NoHeaderWhenEmpty : System.Web.UI.Page
+{
+	protected void Page_Load (object sender, EventArgs e)
+	{
+		var data = new List<TestData> ();
+
+		GridView1.DataSource = data;
+		GridView1.DataBind ();
+	}
+
+	protected void GridView1_RowCreated (object sender, GridViewRowEventArgs args)
+	{
+		log.InnerText = "OnRowCreated called";
+	}
+}

+ 15 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/WithHeaderWhenEmpty.aspx

@@ -0,0 +1,15 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WithHeaderWhenEmpty.aspx.cs" Inherits="WithHeaderWhenEmpty" %>
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="true" ShowHeaderWhenEmpty="true" OnRowCreated="GridView1_RowCreated"/><pre runat="server" id="log" /><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </div>
+    </form>
+</body>
+</html>

+ 22 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/WithHeaderWhenEmpty.aspx.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+public partial class WithHeaderWhenEmpty : System.Web.UI.Page
+{
+	protected void Page_Load (object sender, EventArgs e)
+	{
+		var data = new List<TestData> ();
+
+		GridView1.DataSource = data;
+		GridView1.DataBind ();
+	}
+
+	protected void GridView1_RowCreated (object sender, GridViewRowEventArgs args)
+	{
+		log.InnerText = "OnRowCreated called";
+	}
+}

+ 10 - 0
mcs/class/System.Web/Test/standalone/GridViewShowHeaderWhenEmpty/web.config

@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!--
+  For more information on how to configure your ASP.NET application, please visit
+  http://go.microsoft.com/fwlink/?LinkId=169433
+  -->
+<configuration>
+	<system.web>
+		<compilation debug="true" targetFramework="4.0"/>
+	</system.web>
+</configuration>

+ 10 - 0
mcs/class/System.Web/Test/standalone/GridViewSortingStyles/App_Code/TestData.cs

@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+public class TestData
+{
+	public string ProductID { get; set; }
+	public string ProductName { get; set; }
+}

+ 39 - 0
mcs/class/System.Web/Test/standalone/GridViewSortingStyles/App_Code/TestDataComparer.cs

@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+public class TestDataComparer : IComparer<TestData>
+{
+	bool byID;
+	bool ascending;
+
+	public TestDataComparer (bool byID, bool ascending)
+	{
+		this.byID = byID;
+		this.ascending = ascending;
+	}
+
+	public int Compare (TestData x, TestData y)
+	{
+		if (x == null) {
+			if (y == null)
+				return 0;
+			else
+				return -1;
+		}
+
+		if (y == null)
+			return 1;
+
+		if (byID) {
+			int xid = Int32.Parse (x.ProductID);
+			int yid = Int32.Parse (y.ProductID);
+
+			return ascending ? xid - yid : yid - xid;
+		} else {
+			int ret = String.Compare (x.ProductName, y.ProductName);
+			return ascending ? ret : -ret;
+		}
+	}
+}

+ 46 - 0
mcs/class/System.Web/Test/standalone/GridViewSortingStyles/App_Code/TestDatabase.cs

@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+public class TestDatabase
+{
+	List <TestData> data = new List<TestData> {
+		new TestData { ProductID="1", ProductName="Pear"},
+		new TestData { ProductID="2", ProductName="Apple"},
+		new TestData { ProductID="3", ProductName="Orange"}
+	};
+
+	public List<TestData> GetData (string sortExpression)
+	{
+		if (String.IsNullOrEmpty (sortExpression))
+			return data;
+
+		bool ascending;
+		string field;
+		int subtract;
+
+		if (sortExpression.EndsWith (" desc", StringComparison.OrdinalIgnoreCase)) {
+			ascending = false;
+			subtract = 5;
+		} else {
+			ascending = true;
+			subtract = 0;
+		}
+
+		if (subtract == 0)
+			field = sortExpression;
+		else
+			field = sortExpression.Substring (0, sortExpression.Length - subtract);
+
+		TestDataComparer comparer;
+		if (String.Compare (field, "ProductName", StringComparison.OrdinalIgnoreCase) == 0)
+			comparer = new TestDataComparer (false, ascending);
+		else
+			comparer = new TestDataComparer (true, ascending);
+
+		data.Sort (comparer);
+
+		return data;
+	}
+}

+ 24 - 0
mcs/class/System.Web/Test/standalone/GridViewSortingStyles/Default.aspx

@@ -0,0 +1,24 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
+
+<!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></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div><%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:GridView id="GridView1" runat="server" AutoGenerateColumns="false" AllowSorting="true" DataSourceID="dataSource1"
+	SortedAscendingCellStyle-BackColor="LightYellow" SortedAscendingHeaderStyle-BackColor="Yellow"
+	SortedDescendingCellStyle-BackColor="AliceBlue" SortedDescendingHeaderStyle-BackColor="LightBlue">
+	<Columns>
+		<asp:BoundField SortExpression="ProductName" DataField="ProductName" HeaderText="Name" />
+		<asp:BoundField SortExpression="ProductID" DataField="ProductID" HeaderText="ID" />
+	</Columns>
+    </asp:GridView><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    <asp:ObjectDataSource ID="dataSource1" runat="server" TypeName="TestDatabase" SelectMethod="GetData"
+			  DataObjectTypeName="TestData" SortParameterName="sortExpression" />
+    </div>
+    </form>
+</body>
+</html>

+ 13 - 0
mcs/class/System.Web/Test/standalone/GridViewSortingStyles/Default.aspx.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+public partial class _Default : System.Web.UI.Page
+{
+	protected void Page_Load (object sender, EventArgs e)
+	{
+	}
+}

+ 10 - 0
mcs/class/System.Web/Test/standalone/GridViewSortingStyles/web.config

@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!--
+  For more information on how to configure your ASP.NET application, please visit
+  http://go.microsoft.com/fwlink/?LinkId=169433
+  -->
+<configuration>
+	<system.web>
+		<compilation debug="true" targetFramework="4.0"/>
+	</system.web>
+</configuration>

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio