blob: b7bcdc1b45d2185bb9e9aadbccee8cc7431264e7 [file] [log] [blame]
/*
* Copyright (C) 2011 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
(function () {
module("ui");
var kExampleResultsByTest = {
"scrollbars/custom-scrollbar-with-incomplete-style.html": {
"Mock Builder": {
"expected": "IMAGE",
"actual": "CRASH"
},
"Mock Linux": {
"expected": "TEXT",
"actual": "CRASH"
}
},
"userscripts/another-test.html": {
"Mock Builder": {
"expected": "PASS",
"actual": "TEXT"
}
}
}
test("ui.onebar", 3, function() {
if (window.location.hash) {
window.location.hash = '';
}
onebar = new ui.onebar();
onebar.attach();
equal(onebar.innerHTML,
'<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">' +
'<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a href="#unexpected">Unexpected Failures</a></li>' +
'<li class="ui-state-default ui-corner-top"><a href="#expected">Expected Failures</a></li>' +
'<li class="ui-state-default ui-corner-top ui-state-disabled"><a href="#results">Results</a></li>' +
'</ul>' +
'<div id="unexpected" class="ui-tabs-panel ui-widget-content ui-corner-bottom"></div>' +
'<div id="expected" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>' +
'<div id="results" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>');
onebar.select('expected');
equal(window.location.hash, '#expected');
onebar.select('unexpected');
equal(window.location.hash, '#unexpected');
$(onebar).detach();
});
test("results.ResultsGrid", 1, function() {
var grid = new ui.results.ResultsGrid()
grid.addResults([
'http://example.com/layout-test-results/foo-bar-diff.txt',
'http://example.com/layout-test-results/foo-bar-expected.png',
'http://example.com/layout-test-results/foo-bar-actual.png',
'http://example.com/layout-test-results/foo-bar-diff.png',
]);
equal(grid.innerHTML,
'<table class="comparison">' +
'<thead>' +
'<tr>' +
'<th>Expected</th>' +
'<th>Actual</th>' +
'<th>Diff</th>' +
'</tr>' +
'</thead>' +
'<tbody>' +
'<tr>' +
'<td class="expected result-container"><img class="image-result" src="http://example.com/layout-test-results/foo-bar-expected.png"></td>' +
'<td class="actual result-container"><img class="image-result" src="http://example.com/layout-test-results/foo-bar-actual.png"></td>' +
'<td class="diff result-container"><img class="image-result" src="http://example.com/layout-test-results/foo-bar-diff.png"></td>' +
'</tr>' +
'</tbody>' +
'</table>' +
'<table class="comparison">' +
'<thead>' +
'<tr>' +
'<th>Expected</th>' +
'<th>Actual</th>' +
'<th>Diff</th>' +
'</tr>' +
'</thead>' +
'<tbody>' +
'<tr>' +
'<td class="expected result-container"></td>' +
'<td class="actual result-container"></td>' +
'<td class="diff result-container"><iframe class="text-result" src="http://example.com/layout-test-results/foo-bar-diff.txt"></iframe></td>' +
'</tr>' +
'</tbody>' +
'</table>');
});
test("results.ResultsGrid (crashlog)", 1, function() {
var grid = new ui.results.ResultsGrid()
grid.addResults(['http://example.com/layout-test-results/foo-bar-crash-log.txt']);
equal(grid.innerHTML, '<iframe class="text-result" src="http://example.com/layout-test-results/foo-bar-crash-log.txt"></iframe>');
});
test("results.ResultsGrid (empty)", 1, function() {
var grid = new ui.results.ResultsGrid()
grid.addResults([]);
equal(grid.innerHTML, 'No results to display.');
});
test("time", 6, function() {
var time = new ui.RelativeTime();
equal(time.tagName, 'TIME');
equal(time.className, 'relative');
deepEqual(Object.getOwnPropertyNames(time.__proto__).sort(), [
'date',
'init',
'setDate',
'update',
]);
equal(time.outerHTML, '<time class="relative"></time>');
var tenMinutesAgo = new Date();
tenMinutesAgo.setMinutes(tenMinutesAgo.getMinutes() - 10);
time.setDate(tenMinutesAgo);
equal(time.outerHTML, '<time class="relative">10 minutes ago</time>');
equal(time.date().getTime(), tenMinutesAgo.getTime());
});
test("StatusArea", 3, function() {
var statusArea = new ui.StatusArea();
var id = statusArea.newId();
statusArea.addMessage(id, 'First Message');
statusArea.addMessage(id, 'Second Message');
equal(statusArea.outerHTML,
'<div class="status processing" style="visibility: visible;">' +
'<ul class="actions"><li><button class="action">Close</button></li></ul>' +
'<progress class="process-text">Processing...</progress>' +
'<div id="status-content-1" class="status-content">' +
'<div class="message">First Message</div>' +
'<div class="message">Second Message</div>' +
'</div>' +
'</div>');
var secondStatusArea = new ui.StatusArea();
var secondId = secondStatusArea.newId();
secondStatusArea.addMessage(secondId, 'First Message second id');
equal(statusArea.outerHTML,
'<div class="status processing" style="visibility: visible;">' +
'<ul class="actions"><li><button class="action">Close</button></li></ul>' +
'<progress class="process-text">Processing...</progress>' +
'<div id="status-content-1" class="status-content">' +
'<div class="message">First Message</div>' +
'<div class="message">Second Message</div>' +
'</div>' +
'<div id="status-content-2" class="status-content">' +
'<div class="message">First Message second id</div>' +
'</div>' +
'</div>');
statusArea.addFinalMessage(id, 'Final Message 1');
statusArea.addFinalMessage(secondId, 'Final Message 2');
equal(statusArea.outerHTML,
'<div class="status" style="visibility: visible;">' +
'<ul class="actions"><li><button class="action">Close</button></li></ul>' +
'<progress class="process-text">Processing...</progress>' +
'<div id="status-content-1" class="status-content">' +
'<div class="message">First Message</div>' +
'<div class="message">Second Message</div>' +
'<div class="message">Final Message 1</div>' +
'</div>' +
'<div id="status-content-2" class="status-content">' +
'<div class="message">First Message second id</div>' +
'<div class="message">Final Message 2</div>' +
'</div>' +
'</div>');
statusArea.close();
});
var openTreeJson = {
"username": "erg@chromium.org",
"date": "2013-10-14 20:22:00.887390",
"message": "Tree is open",
"can_commit_freely": true,
"general_state": "open"
};
test("TreeStatus", 2, function() {
var simulator = new NetworkSimulator();
simulator.get = function(url, callback)
{
simulator.scheduleCallback(function() {
callback(openTreeJson);
});
};
var treestatus;
simulator.runTest(function() {
treeStatus = new ui.TreeStatus();
});
equal(treeStatus.innerHTML, '<div> blink status: <span>OPEN</span></div><div> chromium status: <span>OPEN</span></div>');
});
})();