summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/cssom-view/table-client-props.html
blob: 4af06d6bf71f0df75d3710ec0906445e943d340d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<!doctype html>
<meta charset=utf-8>
<title>client* properties on tables</title>
<link rel="help" href="https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="test-target" style="position: absolute"></div>
<script>
  test(function() {
    // Each test consists of four elements: the markup to use, the expected
    // value of offsetWidth on the table, the expected value of offsetHeight
    // on the table, and the description string.
    var tests = [
      [ `<table style="width: 20px; height: 30px">`,
        20, 30,
        "Basic table" ],
      [ `<table><caption style="width: 40px; height: 50px">`,
        40, 50,
        "Basic caption" ],
      [ `<table style="width: 20px; height: 30px">
           <caption style="width: 10px; height: 20px">`,
        20, 50,
        "Table and narrower caption" ],
      [ `<table style="width: 20px; height: 30px">
           <caption style="width: 40px; height: 20px">`,
        40, 50,
        "Table and wider caption" ],
      [ `<table style="width: 20px; height: 30px; padding: 1px 2px 3px 4px">`,
        20, 30,
        "Table with padding" ],
      [ `<table style="width: 20px; height: 30px; padding: 1px 2px 3px 4px;
                       box-sizing: content-box">`,
        26, 34,
        "Table with padding and content-box sizing" ],
      [ `<table style="width: 20px; height: 30px;
                       border-width: 1px 2px 3px 4px; border-style: solid;
                       border-collapse: separate; box-sizing: content-box">`,
        26, 34,
        "Table with separated border" ],
      [ `<table style="width: 20px; height: 30px;
                       border-width: 2px 4px 6px 8px; border-style: solid;
                       border-collapse: collapse; box-sizing: content-box">
           <tr><td>`,
        26, 34,
        "Table with collapsed border" ],
      [ `<table>
           <caption style="width: 40px; height: 50px; padding: 1px 2px 3px 4px">`,
        46, 54,
        "Caption with padding" ],
      [ `<table>
           <caption style="width: 40px; height: 50px;
                           border-width: 1px 2px 3px 4px; border-style: solid">`,
        46, 54,
        "Caption with border" ],
      [ `<table>
           <caption style="width: 40px; height: 50px; margin: 1px 2px 3px 4px;">`,
        46, 54,
        "Caption with margin" ],
      [ `<table style="caption-side: bottom">
           <caption style="width: 40px; height: 50px;">`,
        40, 50,
        "Bottom caption" ],
    ];

    function target() {
      return document.getElementById("test-target");
    }

    function table() {
      return target().querySelector("table");
    }

    for (var t of tests) {
      test(function() {
        target().innerHTML = t[0];
        assert_equals(table().clientWidth, t[1], t[3] + " clientWidth");
        assert_equals(table().clientHeight, t[2], t[3] + " clientHeight");
        assert_equals(table().clientLeft, 0, t[3] + " clientLeft");
        assert_equals(table().clientTop, 0, t[3] + " clientTop");
      }, t[3]);
    }
  }, "Overall test to make sure there are no exceptions");
</script>