<!DOCTYPE html>
<head>
<script>
    if (window.testRunner)
        testRunner.dumpAsText();
</script>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>

    <p>There should be no red below. <br> 
    The bordercolor attribute on a cell or row should have no effect. <br>
    https://bugs.webkit.org/show_bug.cgi?id=101677</p> 

    <table id="table" border="0" width="100%" height="100%">
        <tr>
            <td id="cell" bordercolor="red" height="26"></td>
        </tr>
    </table>

    <table id="table2" border="" width="100%" height="100%">
        <tr>
            <td id="cell2" bordercolor="red" height="26"></td>
        </tr>
    </table>

    <table id="table3" border="2" width="100%" height="100%">
        <tr>
            <td id="cell3" bordercolor="red" height="26"></td>
        </tr>
    </table>

    <table id="table4" border="2" width="100%" height="100%">
        <tr id="row4" bordercolor="red">
            <td height="26"></td>
        </tr>
    </table>

    <table id="table5" border="2" width="100%" height="100%">
        <tbody>
        <col id="col5" bordercolor="red">
        <tr>
            <td height="26"></td>
        </tr>
        </tbody>
    </table>

    <table id="table6" border="2" width="100%" height="100%">
        <tbody id="tbody6" bordercolor="red">
        <tr>
            <td height="26"></td>
        </tr>
        </tbody>
    </table>

    <table id="table7" border="2" width="100%" height="100%">
        <tbody>
        <colgroup id="col7" bordercolor="red">
            <col>
        </colgroup>
        <tr>
            <td height="26"></td>
        </tr>
        </tbody>
    </table>

    <div id="console"></div>
    
    <script>
    shouldBeEqualToString('document.defaultView.getComputedStyle(cell, null).getPropertyValue("border-top-color")', "rgb(0, 0, 0)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(cell, null).getPropertyValue("border-top-width")', "0px");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table, null).getPropertyValue("border-top-width")', "0px");

    shouldBeEqualToString('document.defaultView.getComputedStyle(cell2, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(cell2, null).getPropertyValue("border-top-width")', "1px");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table2, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table2, null).getPropertyValue("border-top-width")', "1px");

    shouldBeEqualToString('document.defaultView.getComputedStyle(cell3, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(cell3, null).getPropertyValue("border-top-width")', "1px");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table3, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table3, null).getPropertyValue("border-top-width")', "2px");

    shouldBeEqualToString('document.defaultView.getComputedStyle(row4, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(row4, null).getPropertyValue("border-top-width")', "0px");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table4, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table4, null).getPropertyValue("border-top-width")', "2px");

    shouldBeEqualToString('document.defaultView.getComputedStyle(col5, null).getPropertyValue("border-top-color")', "rgb(0, 0, 0)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(col5, null).getPropertyValue("border-top-width")', "0px");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table5, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table5, null).getPropertyValue("border-top-width")', "2px");

    shouldBeEqualToString('document.defaultView.getComputedStyle(tbody6, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(tbody6, null).getPropertyValue("border-top-width")', "0px");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table6, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table6, null).getPropertyValue("border-top-width")', "2px");

    shouldBeEqualToString('document.defaultView.getComputedStyle(col7, null).getPropertyValue("border-top-color")', "rgb(0, 0, 0)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(col7, null).getPropertyValue("border-top-width")', "0px");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table7, null).getPropertyValue("border-top-color")', "rgb(128, 128, 128)");
    shouldBeEqualToString('document.defaultView.getComputedStyle(table7, null).getPropertyValue("border-top-width")', "2px");

    </script>
</body>
