fbpx
วิกิพีเดีย

มอดูล:Dts/testcases

local mDts = require('module:dts') -- the module to be tested local Dts = mDts._exportClasses().Dts -- the Dts class local ScribuntoUnit = require('Module:ScribuntoUnit') local suite = ScribuntoUnit:new()  ------------------------------------------------------------------------------- -- Helper functions and values -------------------------------------------------------------------------------  suite.currentYear = os.date('*t').year suite.nowrapPattern = '^<span data%-sort%-value="[^"<>]-" style="white%-space:nowrap">[^<>]-</span>$'  suite.offValues = {'off', 'no', 'NO', 'n', 'false', false} suite.onValues = {'on', 'yes', 'YES', 'y', 'true', true} local function makeOnOffAsserts(fragment)  suite['assert' .. fragment .. 'WhenOn'] = function (self, first, func, ...)  for i, on in ipairs(suite.onValues) do  self['assert' .. fragment](self, first, func(on), ...)  end  end  suite['assert' .. fragment .. 'WhenOff'] = function (self, first, func, ...)  for i, off in ipairs(suite.offValues) do  self['assert' .. fragment](self, first, func(off), ...)  end  end end makeOnOffAsserts('Equals') makeOnOffAsserts('StringContains') makeOnOffAsserts('NotStringContains')  function suite:assertErrorContains(pattern, func, plain)  local success, msg = pcall(func)  self:assertFalse(success)  self:assertStringContains(pattern, msg, plain) end  function suite:assertDateEquals(year, month, day, args)  local dtsObj = Dts.new(args)  self:assertEquals(year, dtsObj.year)  self:assertEquals(month, dtsObj.month)  self:assertEquals(day, dtsObj.day) end  function suite:assertSortKeyEquals(expected, args)  local dtsObj = Dts.new(args)  self:assertEquals(expected, dtsObj:makeSortKey()) end  function suite:assertDisplayEquals(expected, args)  local dtsObj = Dts.new(args)  self:assertEquals(expected, dtsObj:makeDisplay()) end  ------------------------------------------------------------------------------- -- Date parameter tests -------------------------------------------------------------------------------  function suite:testDateYMD()  self:assertDateEquals(2000, 1, 27, {2000, 1, 27}) end  function suite:testDateYMonthD()  self:assertDateEquals(2000, 1, 27, {2000, 'January', 27})  self:assertDateEquals(2000, 1, 27, {2000, 'january', 27}) end  function suite:testDateYMonthDThai()  self:assertDateEquals(2000, 1, 27, {2000, 'มกราคม', 27}) end  function suite:testDateYMonD()  self:assertDateEquals(2000, 1, 27, {2000, 'Jan', 27})  self:assertDateEquals(2000, 1, 27, {2000, 'jan', 27}) end  function suite:testDateYMonDThai()  self:assertDateEquals(2000, 1, 27, {2000, 'ม.ค.', 27}) end  function suite:testDateYM()  self:assertDateEquals(2000, 1, nil, {2000, 1}) end  function suite:testDateYD()  self:assertDateEquals(2000, nil, 27, {2000, nil, 27}) end  function suite:testDateMD()  self:assertDateEquals(nil, 1, 27, {nil, 1, 27}) end  function suite:testDateY()  self:assertDateEquals(2000, nil, nil, {2000}) end  function suite:testDateM()  self:assertDateEquals(nil, 1, nil, {nil, 1}) end  function suite:testDateD()  self:assertDateEquals(nil, nil, 27, {nil, nil, 27}) end  function suite:testDateNegativeYear()  self:assertDateEquals(-2000, 1, 27, {-2000, 1, 27}) end  function suite:testDateString()  self:assertDateEquals(2000, 1, 27, {'2000', '1', '27'}) end  function suite:testDateAllMonths()  self:assertDateEquals(nil, 1, nil, {nil, 'January', nil})  self:assertDateEquals(nil, 2, nil, {nil, 'February', nil})  self:assertDateEquals(nil, 3, nil, {nil, 'March', nil})  self:assertDateEquals(nil, 4, nil, {nil, 'April', nil})  self:assertDateEquals(nil, 5, nil, {nil, 'May', nil})  self:assertDateEquals(nil, 6, nil, {nil, 'June', nil})  self:assertDateEquals(nil, 7, nil, {nil, 'July', nil})  self:assertDateEquals(nil, 8, nil, {nil, 'August', nil})  self:assertDateEquals(nil, 9, nil, {nil, 'September', nil})  self:assertDateEquals(nil, 10, nil, {nil, 'October', nil})  self:assertDateEquals(nil, 11, nil, {nil, 'November', nil})  self:assertDateEquals(nil, 12, nil, {nil, 'December', nil}) end  function suite:testDateAllMonthsThai()  self:assertDateEquals(nil, 1, nil, {nil, 'มกราคม', nil})  self:assertDateEquals(nil, 2, nil, {nil, 'กุมภาพันธ์', nil})  self:assertDateEquals(nil, 3, nil, {nil, 'มีนาคม', nil})  self:assertDateEquals(nil, 4, nil, {nil, 'เมษายน', nil})  self:assertDateEquals(nil, 5, nil, {nil, 'พฤษภาคม', nil})  self:assertDateEquals(nil, 6, nil, {nil, 'มิถุนายน', nil})  self:assertDateEquals(nil, 7, nil, {nil, 'กรกฎาคม', nil})  self:assertDateEquals(nil, 8, nil, {nil, 'สิงหาคม', nil})  self:assertDateEquals(nil, 9, nil, {nil, 'กันยายน', nil})  self:assertDateEquals(nil, 10, nil, {nil, 'ตุลาคม', nil})  self:assertDateEquals(nil, 11, nil, {nil, 'พฤศจิกายน', nil})  self:assertDateEquals(nil, 12, nil, {nil, 'ธันวาคม', nil}) end  function suite:testDateAllMons()  self:assertDateEquals(nil, 1, nil, {nil, 'Jan', nil})  self:assertDateEquals(nil, 2, nil, {nil, 'Feb', nil})  self:assertDateEquals(nil, 3, nil, {nil, 'Mar', nil})  self:assertDateEquals(nil, 4, nil, {nil, 'Apr', nil})  self:assertDateEquals(nil, 5, nil, {nil, 'May', nil})  self:assertDateEquals(nil, 6, nil, {nil, 'Jun', nil})  self:assertDateEquals(nil, 7, nil, {nil, 'Jul', nil})  self:assertDateEquals(nil, 8, nil, {nil, 'Aug', nil})  self:assertDateEquals(nil, 9, nil, {nil, 'Sep', nil})  self:assertDateEquals(nil, 10, nil, {nil, 'Oct', nil})  self:assertDateEquals(nil, 11, nil, {nil, 'Nov', nil})  self:assertDateEquals(nil, 12, nil, {nil, 'Dec', nil}) end  function suite:testDateAllMonsThai()  self:assertDateEquals(nil, 1, nil, {nil, 'ม.ค.', nil})  self:assertDateEquals(nil, 2, nil, {nil, 'ก.พ.', nil})  self:assertDateEquals(nil, 3, nil, {nil, 'มี.ค.', nil})  self:assertDateEquals(nil, 4, nil, {nil, 'เม.ย.', nil})  self:assertDateEquals(nil, 5, nil, {nil, 'พ.ค.', nil})  self:assertDateEquals(nil, 6, nil, {nil, 'มิ.ย.', nil})  self:assertDateEquals(nil, 7, nil, {nil, 'ก.ค.', nil})  self:assertDateEquals(nil, 8, nil, {nil, 'ส.ค ', nil})  self:assertDateEquals(nil, 9, nil, {nil, 'ก.ย.', nil})  self:assertDateEquals(nil, 10, nil, {nil, 'ต.ค.', nil})  self:assertDateEquals(nil, 11, nil, {nil, 'พ.ย.', nil})  self:assertDateEquals(nil, 12, nil, {nil, 'ธ.ค.', nil}) end  ------------------------------------------------------------------------------- -- parseDate tests -------------------------------------------------------------------------------  function suite:testParseYear()  self:assertDateEquals(2000, nil, nil, {'2000'}) end  function suite:testParseNegativeYear()  self:assertDateEquals(-2000, nil, nil, {'-2000'}) end  function suite:testParseSmallYear()  self:assertDateEquals(12, nil, nil, {'12'}) end  function suite:testParseYYYYMMDD()  self:assertDateEquals(2000, 1, 27, {'2000-01-27'})  self:assertDateEquals(2000, 1, 27, {'2000-1-27'})  self:assertDateEquals(2000, 1, 6, {'2000-01-06'})  self:assertDateEquals(2000, 1, 6, {'2000-1-06'})  self:assertDateEquals(2000, 1, 6, {'2000-01-6'})  self:assertDateEquals(2000, 1, 6, {'2000-1-6'}) end  function suite:testParseDDMMYYYY()  self:assertDateEquals(2000, 1, 27, {'27-01-2000'})  self:assertDateEquals(2000, 1, 27, {'27-1-2000'})  self:assertDateEquals(2000, 1, 6, {'06-01-2000'}) end  function suite:testParseYYYYMM()  self:assertDateEquals(2000, 1, nil, {'2000-01'}) end  function suite:testParseYYYYMMThai()  self:assertDateEquals(2000, 1, nil, {'2000-1'}) end  function suite:testParseMonthYYYY()  self:assertDateEquals(1418, 2, nil, {'February 1418'}) end  function suite:testParseMonthYYYYThai()  self:assertDateEquals(1917, 2, nil, {'พฤศจิกายน 1917'}) end  function suite:testParseMonYYYY()  self:assertDateEquals(1418, 2, nil, {'Feb 1418'}) end  function suite:testParseMonYYYYThai()  self:assertDateEquals(1917, 7, nil, {'ก.ค. 1917'}) end  function suite:testParseDDMonthYYYY()  self:assertDateEquals(1975, 4, 24, {'24 April 1975'}) end  function suite:testParseDDMonthYYYYThai()  self:assertDateEquals(1917, 7, 16, {'16 กรกฎาคม 1917'}) end  function suite:testParseDDMonYYYY()  self:assertDateEquals(1975, 4, 24, {'24 Apr 1975'}) end  function suite:testParseDDMonYYYYThai()  self:assertDateEquals(1917, 7, 16, {'16 ก.ค. 1917'}) end  function suite:testParseMonthDDYYYY()  self:assertDateEquals(1975, 4, 24, {'April 24, 1975'})  self:assertDateEquals(1975, 4, 24, {'April 24 1975'}) end  function suite:testParseMonthDDYYYYThai()  self:assertDateEquals(1917, 7, 16, {'กรกฎาคม 16 1917'}) end  function suite:testParseMonDDYYYY()  self:assertDateEquals(1975, 4, 24, {'Apr 24, 1975'})  self:assertDateEquals(1975, 4, 24, {'Apr 24 1975'}) end  function suite:testParseMonDDYYYYThai()  self:assertDateEquals(1917, 7, 16, {'ก.ค. 16 1917'}) end  function suite:testParseMonth()  self:assertDateEquals(nil, 4, nil, {'April'})  self:assertDateEquals(nil, 4, nil, {'april'}) end  function suite:testParseMonthThai()  self:assertDateEquals(nil, 4, nil, {'เมษายน'}) end  function suite:testParseMon()  self:assertDateEquals(nil, 4, nil, {'Apr'})  self:assertDateEquals(nil, 4, nil, {'apr'}) end  function suite:testParseMonThai()  self:assertDateEquals(nil, 4, nil, {'เม.ย.'}) end  function suite:testParseDDMonth()  self:assertDateEquals(nil, 11, 12, {'12 November'}) end  function suite:testParseDDMonthThai()  self:assertDateEquals(nil, 11, 12, {'12 พฤศจิกายน'}) end  function suite:testParseDDMon()  self:assertDateEquals(nil, 11, 12, {'12 Nov'}) end  function suite:testParseDDMonThai()  self:assertDateEquals(nil, 11, 12, {'12 พฤศจิกายน'}) end  function suite:testParseMonthDD()  self:assertDateEquals(nil, 11, 12, {'November 12'}) end  function suite:testParseMonthDDThai()  self:assertDateEquals(nil, 11, 12, {'พฤศจิกายน 12'}) end  function suite:testParseMonDD()  self:assertDateEquals(nil, 11, 12, {'Nov 12'}) end  function suite:testParseMonDDThai()  self:assertDateEquals(nil, 11, 12, {'พ.ย. 12'}) end  function suite:testParseDDMonthYYY()  self:assertDateEquals(100, 1, 27, {'27 January 100'}) end  function suite:testParseDDMonthYYYThai()  self:assertDateEquals(100, 1, 27, {'27 มกราคม 100'}) end  function suite:testParseDDMonth0YYY()  self:assertDateEquals(100, 1, 27, {'27 January 0100'}) end  function suite:testParseDDMonth0YYYThai()  self:assertDateEquals(100, 1, 27, {'27 มกราคม 0100'}) end  function suite:testParseDDMonth000Y()  self:assertDateEquals(3, 1, 27, {'27 January 0003'}) end  function suite:testParseDDMonth000YThai()  self:assertDateEquals(3, 1, 27, {'27 มกราคม 0003'}) end  function suite:testParseAllMonths()  self:assertDateEquals(nil, 1, nil, {'January'})  self:assertDateEquals(nil, 2, nil, {'February'})  self:assertDateEquals(nil, 3, nil, {'March'})  self:assertDateEquals(nil, 4, nil, {'April'})  self:assertDateEquals(nil, 5, nil, {'May'})  self:assertDateEquals(nil, 6, nil, {'June'})  self:assertDateEquals(nil, 7, nil, {'July'})  self:assertDateEquals(nil, 8, nil, {'August'})  self:assertDateEquals(nil, 9, nil, {'September'})  self:assertDateEquals(nil, 10, nil, {'October'})  self:assertDateEquals(nil, 11, nil, {'November'})  self:assertDateEquals(nil, 12, nil, {'December'}) end  function suite:testParseAllMonthsThai()  self:assertDateEquals(nil, 1, nil, {'มกราคม'})  self:assertDateEquals(nil, 2, nil, {'กุมภาพันธ์'})  self:assertDateEquals(nil, 3, nil, {'มีนาคม'})  self:assertDateEquals(nil, 4, nil, {'เมษายน'})  self:assertDateEquals(nil, 5, nil, {'พฤษภาคม'})  self:assertDateEquals(nil, 6, nil, {'มิถุนายน'})  self:assertDateEquals(nil, 7, nil, {'กรกฎาคม'})  self:assertDateEquals(nil, 8, nil, {'สิงหาคม'})  self:assertDateEquals(nil, 9, nil, {'กันยายน'})  self:assertDateEquals(nil, 10, nil, {'ตุลาคม'})  self:assertDateEquals(nil, 11, nil, {'พฤศจิกายน'})  self:assertDateEquals(nil, 12, nil, {'ธันวาคม'}) end  function suite:testParseAllMons()  self:assertDateEquals(nil, 1, nil, {'Jan'})  self:assertDateEquals(nil, 2, nil, {'Feb'})  self:assertDateEquals(nil, 3, nil, {'Mar'})  self:assertDateEquals(nil, 4, nil, {'Apr'})  self:assertDateEquals(nil, 5, nil, {'May'})  self:assertDateEquals(nil, 6, nil, {'Jun'})  self:assertDateEquals(nil, 7, nil, {'Jul'})  self:assertDateEquals(nil, 8, nil, {'Aug'})  self:assertDateEquals(nil, 9, nil, {'Sep'})  self:assertDateEquals(nil, 10, nil, {'Oct'})  self:assertDateEquals(nil, 11, nil, {'Nov'})  self:assertDateEquals(nil, 12, nil, {'Dec'}) end  function suite:testParseAllMonsThai()  self:assertDateEquals(nil, 1, nil, {'ม.ค.'})  self:assertDateEquals(nil, 2, nil, {'ก.พ.'})  self:assertDateEquals(nil, 3, nil, {'มี.ค.'})  self:assertDateEquals(nil, 4, nil, {'เม.ย.'})  self:assertDateEquals(nil, 5, nil, {'พ.ค.'})  self:assertDateEquals(nil, 6, nil, {'มิ.ย.'})  self:assertDateEquals(nil, 7, nil, {'ก.ค.'})  self:assertDateEquals(nil, 8, nil, {'ส.ค '})  self:assertDateEquals(nil, 9, nil, {'ก.ย.'})  self:assertDateEquals(nil, 10, nil, {'ต.ค.'})  self:assertDateEquals(nil, 11, nil, {'พ.ย.'})  self:assertDateEquals(nil, 12, nil, {'ธ.ค.'}) end  function suite:testParseSept()  self:assertDateEquals(nil, 9, nil, {'Sept'})  self:assertDateEquals(nil, 9, nil, {'sept'})  self:assertDateEquals(2012, 9, 1, {'1 Sept 2012'})  self:assertDateEquals(2012, 9, 1, {2012, 'Sept', 1}) end  function suite:testParseSeptThai()  self:assertDateEquals(nil, 9, nil, {'ก.ย.'})  self:assertDateEquals(2012, 9, 1, {'1 ก.ย. 2012'})  self:assertDateEquals(2012, 9, 1, {2012, 'ก.ย.', 1}) end  ------------------------------------------------------------------------------- -- Date error tests -------------------------------------------------------------------------------  function suite:testInvalidDateError()  self:assertErrorContains("'foo' is an invalid date", function ()  Dts.new{'foo'}  end) end  function suite:testZeroYearError()  self:assertErrorContains('years cannot be zero', function ()  Dts.new{0}  end) end  function suite:testYearNonIntegerError()  self:assertErrorContains('years must be an integer', function ()  Dts.new{2015.5}  end) end  function suite:testYearLowRangeError()  self:assertErrorContains(  'years cannot be less than -999,999,999,999',  function ()  Dts.new{-1000000000000}  end,  true -- plain match  ) end  function suite:testYearHighRangeError()  self:assertErrorContains('years cannot be greater than 999,999,999,999', function ()  Dts.new{1000000000000}  end) end  function suite:testMonthError()  self:assertErrorContains('months must be an integer between 1 and 12', function ()  Dts.new{2000, 0}  end)  self:assertErrorContains('months must be an integer between 1 and 12', function ()  Dts.new{2000, 13}  end) end  function suite:testDayError()  self:assertErrorContains('days must be an integer between 1 and 31', function ()  Dts.new{2000, 1, 0}  end)  self:assertErrorContains('days must be an integer between 1 and 31', function ()  Dts.new{2000, 1, 32}  end) end  function suite:testBCError()  self:assertErrorContains(  "'foo' is not a valid era code (expected 'BC', 'BCE', 'AD' or 'CE')",  function ()  Dts.new{2000, 1, 27, 'foo'}  end,  true -- plain match  ) end  ------------------------------------------------------------------------------- -- Sort key tests -------------------------------------------------------------------------------  function suite:testSortKeyYMD()  suite:assertSortKeyEquals('000000002000-05-27-0000', {2000, 5, 27})  suite:assertSortKeyEquals('000000002000-01-27-0000', {2000, 1, 27})  suite:assertSortKeyEquals('000000002000-01-01-0000', {2000, 1, 1})  suite:assertSortKeyEquals('000000000001-01-01-0000', {1, 1, 1}) end  function suite:testSortKeyYM()  suite:assertSortKeyEquals('000000002000-05-01-0000', {2000, 5, nil}) end  function suite:testSortKeyYD()  suite:assertSortKeyEquals('000000002000-01-27-0000', {2000, nil, 27}) end  function suite:testSortKeyMD()  suite:assertSortKeyEquals('00000000' .. suite.currentYear .. '-05-27-0000', {nil, 5, 27}) end  function suite:testSortKeyY()  suite:assertSortKeyEquals('000000002000-01-01-0000', {2000, nil, nil}) end  function suite:testSortKeyM()  suite:assertSortKeyEquals('00000000' .. suite.currentYear .. '-05-01-0000', {nil, 5, nil}) end  function suite:testSortKeyD()  suite:assertSortKeyEquals('00000000' .. suite.currentYear .. '-01-27-0000', {nil, nil, 27}) end  function suite:testSortKeyNegative()  suite:assertSortKeyEquals('-999999999955-05-27-0000', {-45, 5, 27}) end  function suite:testSortKeyMaxYear()  suite:assertSortKeyEquals('999999999999-01-01-0000', {999999999999}) end  function suite:testSortKeyMinYear()  suite:assertSortKeyEquals('-000000000001-01-01-0000', {-999999999999}) end  function suite:testSortKeyBlank()  suite:assertSortKeyEquals('999999999999-99-99-0000', {}) end  ------------------------------------------------------------------------------- -- addkey tests -------------------------------------------------------------------------------  function suite:testAddkey()  suite:assertSortKeyEquals('000000002000-05-27-0003', {2000, 5, 27, addkey = 3})  suite:assertSortKeyEquals('000000002000-05-27-0003', {2000, 5, 27, addkey = '3'}) end  function suite:testAddkeyError()  local msg = "the 'addkey' parameter must be an integer between 0 and 9999"  self:assertErrorContains(msg, function ()  Dts.new{2000, 5, 27, addkey = 3.5}  end)  self:assertErrorContains(msg, function ()  Dts.new{2000, 5, 27, addkey = -1}  end)  self:assertErrorContains(msg, function ()  Dts.new{2000, 5, 27, addkey = 10000}  end) end  ------------------------------------------------------------------------------- -- Display tests -------------------------------------------------------------------------------  function suite:testFormatDefault()  suite:assertDisplayEquals('มกราคม 27, 2000', {2000, 1, 27}) end  function suite:testFormatDMY()  suite:assertDisplayEquals('27 มกราคม 2000', {2000, 1, 27, format = 'dmy'}) end  function suite:testFormatMDY()  suite:assertDisplayEquals('มกราคม 27, 2000', {2000, 1, 27, format = 'mdy'}) end  function suite:testFormatDM()  suite:assertDisplayEquals('27 มกราคม', {2000, 1, 27, format = 'dm'}) end  function suite:testFormatMD()  suite:assertDisplayEquals('มกราคม 27', {2000, 1, 27, format = 'md'}) end  function suite:testFormatMY()  suite:assertDisplayEquals('มกราคม 2000', {2000, 1, 27, format = 'my'}) end  function suite:testFormatY()  suite:assertDisplayEquals('2000', {2000, 1, 27, format = 'y'}) end  function suite:testFormatM()  suite:assertDisplayEquals('มกราคม', {2000, 1, 27, format = 'm'}) end  function suite:testFormatD()  suite:assertDisplayEquals('27', {2000, 1, 27, format = 'd'}) end  function suite:testFormatHide()  suite:assertDisplayEquals('', {2000, 1, 27, format = 'hide'}) end  function suite:testBCParam()  local result = '27 มกราคม 2000&nbsp;BC'  suite:assertDisplayEquals(result, {2000, 1, 27, 'BC'})  suite:assertDisplayEquals(result, {2000, 1, 27, 'BCE'})  suite:assertDisplayEquals(result, {2000, 1, 27, 'bc'})  suite:assertDisplayEquals(result, {2000, 1, 27, 'bce'}) end  function suite:testBCNegativeYear()  suite:assertDisplayEquals('27 January 2000&nbsp;BC', {-2000, 1, 27})  suite:assertDisplayEquals('27 มกราคม 2000&nbsp;BC', {-2000, 1, 27}) end  function suite:testLargeYearDisplay()  suite:assertDisplayEquals('1,000,000', {1000000}) end  function suite:testLargeNegativeYearDisplay()  suite:assertDisplayEquals('1,000,000&nbsp;BC', {-1000000}) end  ------------------------------------------------------------------------------- -- Blank tests -------------------------------------------------------------------------------  function suite:testBlank()  self:assertStringContains(  '^<span data%-sort%-value="[^"<>]-"></span>$',  mDts._main{}  ) end  ------------------------------------------------------------------------------- -- Nowrap tests -------------------------------------------------------------------------------  function suite:testNoWrapDefault()  self:assertStringContains(  self.nowrapPattern,  mDts._main{2000, 1, 1}  ) end  function suite:testNoWrapOff()  self:assertStringContainsWhenOff(  '^<span data%-sort%-value="[^"<>]-">[^>]-</span>$',  function (off)  return mDts._main{2000, 1, 1, nowrap = off}  end  )  self:assertNotStringContainsWhenOff(  'white%-space%s*:%s*nowrap',  function (off)  return mDts._main{2000, 1, 1, nowrap = off}  end  ) end  function suite:testNoWrapOn()  self:assertStringContainsWhenOn(  self.nowrapPattern,  function (on)  return mDts._main{2000, 1, 1, nowrap = on}  end  ) end  ------------------------------------------------------------------------------- -- Abbr tests -------------------------------------------------------------------------------  function suite:testAbbrDefault()  self:assertStringContains(  '1 มกราคม 2000',  mDts._main{2000, 1, 1}  ) end  function suite:testAbbrOn()  self:assertStringContainsWhenOn(  '1 ม.ค. 2000',  function (on)  return mDts._main{2000, 1, 1, abbr = on}  end  ) end  function suite:testAbbrOff()  self:assertStringContainsWhenOff(  'มกราคม 1, 2000',  function (off)  return mDts._main{2000, 1, 1, abbr = off}  end  ) end  ------------------------------------------------------------------------------- -- Tracking category tests -------------------------------------------------------------------------------  function suite:testTrackingCategory()  self:assertStringContains(  '[[Category:Date table sorting templates with deprecated parameters]]',  mDts._main{2000, 1, 1, link = 'off'},  true -- plain match  ) end  ------------------------------------------------------------------------------- -- Main tests -------------------------------------------------------------------------------  function suite:testMain()  local errorPattern = '^<strong class="error">Error in %[%[Template:Date table sorting%]%]: .-</strong>'  self:assertStringContains(errorPattern, mDts.main{'foo'})  self:assertNotStringContains(errorPattern, mDts.main{2000})  self:assertStringContains(errorPattern, mDts._main{'foo'})  self:assertNotStringContains(errorPattern, mDts._main{2000}) end  return suite 

มอด, testcases, อหน, าช, ดทดสอบของมอด, มอด, ผลล, พธ, ของช, ดทดสอบlocal, mdts, require, module, module, tested, local, mdts, exportclasses, class, local, scribuntounit, require, module, scribuntounit, local, suite, scribuntounit, helper, functions, values, suit. nikhuxhnachudthdsxbkhxngmxdul mxdul Dts phllphthkhxngchudthdsxblocal mDts require module dts the module to be tested local Dts mDts exportClasses Dts the Dts class local ScribuntoUnit require Module ScribuntoUnit local suite ScribuntoUnit new Helper functions and values suite currentYear os date t year suite nowrapPattern lt span data sort value lt gt style white space nowrap gt lt gt lt span gt suite offValues off no NO n false false suite onValues on yes YES y true true local function makeOnOffAsserts fragment suite assert fragment WhenOn function self first func for i on in ipairs suite onValues do self assert fragment self first func on end end suite assert fragment WhenOff function self first func for i off in ipairs suite offValues do self assert fragment self first func off end end end makeOnOffAsserts Equals makeOnOffAsserts StringContains makeOnOffAsserts NotStringContains function suite assertErrorContains pattern func plain local success msg pcall func self assertFalse success self assertStringContains pattern msg plain end function suite assertDateEquals year month day args local dtsObj Dts new args self assertEquals year dtsObj year self assertEquals month dtsObj month self assertEquals day dtsObj day end function suite assertSortKeyEquals expected args local dtsObj Dts new args self assertEquals expected dtsObj makeSortKey end function suite assertDisplayEquals expected args local dtsObj Dts new args self assertEquals expected dtsObj makeDisplay end Date parameter tests function suite testDateYMD self assertDateEquals 2000 1 27 2000 1 27 end function suite testDateYMonthD self assertDateEquals 2000 1 27 2000 January 27 self assertDateEquals 2000 1 27 2000 january 27 end function suite testDateYMonthDThai self assertDateEquals 2000 1 27 2000 mkrakhm 27 end function suite testDateYMonD self assertDateEquals 2000 1 27 2000 Jan 27 self assertDateEquals 2000 1 27 2000 jan 27 end function suite testDateYMonDThai self assertDateEquals 2000 1 27 2000 m kh 27 end function suite testDateYM self assertDateEquals 2000 1 nil 2000 1 end function suite testDateYD self assertDateEquals 2000 nil 27 2000 nil 27 end function suite testDateMD self assertDateEquals nil 1 27 nil 1 27 end function suite testDateY self assertDateEquals 2000 nil nil 2000 end function suite testDateM self assertDateEquals nil 1 nil nil 1 end function suite testDateD self assertDateEquals nil nil 27 nil nil 27 end function suite testDateNegativeYear self assertDateEquals 2000 1 27 2000 1 27 end function suite testDateString self assertDateEquals 2000 1 27 2000 1 27 end function suite testDateAllMonths self assertDateEquals nil 1 nil nil January nil self assertDateEquals nil 2 nil nil February nil self assertDateEquals nil 3 nil nil March nil self assertDateEquals nil 4 nil nil April nil self assertDateEquals nil 5 nil nil May nil self assertDateEquals nil 6 nil nil June nil self assertDateEquals nil 7 nil nil July nil self assertDateEquals nil 8 nil nil August nil self assertDateEquals nil 9 nil nil September nil self assertDateEquals nil 10 nil nil October nil self assertDateEquals nil 11 nil nil November nil self assertDateEquals nil 12 nil nil December nil end function suite testDateAllMonthsThai self assertDateEquals nil 1 nil nil mkrakhm nil self assertDateEquals nil 2 nil nil kumphaphnth nil self assertDateEquals nil 3 nil nil minakhm nil self assertDateEquals nil 4 nil nil emsayn nil self assertDateEquals nil 5 nil nil phvsphakhm nil self assertDateEquals nil 6 nil nil mithunayn nil self assertDateEquals nil 7 nil nil krkdakhm nil self assertDateEquals nil 8 nil nil singhakhm nil self assertDateEquals nil 9 nil nil knyayn nil self assertDateEquals nil 10 nil nil tulakhm nil self assertDateEquals nil 11 nil nil phvscikayn nil self assertDateEquals nil 12 nil nil thnwakhm nil end function suite testDateAllMons self assertDateEquals nil 1 nil nil Jan nil self assertDateEquals nil 2 nil nil Feb nil self assertDateEquals nil 3 nil nil Mar nil self assertDateEquals nil 4 nil nil Apr nil self assertDateEquals nil 5 nil nil May nil self assertDateEquals nil 6 nil nil Jun nil self assertDateEquals nil 7 nil nil Jul nil self assertDateEquals nil 8 nil nil Aug nil self assertDateEquals nil 9 nil nil Sep nil self assertDateEquals nil 10 nil nil Oct nil self assertDateEquals nil 11 nil nil Nov nil self assertDateEquals nil 12 nil nil Dec nil end function suite testDateAllMonsThai self assertDateEquals nil 1 nil nil m kh nil self assertDateEquals nil 2 nil nil k ph nil self assertDateEquals nil 3 nil nil mi kh nil self assertDateEquals nil 4 nil nil em y nil self assertDateEquals nil 5 nil nil ph kh nil self assertDateEquals nil 6 nil nil mi y nil self assertDateEquals nil 7 nil nil k kh nil self assertDateEquals nil 8 nil nil s kh nil self assertDateEquals nil 9 nil nil k y nil self assertDateEquals nil 10 nil nil t kh nil self assertDateEquals nil 11 nil nil ph y nil self assertDateEquals nil 12 nil nil th kh nil end parseDate tests function suite testParseYear self assertDateEquals 2000 nil nil 2000 end function suite testParseNegativeYear self assertDateEquals 2000 nil nil 2000 end function suite testParseSmallYear self assertDateEquals 12 nil nil 12 end function suite testParseYYYYMMDD self assertDateEquals 2000 1 27 2000 01 27 self assertDateEquals 2000 1 27 2000 1 27 self assertDateEquals 2000 1 6 2000 01 06 self assertDateEquals 2000 1 6 2000 1 06 self assertDateEquals 2000 1 6 2000 01 6 self assertDateEquals 2000 1 6 2000 1 6 end function suite testParseDDMMYYYY self assertDateEquals 2000 1 27 27 01 2000 self assertDateEquals 2000 1 27 27 1 2000 self assertDateEquals 2000 1 6 06 01 2000 end function suite testParseYYYYMM self assertDateEquals 2000 1 nil 2000 01 end function suite testParseYYYYMMThai self assertDateEquals 2000 1 nil 2000 1 end function suite testParseMonthYYYY self assertDateEquals 1418 2 nil February 1418 end function suite testParseMonthYYYYThai self assertDateEquals 1917 2 nil phvscikayn 1917 end function suite testParseMonYYYY self assertDateEquals 1418 2 nil Feb 1418 end function suite testParseMonYYYYThai self assertDateEquals 1917 7 nil k kh 1917 end function suite testParseDDMonthYYYY self assertDateEquals 1975 4 24 24 April 1975 end function suite testParseDDMonthYYYYThai self assertDateEquals 1917 7 16 16 krkdakhm 1917 end function suite testParseDDMonYYYY self assertDateEquals 1975 4 24 24 Apr 1975 end function suite testParseDDMonYYYYThai self assertDateEquals 1917 7 16 16 k kh 1917 end function suite testParseMonthDDYYYY self assertDateEquals 1975 4 24 April 24 1975 self assertDateEquals 1975 4 24 April 24 1975 end function suite testParseMonthDDYYYYThai self assertDateEquals 1917 7 16 krkdakhm 16 1917 end function suite testParseMonDDYYYY self assertDateEquals 1975 4 24 Apr 24 1975 self assertDateEquals 1975 4 24 Apr 24 1975 end function suite testParseMonDDYYYYThai self assertDateEquals 1917 7 16 k kh 16 1917 end function suite testParseMonth self assertDateEquals nil 4 nil April self assertDateEquals nil 4 nil april end function suite testParseMonthThai self assertDateEquals nil 4 nil emsayn end function suite testParseMon self assertDateEquals nil 4 nil Apr self assertDateEquals nil 4 nil apr end function suite testParseMonThai self assertDateEquals nil 4 nil em y end function suite testParseDDMonth self assertDateEquals nil 11 12 12 November end function suite testParseDDMonthThai self assertDateEquals nil 11 12 12 phvscikayn end function suite testParseDDMon self assertDateEquals nil 11 12 12 Nov end function suite testParseDDMonThai self assertDateEquals nil 11 12 12 phvscikayn end function suite testParseMonthDD self assertDateEquals nil 11 12 November 12 end function suite testParseMonthDDThai self assertDateEquals nil 11 12 phvscikayn 12 end function suite testParseMonDD self assertDateEquals nil 11 12 Nov 12 end function suite testParseMonDDThai self assertDateEquals nil 11 12 ph y 12 end function suite testParseDDMonthYYY self assertDateEquals 100 1 27 27 January 100 end function suite testParseDDMonthYYYThai self assertDateEquals 100 1 27 27 mkrakhm 100 end function suite testParseDDMonth0YYY self assertDateEquals 100 1 27 27 January 0100 end function suite testParseDDMonth0YYYThai self assertDateEquals 100 1 27 27 mkrakhm 0100 end function suite testParseDDMonth000Y self assertDateEquals 3 1 27 27 January 0003 end function suite testParseDDMonth000YThai self assertDateEquals 3 1 27 27 mkrakhm 0003 end function suite testParseAllMonths self assertDateEquals nil 1 nil January self assertDateEquals nil 2 nil February self assertDateEquals nil 3 nil March self assertDateEquals nil 4 nil April self assertDateEquals nil 5 nil May self assertDateEquals nil 6 nil June self assertDateEquals nil 7 nil July self assertDateEquals nil 8 nil August self assertDateEquals nil 9 nil September self assertDateEquals nil 10 nil October self assertDateEquals nil 11 nil November self assertDateEquals nil 12 nil December end function suite testParseAllMonthsThai self assertDateEquals nil 1 nil mkrakhm self assertDateEquals nil 2 nil kumphaphnth self assertDateEquals nil 3 nil minakhm self assertDateEquals nil 4 nil emsayn self assertDateEquals nil 5 nil phvsphakhm self assertDateEquals nil 6 nil mithunayn self assertDateEquals nil 7 nil krkdakhm self assertDateEquals nil 8 nil singhakhm self assertDateEquals nil 9 nil knyayn self assertDateEquals nil 10 nil tulakhm self assertDateEquals nil 11 nil phvscikayn self assertDateEquals nil 12 nil thnwakhm end function suite testParseAllMons self assertDateEquals nil 1 nil Jan self assertDateEquals nil 2 nil Feb self assertDateEquals nil 3 nil Mar self assertDateEquals nil 4 nil Apr self assertDateEquals nil 5 nil May self assertDateEquals nil 6 nil Jun self assertDateEquals nil 7 nil Jul self assertDateEquals nil 8 nil Aug self assertDateEquals nil 9 nil Sep self assertDateEquals nil 10 nil Oct self assertDateEquals nil 11 nil Nov self assertDateEquals nil 12 nil Dec end function suite testParseAllMonsThai self assertDateEquals nil 1 nil m kh self assertDateEquals nil 2 nil k ph self assertDateEquals nil 3 nil mi kh self assertDateEquals nil 4 nil em y self assertDateEquals nil 5 nil ph kh self assertDateEquals nil 6 nil mi y self assertDateEquals nil 7 nil k kh self assertDateEquals nil 8 nil s kh self assertDateEquals nil 9 nil k y self assertDateEquals nil 10 nil t kh self assertDateEquals nil 11 nil ph y self assertDateEquals nil 12 nil th kh end function suite testParseSept self assertDateEquals nil 9 nil Sept self assertDateEquals nil 9 nil sept self assertDateEquals 2012 9 1 1 Sept 2012 self assertDateEquals 2012 9 1 2012 Sept 1 end function suite testParseSeptThai self assertDateEquals nil 9 nil k y self assertDateEquals 2012 9 1 1 k y 2012 self assertDateEquals 2012 9 1 2012 k y 1 end Date error tests function suite testInvalidDateError self assertErrorContains foo is an invalid date function Dts new foo end end function suite testZeroYearError self assertErrorContains years cannot be zero function Dts new 0 end end function suite testYearNonIntegerError self assertErrorContains years must be an integer function Dts new 2015 5 end end function suite testYearLowRangeError self assertErrorContains years cannot be less than 999 999 999 999 function Dts new 1000000000000 end true plain match end function suite testYearHighRangeError self assertErrorContains years cannot be greater than 999 999 999 999 function Dts new 1000000000000 end end function suite testMonthError self assertErrorContains months must be an integer between 1 and 12 function Dts new 2000 0 end self assertErrorContains months must be an integer between 1 and 12 function Dts new 2000 13 end end function suite testDayError self assertErrorContains days must be an integer between 1 and 31 function Dts new 2000 1 0 end self assertErrorContains days must be an integer between 1 and 31 function Dts new 2000 1 32 end end function suite testBCError self assertErrorContains foo is not a valid era code expected BC BCE AD or CE function Dts new 2000 1 27 foo end true plain match end Sort key tests function suite testSortKeyYMD suite assertSortKeyEquals 000000002000 05 27 0000 2000 5 27 suite assertSortKeyEquals 000000002000 01 27 0000 2000 1 27 suite assertSortKeyEquals 000000002000 01 01 0000 2000 1 1 suite assertSortKeyEquals 000000000001 01 01 0000 1 1 1 end function suite testSortKeyYM suite assertSortKeyEquals 000000002000 05 01 0000 2000 5 nil end function suite testSortKeyYD suite assertSortKeyEquals 000000002000 01 27 0000 2000 nil 27 end function suite testSortKeyMD suite assertSortKeyEquals 00000000 suite currentYear 05 27 0000 nil 5 27 end function suite testSortKeyY suite assertSortKeyEquals 000000002000 01 01 0000 2000 nil nil end function suite testSortKeyM suite assertSortKeyEquals 00000000 suite currentYear 05 01 0000 nil 5 nil end function suite testSortKeyD suite assertSortKeyEquals 00000000 suite currentYear 01 27 0000 nil nil 27 end function suite testSortKeyNegative suite assertSortKeyEquals 999999999955 05 27 0000 45 5 27 end function suite testSortKeyMaxYear suite assertSortKeyEquals 999999999999 01 01 0000 999999999999 end function suite testSortKeyMinYear suite assertSortKeyEquals 000000000001 01 01 0000 999999999999 end function suite testSortKeyBlank suite assertSortKeyEquals 999999999999 99 99 0000 end addkey tests function suite testAddkey suite assertSortKeyEquals 000000002000 05 27 0003 2000 5 27 addkey 3 suite assertSortKeyEquals 000000002000 05 27 0003 2000 5 27 addkey 3 end function suite testAddkeyError local msg the addkey parameter must be an integer between 0 and 9999 self assertErrorContains msg function Dts new 2000 5 27 addkey 3 5 end self assertErrorContains msg function Dts new 2000 5 27 addkey 1 end self assertErrorContains msg function Dts new 2000 5 27 addkey 10000 end end Display tests function suite testFormatDefault suite assertDisplayEquals mkrakhm 27 2000 2000 1 27 end function suite testFormatDMY suite assertDisplayEquals 27 mkrakhm 2000 2000 1 27 format dmy end function suite testFormatMDY suite assertDisplayEquals mkrakhm 27 2000 2000 1 27 format mdy end function suite testFormatDM suite assertDisplayEquals 27 mkrakhm 2000 1 27 format dm end function suite testFormatMD suite assertDisplayEquals mkrakhm 27 2000 1 27 format md end function suite testFormatMY suite assertDisplayEquals mkrakhm 2000 2000 1 27 format my end function suite testFormatY suite assertDisplayEquals 2000 2000 1 27 format y end function suite testFormatM suite assertDisplayEquals mkrakhm 2000 1 27 format m end function suite testFormatD suite assertDisplayEquals 27 2000 1 27 format d end function suite testFormatHide suite assertDisplayEquals 2000 1 27 format hide end function suite testBCParam local result 27 mkrakhm 2000 amp nbsp BC suite assertDisplayEquals result 2000 1 27 BC suite assertDisplayEquals result 2000 1 27 BCE suite assertDisplayEquals result 2000 1 27 bc suite assertDisplayEquals result 2000 1 27 bce end function suite testBCNegativeYear suite assertDisplayEquals 27 January 2000 amp nbsp BC 2000 1 27 suite assertDisplayEquals 27 mkrakhm 2000 amp nbsp BC 2000 1 27 end function suite testLargeYearDisplay suite assertDisplayEquals 1 000 000 1000000 end function suite testLargeNegativeYearDisplay suite assertDisplayEquals 1 000 000 amp nbsp BC 1000000 end Blank tests function suite testBlank self assertStringContains lt span data sort value lt gt gt lt span gt mDts main end Nowrap tests function suite testNoWrapDefault self assertStringContains self nowrapPattern mDts main 2000 1 1 end function suite testNoWrapOff self assertStringContainsWhenOff lt span data sort value lt gt gt gt lt span gt function off return mDts main 2000 1 1 nowrap off end self assertNotStringContainsWhenOff white space s s nowrap function off return mDts main 2000 1 1 nowrap off end end function suite testNoWrapOn self assertStringContainsWhenOn self nowrapPattern function on return mDts main 2000 1 1 nowrap on end end Abbr tests function suite testAbbrDefault self assertStringContains 1 mkrakhm 2000 mDts main 2000 1 1 end function suite testAbbrOn self assertStringContainsWhenOn 1 m kh 2000 function on return mDts main 2000 1 1 abbr on end end function suite testAbbrOff self assertStringContainsWhenOff mkrakhm 1 2000 function off return mDts main 2000 1 1 abbr off end end Tracking category tests function suite testTrackingCategory self assertStringContains Category Date table sorting templates with deprecated parameters mDts main 2000 1 1 link off true plain match end Main tests function suite testMain local errorPattern lt strong class error gt Error in Template Date table sorting lt strong gt self assertStringContains errorPattern mDts main foo self assertNotStringContains errorPattern mDts main 2000 self assertStringContains errorPattern mDts main foo self assertNotStringContains errorPattern mDts main 2000 end return suite ekhathungcak https th wikipedia org w index php title mxdul Dts testcases amp oldid 9157242, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม