summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/user-timing/mark.any.js
blob: 7e814d2074ca8bb9015bea02b741ce9875decec2 (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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// test data
var testThreshold = 20;

var expectedTimes = new Array();

function match_entries(entries, index)
{
    var entry = entries[index];
    var match = self.performance.getEntriesByName("mark")[index];
    assert_equals(entry.name, match.name, "entry.name");
    assert_equals(entry.startTime, match.startTime, "entry.startTime");
    assert_equals(entry.entryType, match.entryType, "entry.entryType");
    assert_equals(entry.duration, match.duration, "entry.duration");
}

function filter_entries_by_type(entryList, entryType)
{
    var testEntries = new Array();

    // filter entryList
    for (var i in entryList)
    {
        if (entryList[i].entryType == entryType)
        {
            testEntries.push(entryList[i]);
        }
    }

    return testEntries;
}

test(function () {
  // create first mark
  self.performance.mark("mark");

  expectedTimes[0] = self.performance.now();

  const entries = self.performance.getEntriesByName("mark");
  assert_equals(entries.length, 1);
}, "Entry 0 is properly created");

test(function () {
    // create second, duplicate mark
    self.performance.mark("mark");

    expectedTimes[1] = self.performance.now();

    const entries = self.performance.getEntriesByName("mark");
    assert_equals(entries.length, 2);

}, "Entry 1 is properly created");

function test_mark(index) {
   test(function () {
       const entries = self.performance.getEntriesByName("mark");
       assert_equals(entries[index].name, "mark", "Entry has the proper name");
   }, "Entry " + index + " has the proper name");

   test(function () {
       const entries = self.performance.getEntriesByName("mark");
       assert_approx_equals(entries[index].startTime, expectedTimes[index], testThreshold);
   }, "Entry " + index + " startTime is approximately correct (up to " + testThreshold +
              "ms difference allowed)");

   test(function () {
       const entries = self.performance.getEntriesByName("mark");
       assert_equals(entries[index].entryType, "mark");
   }, "Entry " + index + " has the proper entryType");

   test(function () {
       const entries = self.performance.getEntriesByName("mark");
       assert_equals(entries[index].duration, 0);
   }, "Entry " + index +  " duration == 0");

   test(function () {
    const entries = self.performance.getEntriesByName("mark", "mark");
    assert_equals(entries[index].name, "mark");
   }, "getEntriesByName(\"mark\", \"mark\")[" + index + "] returns an " +
                "object containing a \"mark\" mark");

   test(function () {
    const entries = self.performance.getEntriesByName("mark", "mark");
    match_entries(entries, index);
   }, "The mark returned by getEntriesByName(\"mark\", \"mark\")[" + index
      + "] matches the mark returned by " +
              "getEntriesByName(\"mark\")[" + index + "]");

   test(function () {
    const entries = filter_entries_by_type(self.performance.getEntries(), "mark");
    assert_equals(entries[index].name, "mark");
   }, "getEntries()[" + index + "] returns an " +
                "object containing a \"mark\" mark");

   test(function () {
    const entries = filter_entries_by_type(self.performance.getEntries(), "mark");
    match_entries(entries, index);
   }, "The mark returned by getEntries()[" + index
      + "] matches the mark returned by " +
              "getEntriesByName(\"mark\")[" + index + "]");

   test(function () {
    const entries = self.performance.getEntriesByType("mark");
    assert_equals(entries[index].name, "mark");
   }, "getEntriesByType(\"mark\")[" + index + "] returns an " +
                "object containing a \"mark\" mark");

   test(function () {
    const entries = self.performance.getEntriesByType("mark");
    match_entries(entries, index);
   }, "The mark returned by getEntriesByType(\"mark\")[" + index
      + "] matches the mark returned by " +
              "getEntriesByName(\"mark\")[" + index + "]");

}

for (var i = 0; i < expectedTimes.length; i++) {
  test_mark(i);
}