<!DOCTYPE html>
<html>
<head>
    <title>W3C WebSocket API - Create WebSocket with valid url and array of protocols</title>
    <script type="text/javascript" src="websocket.sub.js"></script>
    <script type="text/javascript" src="/resources/testharness.js"></script>
    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
</head>
<body>
    <div id="log"></div>
    <script type="text/javascript">

        var testOpen = async_test("W3C WebSocket API - Create WebSocket - Pass a valid URL and array of protocol strings - Connection should be opened");
        var testClose = async_test("W3C WebSocket API - Create WebSocket - Pass a valid URL and array of protocol strings - Connection should be closed");

        var wsocket = CreateWebSocket(false, false, true);
        var isOpenCalled = false;

        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
            assert_equals(wsocket.readyState, 1, "readyState should be 1(OPEN)");
            wsocket.close();
            isOpenCalled = true;
            testOpen.done();
        }), true);

        wsocket.addEventListener('close', testClose.step_func(function (evt) {
            assert_true(isOpenCalled, "WebSocket connection should be open");
            assert_equals(evt.wasClean, true, "wasClean should be true");
            testClose.done();
        }), true);

    </script>

</body>
</html>
