<!doctype html>
<meta charset=utf-8>
<title>WebSockets: bufferedAmount after send()ing</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=../../../constants.js?pipe=sub></script>
<div id=log></div>
<script>
async_test(function(t){
  // bufferedAmount should increase sync in the send() method and decrease between
  // events in the event loop (so never while script is running).
  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
  ws.onopen = t.step_func(function(e) {
    ws.send('x');
    assert_equals(ws.bufferedAmount, 1, 'bufferedAmount after sent "x"');
    ws.send('\u00E5');
    assert_equals(ws.bufferedAmount, 1+2, 'bufferedAmount after sent "x", "\u00E5"');
    ws.send('\u5336');
    assert_equals(ws.bufferedAmount, 1+2+3, 'bufferedAmount after sent "x", "\u00E5", "\u5336"');
    ws.send('\uD801\uDC7E');
    assert_equals(ws.bufferedAmount, 1+2+3+4, 'bufferedAmount after sent "x", "\u00E5", "\u5336", "\uD801\uDC7E"');
  })
  var i = 0;
  ws.onmessage = t.step_func(function(e) {
    i++;
    switch(i) {
      case 1:
        assert_equals(e.data, 'x');
        assert_true(ws.bufferedAmount < 2+3+4 + 1, 'bufferedAmount after received "x"');
        break;
      case 2:
        assert_equals(e.data, '\u00E5');
        assert_true(ws.bufferedAmount < 3+4 + 1, 'bufferedAmount after received "x", "\u00E5"');
        break;
      case 3:
        assert_equals(e.data, '\u5336');
        assert_true(ws.bufferedAmount < 4 + 1, 'bufferedAmount after received "x", "\u00E5", "\u5336"');
        break;
      case 4:
        assert_equals(e.data, '\uD801\uDC7E');
        assert_equals(ws.bufferedAmount, 0, 'bufferedAmount after received "x", "\u00E5", "\u5336", "\uD801\uDC7E"');
        t.done();
        break;
      default:
        assert_unreached(i);
    }
  })
  ws.onerror = ws.onclose = t.step_func(function() {assert_unreached()});
});
</script>

