Test case for bug http://webkit.org/b/98455. The testcase checks if the max-width property overrides the computed width of a html container with display:table.
A html container with display:table should not exceed the max-width even if its calculated width is greater than the max-width value.
However when min-width property is set and its value is greated than the max-width value, the width of the container must be equal to the min-width value.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Note:The width of the css tables inclusive of its border width.

PASS maxGreatThanMinWidthAutoLayout.getBoundingClientRect().width is 202
PASS minGreatThanMaxWidthAutoLayout.getBoundingClientRect().width is 202
PASS onlyMaxWidthAutoLayout.getBoundingClientRect().width is 202
PASS maxWidthZeroAutoLayout.getBoundingClientRect().width is 0
PASS maxGreatThanMinWidthFixedLayout.getBoundingClientRect().width is 202
PASS minGreatThanMaxWidthFixedLayout.getBoundingClientRect().width is 202
PASS onlyMaxWidthFixedLayout.getBoundingClientRect().width is 202
PASS maxWidthZeroFixedLayout.getBoundingClientRect().width is 0
PASS successfullyParsed is true

TEST COMPLETE

