<!DOCTYPE HTML>
<html>
 <head>
  <title>Forms</title>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
 </head>
 <body>
  <p>
    <h3>FieldSet_willValidate</h3>
  </p>

  <hr>

  <div id="log"></div>

  <form method="post"
      enctype="application/x-www-form-urlencoded"
      action=""
      id="input_form">
    <fieldset id="input_field">
     </fieldset>
  </form>
  <script>

    var field = document.getElementById("input_field");

    if (typeof(field.willValidate) == "boolean") {
      test(function() {
        assert_equals(field.willValidate, false, "willValidate attribute is not correct.");
      });
    } else {
      test(function() {
        assert_unreached("willValidate attribute is not exist.");
      });
    }

  </script>

 </body>
</html>
