모듈:샌드박스/에루튜온/테스트케이스

Module
현지의 p = 요구하다 "모듈:유닛 테스트" 현지의 해석_IETF = 요구하다 "모듈:샌드박스/에루튜온".해석_IETF 현지의 재밌어요 = 요구하다 "모듈:재밌다  현지의 쇼를 하다 = {  언어 = 기능. (서브태그, 열쇠)   한다면 것은 아니다. 서브태그[열쇠] 그리고나서 돌아가다 제로 끝.   돌아가다 (%s: <code> %s </code>):포맷(열쇠, 서브태그[열쇠] 또는 '')  끝.,  변종 = 기능. (서브태그, 열쇠)   한다면 것은 아니다. 서브태그[열쇠] 그리고나서 돌아가다 제로 끝.   돌아가다 (%s: <code> %s </code>):포맷(    열쇠,    유형(서브태그[열쇠]) == "테이블" 그리고. table.concat(서브태그[열쇠], ", ")     또는 서브태그[열쇠] 또는 '')  끝.,  에러 = 기능. (서브태그, 열쇠)   한다면 것은 아니다. 서브태그.에러 그리고나서    돌아가다 제로   끝.      돌아가다 ("오류: %s at <code> %s </code>")    :포맷(서브태그.에러, 서브태그.무효한 또는 "???")  끝., }  쇼를 하다.대본 = 쇼를 하다.언어 쇼를 하다.지역 = 쇼를 하다.언어 쇼를 하다.프라이빗 사용 = 쇼를 하다.변종  현지의 항목들 = { "언어", 스크립트, "지역", "실패", "프라이빗_use",  "에러" } -- 「오류」와 함께 「오류」  현지의 할 수 있다 = {} 할 수 있다.__인덱스 = 테이블 현지의 기능. show_parsed_parsags(해석된_오류 진단)  한다면 것은 아니다. 해석된_오류 진단 그리고나서 돌아가다 '실패' 끝.    현지의 결과 = 설정 가능한({}, 할 수 있다)    위해서 _, 열쇠  아이페어(항목들) 하다   결과:삽입하다(쇼를 하다[열쇠](해석된_오류 진단, 열쇠))  끝.    돌아가다 결과:콘센트("; ") 끝.  기능. p:test_filength_를 실행하다IETF()  현지의  = {   { "ru", { 언어 = "ru" } },   { "ru-Latn", { 언어 = "ru", 대본 = "라틴" } },   { "fr-CA", { 언어 = "fr", 지역 = 'CA' } },   { "ru-1708", { 언어 = "ru", 변종 = "1021708" } },   { "zh-Latn-pinyin", { 언어 = "zh", 대본 = "라틴", 변종 = '핀"in } },   { sl-rozaj-biske, { 언어 = "sl", 변종 = { '로자지', "비스케" } } },   { "sl-rozaj-biske-discle", { 언어 = "sl", 변종 = { '로자지', "비스케", "1994" } } },   { "en-CA-newfound", { 언어 = "en", 지역 = 'CA', 변종 = "실패" } },   { "ine-x-contract", { 언어 = "ine", 프라이빗 사용 = "실패" } },   Pokorny가 사용하는 PIE 문자 변환 시스템을 나타낼 수 있습니까?   { "아이네엑스 포코니", { 언어 = "ine", 프라이빗 사용 = { "실패", "포커니" } } },   { "x-fake-private-use", { 프라이빗 사용 = { '짝퉁', '프라이빗', '사용' } } },   "실패",   { "아이네!!!", { 에러 = "문자 표시", 무효한 = "!!!" } },   { "페", { 에러 = "문자 표시", 무효한 = "페" } },   { "라틴", { 에러 = "언어 서브태그 없음", 무효한 = "라틴" } },   { "ru-Latn-Cyrl", { 언어 = "ru", 대본 = "라틴", 에러 = "서브태그 추가", 무효한 = "시릴" } },   { '블라블라블라블라', { 에러 = "언어 서브태그 없음", 무효한 = '블라블라블라블라' } },   { '루블라블라블라블라', { 언어 = "ru", 에러 = "서브태그 추가", 무효한 = '블라블라블라블라' } },   { "ru-Latn-blahblahblah",    { 언어 = "ru", 대본 = "라틴", 에러 = "서브태그 추가", 무효한 = '블라블라블라블라' } },   { "ru-x-blahblahblah",    { 언어 = "ru", 에러 = "개인 사용 하위 태그의 길이가 범위를 벗어남", 무효한 = "x-blahblahblah" } },   { "ru-x", { 언어 = "ru", 에러 = "빈 개인 사용 하위 태그", 무효한 = "x" } },   { "블라블라-라튼", { 에러 = "언어 서브태그 없음", 무효한 = "블라블라-라튼" } },   { "", 제로 },   -- { mw.log, 0 } 。   -- { nero , nero } 。  }    현지의 색인 = 재밌어요.색인("실패", )  table.insert(, 색인, "대문자와 소문자를 구분합니다.")  위해서 i = 1, 색인 - 1 하다 -- 유효한 태그의 대문자로 표시된 버전의 테스트 케이스를 삽입합니다.   현지의 상부_상부 = .클론([i])   상부_상부[1] = 상부_상부[1]:위쪽의()   table.insert(, 색인 + i, 상부_상부)  끝.    자신:반복하다(   ,   기능. (자신, IETF_코드, 기대됩니다)    자신:동등.(     ('<code style="white-space: nowrap;">%s </code>'):포맷(IETF_코드),     show_parsed_parsags(해석_IETF(IETF_코드)),     show_parsed_parsags(기대됩니다))   끝.) 끝.  -- 테스트 케이스 테이블의 함수 이름을 읽기 쉬운 헤더로 변경합니다. 위해서 k, v  요구하다 "모듈:테이블 도구".정렬 페어(p) 하다  한다면 유형(k) == "문자열' 그리고나서   현지의 new_k = k:서브("^test_(.+)", "%1의 <code> </code> 테스트 케이스")   한다면 new_k ~= k 그리고나서    p[k] = 제로    p[new_k] = v   끝.  끝. 끝.  돌아가다 p