모듈:날짜표 정렬/테스트 케이스

Module
현지의 mDTS = 요구하다('모듈:날짜 테이블 정렬/샌드박스') -- 테스트할 모듈 현지의 DTS = mDTS._export Classes().DTS -- DTS 클래스 현지의 스크리분토 유닛 = 요구하다('모듈:스크리분토 유닛') 현지의 스위트 = 스크리분토 유닛:신규()  ------------------------------------------------------------------------------- -- 도우미의 기능과 값 -------------------------------------------------------------------------------  스위트.당년도 = os.date('*t').연도 스위트.nowrapPattern = '^ <span data% - span% - value = span^ " < > style = " white% - space : nowrap " > [ ^ < > - / span > $ "  스위트.오프밸류 = {오프, '아니요', '아니요', 'n', 'false', 거짓의} 스위트.온밸류 = {켜다', '네', '네', 'y', '진짜', 진실의} 현지의 기능. make On Off Asserts(메이크 온 어사트)(파편)  스위트['실패' .. 파편 .. 'When On'] = 기능. (자신, 첫번째, 기능하다, ...)   위해서 i,   아이페어(스위트.온밸류) 하다    자신['실패' .. 파편](자신, 첫번째, 기능하다(), ...)   끝.  끝.  스위트['실패' .. 파편 .. 'When Off'] = 기능. (자신, 첫번째, 기능하다, ...)   위해서 i, 쉬는  아이페어(스위트.오프밸류) 하다    자신['실패' .. 파편](자신, 첫번째, 기능하다(쉬는), ...)   끝.  끝. 끝. make On Off Asserts(메이크 온 어사트)('동등') make On Off Asserts(메이크 온 어사트)('문자열 포함') make On Off Asserts(메이크 온 어사트)('NotString Contains')  기능. 스위트:assert Error 포함(양식, 기능하다, 평지)  현지의 성공., 메시지 = pcall(기능하다)  자신:assert False(거짓)(성공.)  자신:assert String 포함(양식, 메시지, 평지) 끝.  기능. 스위트:assertDateEquals(연도, , 하루, args)  현지의 dtsObj = DTS.신규(args)  자신:assert Equals(동일)(연도, dtsObj.연도)  자신:assert Equals(동일)(, dtsObj.)  자신:assert Equals(동일)(하루, dtsObj.하루) 끝.  기능. 스위트:assertSortKeyEquals(기대됩니다, args)  현지의 dtsObj = DTS.신규(args)  자신:assert Equals(동일)(기대됩니다, dtsObj:make Sort 키()) 끝.  기능. 스위트:assert DisplayEquals(표시등)(기대됩니다, args)  현지의 dtsObj = DTS.신규(args)  자신:assert Equals(동일)(기대됩니다, dtsObj:make 디스플레이()) 끝.  ------------------------------------------------------------------------------- -- 날짜 파라미터 테스트 -------------------------------------------------------------------------------  기능. 스위트:테스트 날짜YMD()  자신:assertDateEquals(2000, 1, 27, {2000, 1, 27}) 끝.  기능. 스위트:테스트 날짜YMonthD()  자신:assertDateEquals(2000, 1, 27, {2000, '1월', 27})  자신:assertDateEquals(2000, 1, 27, {2000, '1월', 27}) 끝.  기능. 스위트:테스트 날짜YMonD()  자신:assertDateEquals(2000, 1, 27, {2000, '잔', 27})  자신:assertDateEquals(2000, 1, 27, {2000, '잔, 27}) 끝.  기능. 스위트:테스트 날짜YM()  자신:assertDateEquals(2000, 1, 제로, {2000, 1}) 끝.  기능. 스위트:테스트 날짜YD()  자신:assertDateEquals(2000, 제로, 27, {2000, 제로, 27}) 끝.  기능. 스위트:테스트 날짜MD()  자신:assertDateEquals(제로, 1, 27, {제로, 1, 27}) 끝.  기능. 스위트:테스트 날짜y()  자신:assertDateEquals(2000, 제로, 제로, {2000}) 끝.  기능. 스위트:test Date M()  자신:assertDateEquals(제로, 1, 제로, {제로, 1}) 끝.  기능. 스위트:test Date D()  자신:assertDateEquals(제로, 제로, 27, {제로, 제로, 27}) 끝.  기능. 스위트:test Date Negative Year(음성년)()  자신:assertDateEquals(-2000, 1, 27, {-2000, 1, 27}) 끝.  기능. 스위트:test Date String()  자신:assertDateEquals(2000, 1, 27, {'2000', '1', '27'}) 끝.  기능. 스위트:test Date All Months()  자신:assertDateEquals(제로, 1, 제로, {제로, '1월', 제로})  자신:assertDateEquals(제로, 2, 제로, {제로, '2월', 제로})  자신:assertDateEquals(제로, 3, 제로, {제로, '마치, 제로})  자신:assertDateEquals(제로, 4, 제로, {제로, 에이프릴, 제로})  자신:assertDateEquals(제로, 5, 제로, {제로, '5월', 제로})  자신:assertDateEquals(제로, 6, 제로, {제로, 6월, 제로})  자신:assertDateEquals(제로, 7, 제로, {제로, '7월', 제로})  자신:assertDateEquals(제로, 8, 제로, {제로, 'August', 제로})  자신:assertDateEquals(제로, 9, 제로, {제로, '9월', 제로})  자신:assertDateEquals(제로, 10, 제로, {제로, '10월', 제로})  자신:assertDateEquals(제로, 11, 제로, {제로, '11월', 제로})  자신:assertDateEquals(제로, 12, 제로, {제로, '12월', 제로}) 끝.  기능. 스위트:testDateAllMons()  자신:assertDateEquals(제로, 1, 제로, {제로, '잔', 제로})  자신:assertDateEquals(제로, 2, 제로, {제로, '2월', 제로})  자신:assertDateEquals(제로, 3, 제로, {제로, '마', 제로})  자신:assertDateEquals(제로, 4, 제로, {제로, '4월', 제로})  자신:assertDateEquals(제로, 5, 제로, {제로, '5월', 제로})  자신:assertDateEquals(제로, 6, 제로, {제로, , 제로})  자신:assertDateEquals(제로, 7, 제로, {제로, '줄, 제로})  자신:assertDateEquals(제로, 8, 제로, {제로, 'Augue', 제로})  자신:assertDateEquals(제로, 9, 제로, {제로, , 제로})  자신:assertDateEquals(제로, 10, 제로, {제로, '10월, 제로})  자신:assertDateEquals(제로, 11, 제로, {제로, '11월', 제로})  자신:assertDateEquals(제로, 12, 제로, {제로, 'Dec', 제로}) 끝.  ------------------------------------------------------------------------------- -- parseDate 테스트 -------------------------------------------------------------------------------  기능. 스위트:테스트 년도()  자신:assertDateEquals(2000, 제로, 제로, {'2000'}) 끝.  기능. 스위트:testParse Negative 연도()  자신:assertDateEquals(-2000, 제로, 제로, {'-2000'}) 끝.  기능. 스위트:테스트 파스 스몰이어()  자신:assertDateEquals(12, 제로, 제로, {'12'}) 끝.  기능. 스위트:테스트 파르스YYYMDD()  자신:assertDateEquals(2000, 1, 27, {'2000-01-27'})  자신:assertDateEquals(2000, 1, 27, {'2000-1-27'})  자신:assertDateEquals(2000, 1, 6, {'2000-01-06'})  자신:assertDateEquals(2000, 1, 6, {'2000-01-06'}) 끝.  기능. 스위트:테스트 ParseDMMYYYYY()  자신:assertDateEquals(2000, 1, 27, {'27-01-2000'})  자신:assertDateEquals(2000, 1, 27, {'27-1-2000'})  자신:assertDateEquals(2000, 1, 6, {'06-01-2000'}) 끝.  기능. 스위트:테스트 파르스YYYMM()  자신:assertDateEquals(2000, 1, 제로, {'2000-01'})  자신:assertDateEquals(2000, 1, 제로, {'2000-1'}) 끝.  기능. 스위트:test Parse MonthYYY()  자신:assertDateEquals(1418, 2, 제로, {'1418년 2월'}) 끝.  기능. 스위트:테스트 ParseMonYYYYY()  자신:assertDateEquals(1418, 2, 제로, {'1418년 2월'}) 끝.  기능. 스위트:테스트 Parse DDMonthYYY()  자신:assertDateEquals(1975, 4, 24, {1975년 4월 24일}) 끝.  기능. 스위트:테스트 Parse DDMonYYYYY()  자신:assertDateEquals(1975, 4, 24, {1975년 4월 24일}) 끝.  기능. 스위트:테스트 Parse Month DDYYYY()  자신:assertDateEquals(1975, 4, 24, {1975년 4월 24일})  자신:assertDateEquals(1975, 4, 24, {1975년 4월 24일}) 끝.  기능. 스위트:테스트 ParseMon DDYYYY()  자신:assertDateEquals(1975, 4, 24, {1975년 4월 24일})  자신:assertDateEquals(1975, 4, 24, {1975년 4월 24일}) 끝.  기능. 스위트:test Parse Month()  자신:assertDateEquals(제로, 4, 제로, {에이프릴})  자신:assertDateEquals(제로, 4, 제로, {'4월'}) 끝.  기능. 스위트:테스트 ParseMon()  자신:assertDateEquals(제로, 4, 제로, {'4월'})  자신:assertDateEquals(제로, 4, 제로, {'실패'}) 끝.  기능. 스위트:테스트 Parse DDMonth()  자신:assertDateEquals(제로, 11, 12, {'11월 12일'}) 끝.  기능. 스위트:테스트 Parse DDMon()  자신:assertDateEquals(제로, 11, 12, {'11월 12일'}) 끝.  기능. 스위트:테스트 Parse Month DD()  자신:assertDateEquals(제로, 11, 12, {'11월 12일'}) 끝.  기능. 스위트:테스트 ParseMonDD()  자신:assertDateEquals(제로, 11, 12, {'11월 12일'}) 끝.  기능. 스위트:테스트 Parse DDMonthYYY()  자신:assertDateEquals(100, 1, 27, {'100년 1월 27일'}) 끝.  기능. 스위트:테스트 Parse DDMonth0YYY()  자신:assertDateEquals(100, 1, 27, {'2001년 1월 27일'}) 끝.  기능. 스위트:테스트 Parse DDMonth000y()  자신:assertDateEquals(3, 1, 27, {'0003년 1월 27일'}) 끝.  기능. 스위트:testParseAllMonths()  자신:assertDateEquals(제로, 1, 제로, {'1월'})  자신:assertDateEquals(제로, 2, 제로, {'2월'})  자신:assertDateEquals(제로, 3, 제로, {'마치})  자신:assertDateEquals(제로, 4, 제로, {에이프릴})  자신:assertDateEquals(제로, 5, 제로, {'5월'})  자신:assertDateEquals(제로, 6, 제로, {6월})  자신:assertDateEquals(제로, 7, 제로, {'7월'})  자신:assertDateEquals(제로, 8, 제로, {'August'})  자신:assertDateEquals(제로, 9, 제로, {'9월'})  자신:assertDateEquals(제로, 10, 제로, {'10월'})  자신:assertDateEquals(제로, 11, 제로, {'11월'})  자신:assertDateEquals(제로, 12, 제로, {'12월'}) 끝.  기능. 스위트:테스트 ParseAllMons()  자신:assertDateEquals(제로, 1, 제로, {'잔'})  자신:assertDateEquals(제로, 2, 제로, {'2월'})  자신:assertDateEquals(제로, 3, 제로, {'마'})  자신:assertDateEquals(제로, 4, 제로, {'4월'})  자신:assertDateEquals(제로, 5, 제로, {'5월'})  자신:assertDateEquals(제로, 6, 제로, {})  자신:assertDateEquals(제로, 7, 제로, {'줄})  자신:assertDateEquals(제로, 8, 제로, {'Augue'})  자신:assertDateEquals(제로, 9, 제로, {})  자신:assertDateEquals(제로, 10, 제로, {'10월})  자신:assertDateEquals(제로, 11, 제로, {'11월'})  자신:assertDateEquals(제로, 12, 제로, {'Dec'}) 끝.  기능. 스위트:테스트 Parse Sept()  자신:assertDateEquals(제로, 9, 제로, {'9월'})  자신:assertDateEquals(제로, 9, 제로, {'sept'})  자신:assertDateEquals(2012, 9, 1, {'2012년 9월 1일'})  자신:assertDateEquals(2012, 9, 1, {2012, '9월', 1}) 끝.  ------------------------------------------------------------------------------- -- 날짜 오류 테스트 -------------------------------------------------------------------------------  기능. 스위트:testInvalidDateError()  자신:assert Error 포함("foo"는 잘못된 날짜입니다.", 기능. ()   DTS.신규{'푸'}  끝.) 끝.  기능. 스위트:test Zero Year Error(테스트 제로년 오류)()  자신:assert Error 포함('years는 0일 수 없습니다.', 기능. ()   DTS.신규{0}  끝.) 끝.  기능. 스위트:test YearNonIntegerError()  자신:assert Error 포함('years는 정수여야 합니다.', 기능. ()   DTS.신규{2015.5}  끝.) 끝.  기능. 스위트:test Year Low Range Error(테스트 연도 로우 범위 오류)()  자신:assert Error 포함(   '연도는 -999,999,999보다 작을 수 없습니다.',   기능. ()    DTS.신규{-1000000000000}   끝.,   진실의 -- 플레인 매치  ) 끝.  기능. 스위트:test Year High Range Error(테스트 연도 하이 레인지 에러)()  자신:assert Error 포함('연도는 999,999,999,999보다 클 수 없습니다.', 기능. ()   DTS.신규{1000000000000}  끝.) 끝.  기능. 스위트:test Month Error(테스트 월 오류)()  자신:assert Error 포함('param은 1에서 12 사이의 정수여야 합니다.', 기능. ()   DTS.신규{2000, 0}  끝.)  자신:assert Error 포함('param은 1에서 12 사이의 정수여야 합니다.', 기능. ()   DTS.신규{2000, 13}  끝.) 끝.  기능. 스위트:test Day Error(테스트일 오류)()  자신:assert Error 포함('days는 1에서 31 사이의 정수여야 합니다.', 기능. ()   DTS.신규{2000, 1, 0}  끝.)  자신:assert Error 포함('days는 1에서 31 사이의 정수여야 합니다.', 기능. ()   DTS.신규{2000, 1, 32}  끝.) 끝.  기능. 스위트:테스트()  자신:assert Error 포함(   "foo'는 유효한 시대 코드(예상된 'BC', 'BCE', 'AD' 또는 'CE')가 아닙니다.",   기능. ()    DTS.신규{2000, 1, 27, '푸'}   끝.,   진실의 -- 플레인 매치  ) 끝.  ------------------------------------------------------------------------------- -- 키 테스트 정렬 -------------------------------------------------------------------------------  기능. 스위트:testSortKeyYMD()  스위트:assertSortKeyEquals('000000002000-05-27-0000', {2000, 5, 27})  스위트:assertSortKeyEquals('000000002000-01-27-0000', {2000, 1, 27})  스위트:assertSortKeyEquals('000000002000-01-01-0000', {2000, 1, 1})  스위트:assertSortKeyEquals('000000000001-01-01-0000', {1, 1, 1}) 끝.  기능. 스위트:testSortKeyYM()  스위트:assertSortKeyEquals('000000002000-05-01-0000', {2000, 5, 제로}) 끝.  기능. 스위트:testSortKeyYD()  스위트:assertSortKeyEquals('000000002000-01-27-0000', {2000, 제로, 27}) 끝.  기능. 스위트:testSortKeyMD()  스위트:assertSortKeyEquals('00000000' .. 스위트.당년도 .. '-05-27-0000', {제로, 5, 27}) 끝.  기능. 스위트:testSortKeyy()  스위트:assertSortKeyEquals('000000002000-01-01-0000', {2000, 제로, 제로}) 끝.  기능. 스위트:testSortKeym()  스위트:assertSortKeyEquals('00000000' .. 스위트.당년도 .. '-05-01-0000', {제로, 5, 제로}) 끝.  기능. 스위트:testSortKeyd()  스위트:assertSortKeyEquals('00000000' .. 스위트.당년도 .. '-01-27-0000', {제로, 제로, 27}) 끝.  기능. 스위트:test Sort Key Negative(음성)()  스위트:assertSortKeyEquals('-999999999955-05-27-0000', {-45, 5, 27}) 끝.  기능. 스위트:testSortKeyMax년()  스위트:assertSortKeyEquals('999999999999-01-01-0000', {999999999999}) 끝.  기능. 스위트:testSortKeyMinYear()  스위트:assertSortKeyEquals('-000000000001-01-01-0000', {-999999999999}) 끝.  기능. 스위트:testSortKeyBlank()  스위트:assertSortKeyEquals('999999999999-99-99-0000', {}) 끝.  ------------------------------------------------------------------------------- -- addkey 테스트 -------------------------------------------------------------------------------  기능. 스위트:testAdd키()  스위트:assertSortKeyEquals('000000002000-05-27-0003', {2000, 5, 27, 추가 키 = 3})  스위트:assertSortKeyEquals('000000002000-05-27-0003', {2000, 5, 27, 추가 키 = '3'}) 끝.  기능. 스위트:testAddkeyError(testAddkeyError)()  현지의 메시지 = "'addkey' 매개 변수는 0에서 9999 사이의 정수여야 합니다."  자신:assert Error 포함(메시지, 기능. ()   DTS.신규{2000, 5, 27, 추가 키 = 3.5}  끝.)  자신:assert Error 포함(메시지, 기능. ()   DTS.신규{2000, 5, 27, 추가 키 = -1}  끝.)  자신:assert Error 포함(메시지, 기능. ()   DTS.신규{2000, 5, 27, 추가 키 = 10000}  끝.) 끝.  ------------------------------------------------------------------------------- -- 테스트 표시 -------------------------------------------------------------------------------  기능. 스위트:test Format Default(테스트 포맷 디폴트)()  스위트:assert DisplayEquals(표시등)('2000년 1월 27일', {2000, 1, 27}) 끝.  기능. 스위트:테스트 포맷DMY()  스위트:assert DisplayEquals(표시등)('2000년 1월 27일', {2000, 1, 27, 포맷 = 'dmy'}) 끝.  기능. 스위트:테스트 포맷MDY()  스위트:assert DisplayEquals(표시등)('2000년 1월 27일', {2000, 1, 27, 포맷 = 'mdy'}) 끝.  기능. 스위트:테스트 포맷DM()  스위트:assert DisplayEquals(표시등)('1월 27일', {2000, 1, 27, 포맷 = 'dm'}) 끝.  기능. 스위트:테스트 포맷MD()  스위트:assert DisplayEquals(표시등)('1월 27일', {2000, 1, 27, 포맷 = 'md'}) 끝.  기능. 스위트:테스트 포맷나의()  스위트:assert DisplayEquals(표시등)('2000년 1월', {2000, 1, 27, 포맷 = '내'}) 끝.  기능. 스위트:테스트 포맷y()  스위트:assert DisplayEquals(표시등)('2000', {2000, 1, 27, 포맷 = 'y'}) 끝.  기능. 스위트:testFormatM()  스위트:assert DisplayEquals(표시등)('1월', {2000, 1, 27, 포맷 = 'm'}) 끝.  기능. 스위트:test Format D()  스위트:assert DisplayEquals(표시등)('27', {2000, 1, 27, 포맷 = 'd'}) 끝.  기능. 스위트:test Format Hide(형식 숨기기)()  스위트:assert DisplayEquals(표시등)('', {2000, 1, 27, 포맷 = 숨기다}) 끝.  기능. 스위트:테스트 BCParam()  현지의 결과 = '2000년 1월 27일&nbsp;BC'  스위트:assert DisplayEquals(표시등)(결과, {2000, 1, 27, 'BC'})  스위트:assert DisplayEquals(표시등)(결과, {2000, 1, 27, 'BCE'})  스위트:assert DisplayEquals(표시등)(결과, {2000, 1, 27, 'bc'})  스위트:assert DisplayEquals(표시등)(결과, {2000, 1, 27, '실패'}) 끝.  기능. 스위트:테스트 BCNegative Year()  스위트:assert DisplayEquals(표시등)('2000년 1월 27일&nbsp;BC', {-2000, 1, 27}) 끝.  기능. 스위트:Test Large Year 디스플레이()  스위트:assert DisplayEquals(표시등)('1,000,000', {1000000}) 끝.  기능. 스위트:test Large Negative Year 디스플레이()  스위트:assert DisplayEquals(표시등)('100만 & nbsp;BC', {-1000000}) 끝.  ------------------------------------------------------------------------------- -- 공백 테스트 -------------------------------------------------------------------------------  기능. 스위트:테스트 블랭크()  자신:assert String 포함(   '^ < span data% - span% - value = span^ " < > -> </span > 
                
, mDTS.메인{} ) 끝. ------------------------------------------------------------------------------- -- Nowrap 테스트 ------------------------------------------------------------------------------- 기능. 스위트:testNoWrapDefault(테스트노랩디폴트() 자신:assert String 포함( 자신.nowrapPattern, mDTS.메인{2000, 1, 1} ) 끝. 기능. 스위트:테스트 No Wrap Off() 자신:assert String 포함오프시( '^ < span data% - span% - value = span^ " < > -> -> [ ^ > - / / span >
$$SIDE_BOTTOM$$
    $$BOTTOM$$