<html>
<head>
<script src="../http/tests/inspector/inspector-test.js"></script>
<script type="text/javascript">
var test = function()
{
    function calculateAndDumpMaxWidth(measuredWidths, totalWidth)
    {
        var maxWidth = WebInspector.TabbedPane.prototype._calculateMaxWidth(measuredWidths, totalWidth);
        InspectorTest.addResult("measuredWidths = [" + String(measuredWidths) + "], totalWidth = " + totalWidth + ", maxWidth = " + maxWidth + ".");
    }

    calculateAndDumpMaxWidth([50, 70, 20], 150);
    calculateAndDumpMaxWidth([50, 80, 20], 150);
    calculateAndDumpMaxWidth([50, 90, 20], 150);
    calculateAndDumpMaxWidth([90, 90, 20], 150);
    calculateAndDumpMaxWidth([90, 80, 70], 150);

    InspectorTest.completeTest();
}
</script>
</head>
<body onload="runTest()">
<p>Tests tabbed pane max tab element width calculation.</p>
<a href="https://bugs.webkit.org/show_bug.cgi?id=75005">Bug 75005</a>
</body>
</html>
