<!DOCTYPE html>
<title>Input Email</title>
<link rel="author" title="Kazuki Kanamori" href="mailto:yogurito@gmail.com">
<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org">
<link rel="help" href="https://html.spec.whatwg.org/multipage/#e-mail-state-(type=email)">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<input type="email" id="single_email" value="user@example.com"/>
<input type="email" id="multiple_email" value="user1@example.com, user2@test.com" multiple/>
<div id="log"></div>

<script type="text/javascript">
  var single = document.getElementById('single_email'),
      mult = document.getElementById('multiple_email');

  test(function(){
    assert_false(single.multiple);
  }, "single_email doesn't have the multiple attribute");

  test(function(){
    single.value = 'user2@example.com\u000A';
    assert_equals(single.value, 'user2@example.com');
    single.value = 'user3@example.com\u000D';
    assert_equals(single.value, 'user3@example.com');
  }, 'value should be sanitized: strip line breaks');

  test(function(){
    single.value = 'user4@example.com';
    assert_true(single.validity.valid);
    single.value = 'example.com';
    assert_false(single.validity.valid);
  }, 'Email address validity');

  test(function(){
    single.setAttribute('multiple', true);
    single.value = '  user@example.com  , user2@example.com  ';
    assert_equals(single.value, 'user@example.com,user2@example.com');
    single.removeAttribute('multiple');
    assert_equals(single.value, 'user@example.com,user2@example.com');
  }, 'When the multiple attribute is removed, the user agent must run the value sanitization algorithm');

  test(function(){
    assert_true(mult.multiple);
  }, "multiple_email has the multiple attribute");

  test(function(){
    mult.value = '  user1@example.com  , user2@test.com, user3@test.com  ';
    assert_equals(mult.value, 'user1@example.com,user2@test.com,user3@test.com');
  }, "run the value sanitization algorithm after setting a new value");

  test(function(){
    mult.value = 'user1@example.com,user2@test.com,user3@test.com';
    assert_true(mult.validity.valid);

    mult.value = 'u,ser1@example.com,user2@test.com,user3@test.com';
    assert_false(mult.validity.valid);
  }, "valid value is a set of valid email addresses separated by a single ','");
</script>
