2009-07-30 17:58:27 +01:00
<!DOCTYPE html>
< head >
< title > JavaScript unit test file< / title >
< meta http-equiv = "content-type" content = "text/html; charset=utf-8" / >
<!-- use http://code.jquery.com/jquery - latest.js for the latest jQuery -->
2009-10-25 14:18:28 -04:00
< script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type = "text/javascript" > < / script >
2009-07-30 17:58:27 +01:00
<!-- http://dev.jquery.com/view/trunk/qunit/testrunner.js -->
< script src = "testrunner.js" type = "text/javascript" > < / script >
< script src = "../jquery.timeago.js" type = "text/javascript" > < / script >
<!-- http://dev.jquery.com/view/trunk/qunit/testsuite.css -->
< link rel = "stylesheet" href = "testsuite.css" type = "text/css" media = "screen" / >
< / head >
< body >
< h1 > jquery.timeago.js tests< / h1 >
< h2 id = "banner" > < / h2 >
< h2 id = "userAgent" > < / h2 >
< ol id = "tests" > < / ol >
< div id = "main" >
< h2 > Short term< / h2 >
2009-10-25 14:18:28 -04:00
< p > You opened this page < abbr class = "loaded timeago testShortTerm" > (you shouldn't see this)< / abbr > .< / p >
2009-07-30 17:58:27 +01:00
< p >
This page was last modified < abbr class = "modified timeago" > sometime before
now (your browser might not support document.lastModified for local resources)< / abbr > .
< / p >
< h2 > Long term< / h2 >
< p >
Jett was born
< abbr class = "timeago testLongTerm" title = "2008-02-27T00:23:00Z" > (you shouldn't see this)< / abbr >
[from Z].
< / p >
< p >
Jett was born
< abbr class = "timeago testLongTerm" title = "2008-02-26T19:23:00-0500" > (you shouldn't see this)< / abbr >
[from -0500].
< / p >
< p >
Logan was born
< abbr class = "timeago testLongTerm" title = "2005-06-17T23:42:00Z" > (you shouldn't see this)< / abbr >
[from Z].
< / p >
< p >
Logan was born
< abbr class = "timeago testLongTerm" title = "2005-06-17T19:42:00-0400" > (you shouldn't see this)< / abbr >
[from -0400].
< / p >
< p >
Ryan was born
< abbr class = "timeago testLongTerm" title = "1978-12-18T17:17:00Z" > (you shouldn't see this)< / abbr >
[from Z].
< / p >
< p >
Ryan was born
< abbr class = "timeago testLongTerm" title = "1978-12-18T12:17:00-05:00" > (you shouldn't see this)< / abbr >
[from -0500].
< / p >
< h2 > Other formats< / h2 >
2009-10-25 14:18:28 -04:00
< p > Date only (abbr element): < abbr class = "timeago" title = "2008-02-26" > (you shouldn't see this)< / abbr > .< / p >
< p > Date only (time element): < time class = "timeago" datetime = "2008-02-26" > (you shouldn't see this)< / time > .< / p >
2009-07-30 17:58:27 +01:00
< h2 > Errors< / h2 >
< p > Bad (letters): < abbr class = "bad timeago" title = "bleh" > (this should be displayed)< / abbr > .< / p >
< p > Bad (numbers): < abbr class = "bad timeago" title = "1234" > (this should be displayed)< / abbr > .< / p >
< p > Bad (blank): < abbr class = "bad timeago" title = "" > (this should be displayed)< / abbr > .< / p >
< p > Bad (missing): < abbr class = "bad timeago" > (this should be displayed)< / abbr > .< / p >
< h2 > Parsing< / h2 >
< p > Ryan was born… < / p >
< ul >
< li > < abbr id = "testParsing1" class = "todate" title = "1978-12-18T17:17:00Z" > < / abbr > [from Z]< / li >
< li > < abbr id = "testParsing2" class = "todate" title = "1978-12-18T17:17:00-00:00" > < / abbr > [from -00:00]< / li >
< li > < abbr id = "testParsing3" class = "todate" title = "1978-12-18T12:17:00-05:00" > < / abbr > [from -05:00]< / li >
< li > < abbr id = "testParsing4" class = "todate" title = "1978-12-18T12:17:00-0500" > < / abbr > [from -0500]< / li >
< li > < abbr id = "testParsing5" class = "todate" title = "1978-12-19T02:17:00+09:00" > < / abbr > [from +09:00]< / li >
< li > < abbr id = "testParsing6" class = "todate" title = "1978-12-19T02:17:00+0900" > < / abbr > [from +0900]< / li >
< li > < abbr id = "testParsing7" class = "todate" title = "1978-12-18 17:17:00" > < / abbr > [from blank TZ]< / li >
< / ul >
< h2 > Wording< / h2 >
< ul >
< li > < abbr id = "testWording1" class = "towords" title = "-7200" > < / abbr > [-120 min]< / li >
< li > < abbr id = "testWording2" class = "towords" title = "-60" > < / abbr > [-60 sec]< / li >
< li > < abbr id = "testWording3" class = "towords" title = "-30" > < / abbr > [-30 sec]< / li >
< li > < abbr id = "testWording4" class = "towords" title = "-1" > < / abbr > [-1 sec]< / li >
< li > < abbr id = "testWording5" class = "towords" title = "0" > < / abbr > [0 sec]< / li >
< li > < abbr id = "testWording6" class = "towords" title = "30" > < / abbr > [30 sec]< / li >
< li > < abbr id = "testWording7" class = "towords" title = "45" > < / abbr > [45 sec]< / li >
< li > < abbr id = "testWording8" class = "towords" title = "90" > < / abbr > [90 sec]< / li >
< li > < abbr id = "testWording9" class = "towords" title = "120" > < / abbr > [120 sec]< / li >
< li > < abbr id = "testWording10" class = "towords" title = "2700" > < / abbr > [45 min]< / li >
< li > < abbr id = "testWording11" class = "towords" title = "5340" > < / abbr > [89 min]< / li >
< li > < abbr id = "testWording12" class = "towords" title = "5400" > < / abbr > [90 min]< / li >
< li > < abbr id = "testWording13" class = "towords" title = "7200" > < / abbr > [120 min]< / li >
< li > < abbr id = "testWording14" class = "towords" title = "82800" > < / abbr > [1380 min]< / li >
< li > < abbr id = "testWording15" class = "towords" title = "90000" > < / abbr > [25 hours]< / li >
< li > < abbr id = "testWording16" class = "towords" title = "172800" > < / abbr > [48 hours]< / li >
< li > < abbr id = "testWording17" class = "towords" title = "2505600" > < / abbr > [696 hours]< / li >
< li > < abbr id = "testWording18" class = "towords" title = "2592000" > < / abbr > [30 days]< / li >
< li > < abbr id = "testWording19" class = "towords" title = "16416000" > < / abbr > [190 days]< / li >
< li > < abbr id = "testWording20" class = "towords" title = "31622400" > < / abbr > [366 days]< / li >
< li > < abbr id = "testWording21" class = "towords" title = "94608000" > < / abbr > [1095 days]< / li >
< / ul >
< h2 > Settings< / h2 >
< ul >
< li > < abbr id = "testYoungOldSettings1" class = "toyoungold" title = "504576000" > < / abbr > [5840 days]< / li >
< li > < abbr id = "testYoungOldSettings2" class = "toyoungold" title = "2018304000" > < / abbr > [23360 days]< / li >
< li > < abbr id = "testLatinSettings1" class = "tolatin" title = "-7200" > < / abbr > [-120 min]< / li >
< li > < abbr id = "testLatinSettings2" class = "tolatin" title = "-60" > < / abbr > [-60 sec]< / li >
< li > < abbr id = "testLatinSettings3" class = "tolatin" title = "-30" > < / abbr > [-30 sec]< / li >
< li > < abbr id = "testLatinSettings4" class = "tolatin" title = "-1" > < / abbr > [-1 sec]< / li >
< li > < abbr id = "testLatinSettings5" class = "tolatin" title = "0" > < / abbr > [0 sec]< / li >
< li > < abbr id = "testLatinSettings6" class = "tolatin" title = "30" > < / abbr > [30 sec]< / li >
< li > < abbr id = "testLatinSettings7" class = "tolatin" title = "45" > < / abbr > [45 sec]< / li >
< li > < abbr id = "testLatinSettings8" class = "tolatin" title = "90" > < / abbr > [90 sec]< / li >
< li > < abbr id = "testLatinSettings9" class = "tolatin" title = "120" > < / abbr > [120 sec]< / li >
< li > < abbr id = "testLatinSettings10" class = "tolatin" title = "2700" > < / abbr > [45 min]< / li >
< li > < abbr id = "testLatinSettings11" class = "tolatin" title = "5340" > < / abbr > [89 min]< / li >
< li > < abbr id = "testLatinSettings12" class = "tolatin" title = "5400" > < / abbr > [90 min]< / li >
< li > < abbr id = "testLatinSettings13" class = "tolatin" title = "7200" > < / abbr > [120 min]< / li >
< li > < abbr id = "testLatinSettings14" class = "tolatin" title = "82800" > < / abbr > [1380 min]< / li >
< li > < abbr id = "testLatinSettings15" class = "tolatin" title = "90000" > < / abbr > [25 hours]< / li >
< li > < abbr id = "testLatinSettings16" class = "tolatin" title = "172800" > < / abbr > [48 hours]< / li >
< li > < abbr id = "testLatinSettings17" class = "tolatin" title = "2505600" > < / abbr > [696 hours]< / li >
< li > < abbr id = "testLatinSettings18" class = "tolatin" title = "2592000" > < / abbr > [30 days]< / li >
< li > < abbr id = "testLatinSettings19" class = "tolatin" title = "16416000" > < / abbr > [190 days]< / li >
< li > < abbr id = "testLatinSettings20" class = "tolatin" title = "31622400" > < / abbr > [366 days]< / li >
< li > < abbr id = "testLatinSettings21" class = "tolatin" title = "94608000" > < / abbr > [1095 days]< / li >
< li > < abbr id = "testRussianSettings1" class = "torussian" title = "-7200" > < / abbr > [-120 min]< / li >
< li > < abbr id = "testRussianSettings2" class = "torussian" title = "-60" > < / abbr > [-60 sec]< / li >
< li > < abbr id = "testRussianSettings3" class = "torussian" title = "-30" > < / abbr > [-30 sec]< / li >
< li > < abbr id = "testRussianSettings4" class = "torussian" title = "-1" > < / abbr > [-1 sec]< / li >
< li > < abbr id = "testRussianSettings5" class = "torussian" title = "0" > < / abbr > [0 sec]< / li >
< li > < abbr id = "testRussianSettings6" class = "torussian" title = "30" > < / abbr > [30 sec]< / li >
< li > < abbr id = "testRussianSettings7" class = "torussian" title = "45" > < / abbr > [45 sec]< / li >
< li > < abbr id = "testRussianSettings8" class = "torussian" title = "90" > < / abbr > [90 sec]< / li >
< li > < abbr id = "testRussianSettings9" class = "torussian" title = "120" > < / abbr > [120 sec]< / li >
< li > < abbr id = "testRussianSettings10" class = "torussian" title = "2700" > < / abbr > [45 min]< / li >
< li > < abbr id = "testRussianSettings11" class = "torussian" title = "5340" > < / abbr > [89 min]< / li >
< li > < abbr id = "testRussianSettings12" class = "torussian" title = "5400" > < / abbr > [90 min]< / li >
< li > < abbr id = "testRussianSettings13" class = "torussian" title = "7200" > < / abbr > [120 min]< / li >
< li > < abbr id = "testRussianSettings14" class = "torussian" title = "82800" > < / abbr > [1380 min]< / li >
< li > < abbr id = "testRussianSettings15" class = "torussian" title = "90000" > < / abbr > [25 hours]< / li >
< li > < abbr id = "testRussianSettings16" class = "torussian" title = "172800" > < / abbr > [48 hours]< / li >
< li > < abbr id = "testRussianSettings17" class = "torussian" title = "2505600" > < / abbr > [696 hours]< / li >
< li > < abbr id = "testRussianSettings18" class = "torussian" title = "2592000" > < / abbr > [30 days]< / li >
< li > < abbr id = "testRussianSettings19" class = "torussian" title = "16416000" > < / abbr > [190 days]< / li >
< li > < abbr id = "testRussianSettings20" class = "torussian" title = "31622400" > < / abbr > [366 days]< / li >
< li > < abbr id = "testRussianSettings21" class = "torussian" title = "94608000" > < / abbr > [1095 days]< / li >
< / ul >
< / div >
2009-08-15 10:26:12 -04:00
< script src = "test_helpers.js" type = "text/javascript" > < / script >
2009-07-30 17:58:27 +01:00
< script type = "text/javascript" >
//< ![CDATA[
(function ($) {
function testElements(selector, test) {
var elements = $(selector);
var numberOfTests = elements.length;
var numberOfPasses = 0;
elements.each(function () {
if (test($(this))) { numberOfPasses++; }
});
return (numberOfTests === numberOfPasses);
}
function toWords() {
var string = $.timeago.inWords(parseInt(this.title, 10) * 1000);
$(this).text(string);
}
$.timeago.settings.allowFuture = true;
$('abbr.loaded').attr('title', iso8601(new Date()));
$('abbr.modified').attr('title', iso8601(new Date(document.lastModified)));
$('abbr.timeago').timeago();
2009-10-25 14:18:28 -04:00
$('time.timeago').timeago();
2009-07-30 17:58:27 +01:00
$('abbr.todate').each(function () {
var date = $.timeago.parse(this.title);
2009-07-30 13:28:31 -04:00
$(this).text(date.toUTCString());
2009-07-30 17:58:27 +01:00
});
$('abbr.towords').each(toWords);
loadYoungOldYears();
$('abbr.toyoungold').each(toWords);
loadPigLatin();
$('abbr.tolatin').each(toWords);
loadRussian();
$('abbr.torussian').each(toWords);
module('Valid date');
test('Text in abbr tag should be replaced', function () {
ok(testElements('abbr.timeago', function (element) {
return (element.html() !== "(you shouldn't see this)");
}), 'All text was replaced');
});
2009-10-25 14:18:28 -04:00
test('Text in time tag should be replaced', function () {
ok(testElements('time.timeago', function (element) {
return (element.html() !== "(you shouldn't see this)");
}), 'All text was replaced');
});
2009-07-30 17:58:27 +01:00
module('Invalid date');
test('Text in abbr should not be replaced', function () {
ok(testElements('abbr.bad', function (element) {
return (element.html() === '(this should be displayed)');
}), 'No text was replaced');
});
module('Short term');
test("Dates shorter than a minute should be replaced with short term text", function () {
ok(testElements('abbr.testShortTerm', function (element) {
return (element.html() === 'less than a minute ago');
}), 'All short term dates correctly parsed');
});
module('Long term');
2009-07-30 13:28:31 -04:00
test("Dates older than one year should contain the word 'year'", function () {
2009-07-30 17:58:27 +01:00
ok(testElements('abbr.testLongTerm', function (element) {
return (element.html().match(/year/));
}), 'All long term dates correctly parsed');
});
module('Parsing');
// Note, different browsers behave slightly different
2009-07-30 13:28:31 -04:00
var correctMatch = /Mon, 18 Dec 1978 17:17:00 GMT/;
2009-07-30 17:58:27 +01:00
test('From Z', function () {
ok(($('#testParsing1').html().match(correctMatch)), 'Correctly parsed');
});
test('From -00:00', function () {
ok(($('#testParsing2').html().match(correctMatch)), 'Correctly parsed');
});
test('From -05:00', function () {
ok(($('#testParsing3').html().match(correctMatch)), 'Correctly parsed');
});
test('From -0500', function () {
ok(($('#testParsing4').html().match(correctMatch)), 'Correctly parsed');
});
test('From +09:00', function () {
ok(($('#testParsing5').html().match(correctMatch)), 'Correctly parsed');
});
test('From +0900', function () {
ok(($('#testParsing6').html().match(correctMatch)), 'Correctly parsed');
});
test('From blank TZ', function () {
2009-07-30 13:28:31 -04:00
ok(($('#testParsing7').html().match(/Mon, 18 Dec 1978 \d\d:17:00 GMT/)), 'Correctly parsed, assumed local time');
2009-07-30 17:58:27 +01:00
});
module('Wording');
test('-120 min', function () {
ok(($('#testWording1').html() === 'about 2 hours from now'), 'Correctly parsed');
});
test('-60 sec', function () {
ok(($('#testWording2').html() === 'about a minute from now'), 'Correctly parsed');
});
test('-30 sec', function () {
ok(($('#testWording3').html() === 'less than a minute from now'), 'Correctly parsed');
});
test('-1 sec', function () {
ok(($('#testWording4').html() === 'less than a minute from now'), 'Correctly parsed');
});
test('0 sec', function () {
ok(($('#testWording5').html() === 'less than a minute ago'), 'Correctly parsed');
});
test('30 sec', function () {
ok(($('#testWording6').html() === 'less than a minute ago'), 'Correctly parsed');
});
test('45 sec', function () {
ok(($('#testWording7').html() === 'about a minute ago'), 'Correctly parsed');
});
test('90 sec', function () {
ok(($('#testWording8').html() === '2 minutes ago'), 'Correctly parsed');
});
test('120 sec', function () {
ok(($('#testWording9').html() === '2 minutes ago'), 'Correctly parsed');
});
test('45 min', function () {
ok(($('#testWording10').html() === 'about an hour ago'), 'Correctly parsed');
});
test('89 min', function () {
ok(($('#testWording11').html() === 'about an hour ago'), 'Correctly parsed');
});
test('90 min', function () {
ok(($('#testWording12').html() === 'about 2 hours ago'), 'Correctly parsed');
});
test('120 min', function () {
ok(($('#testWording13').html() === 'about 2 hours ago'), 'Correctly parsed');
});
test('1380 min', function () {
ok(($('#testWording14').html() === 'about 23 hours ago'), 'Correctly parsed');
});
test('25 hours', function () {
ok(($('#testWording15').html() === 'a day ago'), 'Correctly parsed');
});
test('48 hours', function () {
ok(($('#testWording16').html() === '2 days ago'), 'Correctly parsed');
});
test('696 hours', function () {
ok(($('#testWording17').html() === '29 days ago'), 'Correctly parsed');
});
test('30 days', function () {
ok(($('#testWording18').html() === 'about a month ago'), 'Correctly parsed');
});
test('190 days', function () {
ok(($('#testWording19').html() === '6 months ago'), 'Correctly parsed');
});
test('366 days', function () {
ok(($('#testWording20').html() === 'about a year ago'), 'Correctly parsed');
});
test('1095 days', function () {
ok(($('#testWording21').html() === '3 years ago'), 'Correctly parsed');
});
module('Settings');
test('suffixFromNow', function () {
ok($('#testLatinSettings1').html().match(/omNow-fray$/), 'Settings correctly applied');
});
test('suffixAgo', function () {
ok($('#testLatinSettings5').html().match(/ago-hay$/), 'Settings correctly applied');
ok($('#testRussianSettings5').html().match(/назад$/), 'Settings correctly applied');
});
test('prefixFromNow', function () {
ok($('#testRussianSettings2').html().match(/^через/), 'Settings correctly applied');
});
test('seconds', function () {
ok($('#testLatinSettings5').html().match(/^ess-lay an-thay a-hay inute-may/), 'Settings correctly applied');
ok($('#testRussianSettings5').html().match(/^меньше минуты/), 'Settings correctly applied');
});
test('minute', function () {
ok($('#testLatinSettings7').html().match(/^about-hay a-hay inute-may/), 'Settings correctly applied');
ok($('#testRussianSettings7').html().match(/^минуту/), 'Settings correctly applied');
});
test('minutes', function () {
ok($('#testLatinSettings8').html().match(/^2 inutes-may/), 'Settings correctly applied');
ok($('#testRussianSettings8').html().match(/^2 минуты/), 'Settings correctly applied');
// TODO: Test 'минута' and 'минут'
});
test('hour', function () {
ok($('#testLatinSettings10').html().match(/^about-hay an-hay hour-hay/), 'Settings correctly applied');
ok($('#testRussianSettings10').html().match(/^час/), 'Settings correctly applied');
});
test('hours', function () {
ok($('#testLatinSettings12').html().match(/^about-hay 2 hours-hay/), 'Settings correctly applied');
ok($('#testRussianSettings12').html().match(/^2 часа/), 'Settings correctly applied');
// TODO: Test 'час' and 'часов'
});
test('day', function () {
ok($('#testLatinSettings15').html().match(/^a-hay ay-day/), 'Settings correctly applied');
ok($('#testRussianSettings15').html().match(/^день/), 'Settings correctly applied');
});
test('days', function () {
ok($('#testLatinSettings16').html().match(/^2 ays-day/), 'Settings correctly applied');
ok($('#testRussianSettings16').html().match(/^2 дня/), 'Settings correctly applied');
ok($('#testRussianSettings17').html().match(/^29 дней/), 'Settings correctly applied');
// TODO: Test 'день'
});
test('month', function () {
ok($('#testLatinSettings18').html().match(/^about-hay a-hay onth-may/), 'Settings correctly applied');
ok($('#testRussianSettings18').html().match(/^месяц/), 'Settings correctly applied');
});
test('months', function () {
ok($('#testLatinSettings19').html().match(/^6 onths-may/), 'Settings correctly applied');
ok($('#testRussianSettings19').html().match(/^6 месяцев/), 'Settings correctly applied');
// TODO: Test 'месяца' and 'месяц'
});
test('year', function () {
ok($('#testLatinSettings20').html().match(/^about-hay a-hay ear-yay/), 'Settings correctly applied');
ok($('#testRussianSettings20').html().match(/^год/), 'Settings correctly applied');
});
test('years', function () {
ok($('#testYoungOldSettings1').html().match(/^16 young years/), 'Settings correctly applied');
ok($('#testYoungOldSettings2').html().match(/^64 old years/), 'Settings correctly applied');
ok($('#testLatinSettings21').html().match(/^3 years-yay/), 'Settings correctly applied');
ok($('#testRussianSettings21').html().match(/^3 года/), 'Settings correctly applied');
// TODO: Test 'год' and 'лет'
});
})(jQuery);
//]]>
< / script >
< / body >
< / html >