<!DOCTYPE html>
<head>
<script>
    if (window.testRunner)
        testRunner.dumpAsText();
</script>
<script src="../../resources/js-test.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>
