2008-12-18 Darin Adler <darin@apple.com>
[WebKit-https.git] / LayoutTests / transitions / end-event-helpers.js
1 var results = new Array();
2
3 function compareEventInfo(e1, e2) {
4   // sort by property name then event target id
5   // index 0 is the propertyName
6   if (e1[0]<e2[0]) return -1;
7   if (e1[0]>e2[0]) return +1;
8   // index 1 is the target id
9   if (e1[1]<e2[1]) return -1;
10   if (e1[1]>e2[1]) return +1;
11   return 0;
12 }
13
14 function recordEvent(event) {
15   results.push([
16     event.propertyName,
17     event.target.id,
18     event.type,
19     Math.round(event.elapsedTime * 1000) / 1000 // round off any float errors
20     ]);
21 }
22
23 function examineResults(expected) {
24   // sort results so events always display in the same order
25   results.sort(compareEventInfo);
26   var result = '<p>';
27   for (var i=0; i < results.length && i < expected.length; ++i) {
28     result += "Expected Property: " + expected[i][0] + " ";
29     result += "Target: " + expected[i][1] + " ";
30     result += "Type: " + expected[i][2] + " ";
31     result += "Elapsed Time: " + expected[i][3] + " -- ";
32     
33     if (expected[i][0] == results[i][0] &&
34         expected[i][1] == results[i][1] &&
35         expected[i][2] == results[i][2] &&
36         expected[i][3] == results[i][3])
37       result += "PASS";
38     else {
39       result += "FAIL -- Received";
40       result += "Property: " + results[i][0] + " ";
41       result += "Target: " + results[i][1] + " ";
42       result += "Type: " + results[i][2] + " ";
43       result += "Elapsed Time: " + results[i][3];
44       
45     }
46     result += "<br>";
47   }
48   result += "</p>";
49   
50   if (expected.length > results.length) {
51     result += "<p>Missing events -- FAIL<br>";
52     for (i=results.length; i < expected.length; ++i) {
53       result += "Missing Property: " + expected[i][0] + " ";
54       result += "Target: " + expected[i][1] + " ";
55       result += "Type: " + expected[i][2] + " ";
56       result += "Elapsed Time: " + expected[i][3] + "<br>";
57     }
58     result += "</p>";
59   } else if (expected.length < results.length) {
60     result += "<p>Unexpected events -- FAIL<br>";
61     for (i=expected.length; i < results.length; ++i) {
62       result += "Unexpected Property: " + results[i][0] + " ";
63       result += "Target: " + results[i][1] + " ";
64       result += "Type: " + results[i][2] + " ";
65       result += "Elapsed Time: " + results[i][3] + "<br>";
66     }
67     result += "</p>";
68   }
69   
70   return result;
71 }
72
73 function cleanup()
74 {
75   document.body.removeChild(document.getElementById('container'));
76   document.getElementById('result').innerHTML = examineResults(expected);
77
78   if (window.layoutTestController)
79       layoutTestController.notifyDone();
80 }