test-date.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. var date = require('../lib/date');
  2. var minutes = 60;
  3. var hours = minutes * 60;
  4. var days = hours * 24;
  5. var years = days * 365;
  6. var leapYears = days * 366;
  7. module.exports = {
  8. 'test parse unix epoch without timezone': function(test) {
  9. var dateStr = '1970:01:01 00:00:00';
  10. var timestamp = date.parseDateWithSpecFormat(dateStr);
  11. test.strictEqual(timestamp, 0);
  12. test.done();
  13. },
  14. 'test parse given date without timezone': function(test) {
  15. var dateStr = '1990:02:14 14:30:14';
  16. var timestamp = date.parseDateWithSpecFormat(dateStr);
  17. //between 1970 and 1990 there were 5 leap years: 1972, 1976, 1980, 1984, 1988
  18. var expectedTimestamp = (15 * years) + (5 * leapYears) +
  19. ((31 + 13) * days) + (14 * hours) + (30 * minutes) + 14;
  20. test.strictEqual(timestamp, expectedTimestamp);
  21. test.done();
  22. },
  23. 'test parse invalid date without timezone should not return anything': function(test) {
  24. var dateStr = '1990:AA:14 14:30:14';
  25. var timestamp = date.parseDateWithSpecFormat(dateStr);
  26. test.strictEqual(timestamp, undefined);
  27. test.done();
  28. },
  29. 'test parse given date with timezone': function(test) {
  30. var dateStr = '2004-09-04T23:39:06-08:00';
  31. var timestamp = date.parseDateWithTimezoneFormat(dateStr);
  32. var yearsFromEpoch = 2004 - 1970;
  33. //1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000
  34. var leapYearsCount = 8;
  35. //2004 is a leap year as well, hence 29 days for february
  36. var dayCount = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 3;
  37. var expectedTimestamp = (yearsFromEpoch - leapYearsCount) * years +
  38. leapYearsCount * leapYears +
  39. dayCount * days +
  40. 23 * hours +
  41. 39 * minutes +
  42. 6 +
  43. 8 * hours; //for timezone
  44. test.strictEqual(timestamp, expectedTimestamp);
  45. test.done();
  46. },
  47. 'test parse invalid date with timezone': function(test) {
  48. var dateStr = '2004-09-04T23:39:06A08:00';
  49. var timestamp = date.parseDateWithTimezoneFormat(dateStr);
  50. test.strictEqual(timestamp, undefined);
  51. test.done();
  52. },
  53. 'test parseExifDate': function(test) {
  54. test.strictEqual(date.parseExifDate('1970:01:01 00:00:00'), 0);
  55. test.strictEqual(date.parseExifDate('1970-01-01T00:00:00-01:00'), 3600);
  56. test.done();
  57. }
  58. }