<!doctype HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN">

<html>

<head>

	<title>Web Browser Web View (HTML): Table</title>

	<meta name="GENERATOR" CONTENT="Mozilla/3.0 (Win95; I) [Netscape]">

</head>



<body bgcolor=FFDEAD TEXT="000000">
If there is missing vertical space between tables and/or tables and other content, it is bug 6997.
<BR>
<h1><font color=#FF0000>Acceptance Test Case<br>Web Browser: Web View (HTML)</font></h1>

<p>

<font color=#FF0000 size=+2><b>Table: &lt;TR&gt; ALIGN</b></font>



<hr>

This acceptance test case tests the optional <b>&lt;TR&gt;</b> tag <b>ALIGN</b> attribute which controls the 

horizontal alignment of all the cells in a row. This cause the contents of each cell in the row to be aligned 

either LEFT|CENTER|RIGHT with respect to the current left and right margins of the display window. 

The <b>Header</b> cells by default are aligned <b>CENTER</b> while the <b>Data</b> cells by default are aligned <b>LEFT</b>.

<p>

<b>Test Instructions:</b>

<ol>

<li>Verify that the sample text displays as stated in each of the following test cases:</li>

	<p>

	<table bgcolor=#F08080 cellpadding=7>

	<tr>

		<td><a href="wa_table_tr_align.html#TestCase_1">Test Case #1</a></td>

		<td><font color=blue><b>Table displaying Header "CENTER "& Data "LEFT" default horizontal row alignment</b></font></td>

	</tr>

	<tr>

		<td><a href="wa_table_tr_align.html#TestCase_2">Test Case #2</a></td>

		<td><font color=blue><b>Tables displaying Header & Data "LEFT|CENTER|RIGHT" horizontal row alignment</b></font></td>

	</tr>

	</table>

<p>

<li>Verify that the table is maintained when you <b>minimize/maximize</b> the screen.</li>

<li>Verify that the table is maintained when you <b>re-size left & right</b> the screen.</li>

<li>Verify that the table is maintained when you <b>re-size top & bottom</b> the screen.</li>

<li>Verify re-draw takes place correctly after maximizing the screen.</li>

<li>Verify reload works.</li>

</ol>



<hr>

<p>

<table border=1 bgcolor=lightcoral cellpadding=10>

<tr><th>

<A NAME="TestCase_1"></A>Test Case #1: <font color=blue>Table displaying Header "CENTER "& Data "LEFT" default horizontal row alignment</font> 

<font size=-1><i>(using &ltTR&gt tag)</i></font>

</th></tr>

</table>

<p>

<table border bgcolor=bisque width=45%>

<caption align=top>Default Horizontal Row Alignment</caption>

<tr><th>row head 1</th><th>row head 2</th><th>row head 3</th></tr>

<tr><td>row data 1</td><td>row data 2</td><td>row data 3</td></tr>

</table>



<hr>

<p>

<table border=1 bgcolor=lightcoral cellpadding=10>

<tr><th>

<A NAME="TestCase_2"></A>Test Case #2: <font color=blue>Tables displaying Header & Data "LEFT|CENTER|RIGHT" horizontal row alignment</font> 

<font size=-1><i>(using &ltTR ALIGN=LEFT|CENTER|RIGHT&gt tag)</i></font>

</th></tr>

</table>




<p>


<table border bgcolor=bisque width=45%>


<caption align=top>Horizontal Row Alignment=LEFT</caption>


<tr align=left><th>row head 1</th><th>row head 2</th><th>row head 3</th></tr>

<tr align=left><td>row data 1</td><td>row data 2</td><td>row data 3</td></tr>


</tr>

<tr bgcolor=gold><td colspan=3>

<b><font color=red>

Note: The attribute <font color=blue>ALIGN=LEFT</font> has no special effect on the row data since it simply reiterates the default horizontal row alignment!

<p></font></b>

</td></tr>

</table>




<p>

<table border bgcolor=bisque width=45%>

<caption align=top>Horizontal Row Alignment=CENTER</caption>

<tr align=center><th>row head 1</th><th>row head 2</th><th>row head 3</th></tr>

<tr align=center><td>row data 1</td><td>row data 2</td><td>row data 3</td></tr>

<tr bgcolor=gold><td colspan=3>

<b><font color=red>

Note: The attribute <font color=blue>ALIGN=CENTER</font> has no special effect on the row head since it simply reiterates the default horizontal row alignment!

<p></font></b>

</td></tr>

</table>



<p>

<table border bgcolor=bisque width=45%>

<caption align=top>Horizontal Row Alignment=RIGHT</caption>

<tr align=right><th>row head 1</th><th>row head 2</th><th>row head 3</th></tr>

<tr align=right><td>row data 1</td><td>row data 2</td><td>row data 3</td></tr>

</table>



<p>	

<hr>

<img width=13 height=13 src="../images/raptor.jpg"> Created 9/9/96 by <a href="mailto:ronaldg@netscape.com">Ronald Greti</a><br>

<p>

<br><p>

<!-- ***** BEGIN LICENSE BLOCK *****
   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
   -
   - The contents of this file are subject to the Mozilla Public License Version
   - 1.1 (the "License"); you may not use this file except in compliance with
   - the License. You may obtain a copy of the License at
   - http://www.mozilla.org/MPL/
   -
   - Software distributed under the License is distributed on an "AS IS" basis,
   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
   - for the specific language governing rights and limitations under the
   - License.
   -
   - The Original Code is table tests.
   
   - The Initial Developer of the Original Code is
   - Netscape Communications Corp.
   - Portions created by the Initial Developer are Copyright (C) 1996
   - the Initial Developer. All Rights Reserved.
   -
   - Contributor(s):
   -
   - Alternatively, the contents of this file may be used under the terms of
   - either the GNU General Public License Version 2 or later (the "GPL"), or
   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
   - in which case the provisions of the GPL or the LGPL are applicable instead
   - of those above. If you wish to allow use of your version of this file only
   - under the terms of either the GPL or the LGPL, and not to allow others to
   - use your version of this file under the terms of the MPL, indicate your
   - decision by deleting the provisions above and replace them with the notice
   - and other provisions required by the LGPL or the GPL. If you do not delete
   - the provisions above, a recipient may use your version of this file under
   - the terms of any one of the MPL, the GPL or the LGPL.
   -
   - ***** END LICENSE BLOCK ***** -->

</body>

</html>



