<html>
<body>
<p>Test that EventSource discards event data if there is no newline before eof. Should print a series of PASS messages followed by DONE.</p>
<div id="result"></div>
<script>
function log(msg) {
    document.getElementById("result").innerHTML += msg + "<br>";
}

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

var count = 1;

var es = new EventSource("resources/es-eof.py");

es.onerror = function () {
    if (count++ == 3) {
        es.close();
        if (window.testRunner)
            testRunner.notifyDone();
    }
};

es.onmessage = function (evt) {
     if (evt.data == ("DATA" + count)) {
        if (evt.lastEventId == count) {
            if (evt.type == "message")
                log("PASS: got event with expected data, lastEventId, and type");
            else
                log("FAIL: got expected data and lastEventId but type is wrong");
        }
        else if (evt.type == "message")
            log("FAIL: got expected data but lastEventId is wrong");
        else
            log("FAIL: got expected data but lastEventId and type are wrong");
    }
    else if (count == 3 && evt.data == "DATA" && evt.lastEventId == "3.1" && evt.type == "msg")
        log("DONE");
    else
        log("FAIL: got unexpected message event");
};
es.addEventListener("msg", es.onmessage);
</script>
</body>
</html>
