<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<title> nsIAccessible Interface Test Case </title>
<!-- Descrpt: Test nsIAccessible Interface attributes and methods
     for HTML Radio Button Node
     Author: dsirnapalli@netscape.com
     Revs: 01.18.02 - Created
     Last Run On:02.21.02.

   - 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 Mozilla Communicator Test Cases.
   -
   - The Initial Developer of the Original Code is Netscape Communications
   - Corp.  Portions created by Netscape Communications Corp. are
   - Copyright (C) 1999 Netscape Communications Corp.  All
   - Rights Reserved.
   -
   - Contributor(s):
  -->
<head>

<!-- script below is ngdriverspecific  -->
<script type="text/javascript" src="http://bubblegum/ngdriver/suites/testlib.js">
</script>

<script type="text/javascript" src="accesslib.js"></script>

<script type="text/javascript">

function getDomNodeRadioButton()
{
 try{
  netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

  var node = document.getElementsByTagName("form").item(1);
  arr = new Array(5);
  arr = node.elements;
  return arr[0];
 }
 catch(e){
  alert("Exception: " + e);
 }
}

function executeTestCase()
{
  var domNode = getDomNodeRadioButton();
  if(domNode == null)
  {
    res = res + "Could not get the DOM Node";
    submitToCookie();
  }
  else
  {//else1
    accNode = getAccessibleNode(domNode);
    tempaccNode = accNode;
    if(accNode == "Exception")
    {
      res = res + "The Node you selected is not an Accessible Node";
      submitToCookie();
    }
    else
    {
      try{
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

        // Here we are telling the accessible node to get focus.We had to call constructResults
        // after some time interval because it actually takes some time for the accessible
        // node to get focus. Before checking pass fail criteria in constructResults method
        // we had to give some time for the node to get focus.
        accNode.accTakeFocus();
        setTimeout("constructResults();", 2000);
      }
      catch(e){
        alert("Exception**: " + e);
      }
    }//else2
  }
}

function constructResults()
{
 try{
   netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
   netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

   // originally we stored the accNode in tempaccNode.
   // Below code is used to check where the focus actually is.
   // accNode.accFocused returns an accessible node. on that accessible node when you call
   // accGetDOMNode it will return the corresponding dom node. if that dom node and
   // tempaccNode's dom node is same, that mean focus is on the node we expected it to be on.
   if(tempaccNode.accGetDOMNode() == accNode.accFocused.accGetDOMNode())
   {
     varaccFocused = "Focused";
   }
   else
   {
     varaccFocused = "Not Focused";
   }

   var name = getName();
   var role = getRole();
   var state = getState();
   var value = getValue();
   var newvalue = value.toString();
   var numActions = getNumActions();
   if(numActions > 1)
     alert("When i last modified the test case numActions was 1. Now numActions is more than 1. Add tests for other numActions");
   var actionName = getActionName();
   var action = doAction();

   var expectedName      = null;
   var expectedRole      = "45";
   var expectedState     = "1048580";
   var expectedValue     = "NS_ERROR_NOT_IMPLEMENTED";
   var expectednodeFocus     = "Focused";
   var expectedaccFocused    = "Focused";
   var expectednumActions    = "1";
   var expectedactionName    = "Select";
   var expectednodeClick     = "Radio Button Clicked";

   var row0 = new Array("Property/Method", "Expected Values", "Actual Values", "Result");
   var row1 = new Array("Name->", expectedName, name);
   var row2 = new Array("Role->", expectedRole, role);
   var row3 = new Array("State->", expectedState, state);
   var row4 = new Array("Value->", expectedValue, value);
   var row5 = new Array("accTakeFocus()->", expectednodeFocus, nodeFocus);
   var row6 = new Array("accFocused->", expectedaccFocused, varaccFocused);
   var row7 = new Array("accNumActions->", expectednumActions, numActions);
   var row8 = new Array("getAccActionName()->", expectedactionName, actionName);
   var row9 = new Array("accDoAction()->", expectednodeClick, nodeClick);

   row = new Array(row0, row1, row2, row3, row4, row5, row6, row7, row8, row9);

   if (name == expectedName)                 row1[3] = "PASS"; else row1[3] = "FAIL";
   if (role == expectedRole)                 row2[3] = "PASS"; else row2[3] = "FAIL";
   if (state == expectedState)               row3[3] = "PASS"; else row3[3] = "FAIL";
   if (newvalue.match(expectedValue))        row4[3] = "PASS"; else row4[3] = "FAIL";
   if (nodeFocus == expectednodeFocus)       row5[3] = "PASS"; else row5[3] = "FAIL";
   if (varaccFocused == expectedaccFocused)  row6[3] = "PASS"; else row6[3] = "FAIL";
   if (numActions == expectednumActions)     row7[3] = "PASS"; else row7[3] = "FAIL";
   if (actionName == expectedactionName)     row8[3] = "PASS"; else row8[3] = "FAIL";
   if (nodeClick == expectednodeClick)       row9[3] = "PASS"; else row9[3] = "FAIL";

   appendTableRes();
   submitToCookie();
 }
 catch(e){
  alert("Exception**: " + e);
 }
}

function nodeClicked()
{
  nodeClick = "Radio Button Clicked";
}

</script>
</head>
<body>

<!-- form below is ngdriverspecific  -->
<form name="results" action="/ngdriver/cgi-bin/writeresults.cgi" method="post">
<script type="text/javascript">
document.write('<input name="resultsfile" type="hidden" value="' + window.opener.document.resultsform.resultsfile.value + '">');
</script>
<input type="hidden" name="textarea">
</form>

<script type="text/javascript">
nodeFocus = "Not Focused";
nodeClick = "Radio Button Not Clicked";
cookieName = "nsIAccessibleTestRadioButtonNode";
var res = "<b><u> Results for HTML Radio Button Node:</u></b><br><br>";

if(readCookie(cookieName) == null)
{
  <!-- Test Form -->
  document.write('<br><br><b> Testing Radio Button </b><br><br>');
  document.write('<form>');
  document.write('  Which is your favorite food');
  document.write('  <input type="radio" name="favorite" value="mexican" onClick="nodeClicked();" onFocus="nodeFocused();"> Mexican');
  document.write('  <input type="radio" name="favorite" value="italian"> Italian');
  document.write('  <input type="radio" name="favorite" value="japanese"> Japanese');
  document.write('  <input type="radio" checked name="favorite" value="other"> Other');
  document.write('</form>');

  setTimeout("executeTestCase();", 2000);
}
else
{
  var cookieValue = readCookie(cookieName);
  eraseCookie(cookieName);
  displayResults(cookieValue);
}

</script>
</body>
</html>