<!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>



