-- 필요한 모듈을 로드합니다. 현지의 보호 배너 = 요구하다('모듈:보호 배너/샌드박스') 현지의 스크리분토 유닛 = 요구하다('모듈:스크리분토 유닛') -- 클래스를 가져옵니다. 현지의 보호. = 보호 배너._export Classes().보호. 현지의 블러브 = 보호 배너._export Classes().블러브 현지의 배너 템플릿 = 보호 배너._export Classes().배너 템플릿 현지의 배너 = 보호 배너._export Classes().배너 현지의 자물쇠 = 보호 배너._export Classes().자물쇠 -- 테스트 스위트 초기화 현지의 스위트 = 스크리분토 유닛:신규() -------------------------------------------------------------------------------- -- 디폴트값 -------------------------------------------------------------------------------- 현지의 d = {} d.이유 = '실용주의' d.액션. = '편집' d.수평 = 'sysop' d.페이지입니다. = '사용자: 예' d.토크 페이지 = '사용자 토크:예' d.기본 텍스트 = '예' d.네임스페이스 = 2 -- d.page 네임스페이스 d.네임스페이스 플래그먼트 = '사용자' -- makeProtectionCategory의 d.page 네임스페이스 fragment d.카테고리 네임스페이스 키 = {[d.네임스페이스] = d.네임스페이스 플래그먼트} -- 네임스페이스 키 설정 테이블 d.기한 만료 = '9999년 1월 1일' d.유효 기간 = 253370764800 -- Unix 시간에서의 d.expiry d.expiry Fragment(확장 플래그먼트) = '실패' -- makeProtectionCategory의 d.expiry fragment 만료 d.보호 날짜 = '2000년 1월 1일' d.보호 날짜u = 946684800 -- d.protectionDate(유닉스 시간) -------------------------------------------------------------------------------- -- 도우미 기능 -------------------------------------------------------------------------------- 기능. 스위트:assert Error(아스텐 에러)(기능하다, args, 메시지) args = args 또는 {} 현지의 성공., 결과 = pcall(기능하다, 개봉하다(args)) 자신:assert False(거짓)(성공.) 한다면 메시지 그리고나서 자신:assert String 포함(메시지, 결과, 진실의) -- 플레인 매칭 끝. 끝. 기능. 스위트:assert Not Error(ASST Not 오류)(기능하다, args) args = args 또는 {} 현지의 성공., 결과 = pcall(기능하다, 개봉하다(args)) 자신:assert True(참)(성공.) 끝. 현지의 기능. makeTitleObject(makeTitle오브젝트)(옵션들) 현지의 직함 = 음.직함.신규(옵션들.페이지입니다.) -- 보호 수준 설정 현지의 레벨 = { 편집하다 = {}, 움직이다 = {}, 자동 확인 = {} } 위해서 _, 액션. 에 아이페어{'편집', '이동, '자동 보기'} 하다 현지의 수평 = 옵션들[액션.] 한다면 수평 그리고나서 레벨[액션.][1] = 수평 끝. 끝. rawset(원래 세트)(직함, '보호'레벨', 레벨) -- 콘텐츠 모델 설정 rawset(원래 세트)(직함, '콘텐츠 모델', 옵션들.콘텐츠 모델 또는 'sysitext') 돌아가다 직함 끝. 현지의 기능. makeDefaultTitleObject(메이크 디폴트 타이틀() 돌아가다 makeTitleObject(makeTitle오브젝트){페이지입니다. = d.페이지입니다., [d.액션.] = d.수평} 끝. -- 에일리어스를 만듭니다.개체가 보호된 페이지용임을 명확히 합니다. 현지의 보호하다타이틀 오브젝트 = makeDefaultTitleObject(메이크 디폴트 타이틀 현지의 기능. makeConfig(구성)(t) 현지의 cfg = { 마스터 배너 = {}, padlock Indicator 이름 = {}, indefin Image Reasons = {}, reasons With Namespace Priority = {}, 카테고리 네임스페이스 키 = {}, 보호 카테고리 = {}, Expiry Check를 사용하지 않는 이유 = {}, expiry Check Actions(expiry Check 액션) = {}, 페이지 타입 = {}, 스트링 없음 = {}, 계층 = { 시스템 = {}, 리뷰어 = {'sysop'}, 파일오버 = {'sysop'}, 템플릿 에디터 = {'sysop'}, 확장된 확인 = {'sysop'}, 자동 확인됨 = {'실패', '파일오버', '편집자', '확정되지 않음'}, 유저 = {'자동 확인됨'}, ['*'] = {'사용자'} }, 포장지 = {}, 메시지 = {} } 현지의 prot Level 필드 = { '디폴트 배너', '실패', '보호 기능, '설명', '보호'레벨', '실패', '이미지 링크' } 위해서 _, 들판 에 아이페어(prot Level 필드) 하다 cfg[들판] = { 편집하다 = {}, 움직이다 = {}, 자동 확인 = {} } 끝. -- 오류가 발생할 경우 필드를 추가합니다. cfg.마스터 배너.본문 = '이유 텍스트' -- 커스텀 필드 추가 위해서 k, v 에 쌍들(t 또는 {}) 하다 cfg[k] = v 끝. 돌아가다 cfg 끝. 현지의 기능. makeDefaultProtectionObject(cfg) cfg = makeConfig(구성)(cfg) 한다면 다음 분.(cfg.카테고리 네임스페이스 키) == 제로 그리고나서 -- cfg.category NamespaceKeys가 비어 있습니다. cfg.카테고리 네임스페이스 키 = d.카테고리 네임스페이스 키 끝. 현지의 obj = 보호..신규( {d.이유, 액션. = d.액션., 기한 만료 = d.기한 만료}, cfg, makeDefaultTitleObject(메이크 디폴트 타이틀() ) obj.기한 만료 = d.유효 기간 -- [Module]를 덮어쓰는 해킹:유효 보호 유효기간]] 돌아가다 obj 끝. 현지의 기능. makeProtectionCategoryKey(테스트 플래그먼트, 디폴트) 현지의 단편화 = { 기한 만료 = '모두', 네임스페이스 = '모두', 이유 = '모두', 수평 = '모두', 액션. = '모두' } 위해서 i, t 에 아이페어{디폴트 또는 {}, 테스트 플래그먼트} 하다 위해서 k, v 에 쌍들(t) 하다 단편화[k] = v 끝. 끝. 현지의 열쇠 = { 단편화.기한 만료, 단편화.네임스페이스, 단편화.이유, 단편화.수평, 단편화.액션. } 돌아가다 table.concat(열쇠, ' ') 끝. 현지의 기능. makeDefaultProtectionCategoryKey(테스트 플래그먼트) 현지의 디폴트 = { 기한 만료 = d.expiry Fragment(확장 플래그먼트), 네임스페이스 = d.네임스페이스 플래그먼트, 이유 = d.이유, 수평 = d.수평, 액션. = d.액션. } 돌아가다 makeProtectionCategoryKey(테스트 플래그먼트, 디폴트) 끝. 현지의 기능. make Default Blurb 객체(cfg) cfg = makeConfig(구성)(cfg) 돌아가다 블러브.신규( makeDefaultProtectionObject(), {}, cfg ) 끝. 현지의 기능. makeDefaultBannerTemplateObject(cfg) cfg = makeConfig(구성)(cfg) 돌아가다 배너 템플릿.신규( makeDefaultProtectionObject(), cfg ) 끝. 현지의 기능. make Default 배너 오브젝트(cfg) cfg = makeConfig(구성)(cfg) 돌아가다 배너.신규( makeDefaultProtectionObject(), make Default Blurb 객체(), cfg ) 끝. 현지의 기능. makeDefaultPadlockObject(makeDefault(cfg) cfg = makeConfig(구성)(cfg) 돌아가다 자물쇠.신규( makeDefaultProtectionObject(), make Default Blurb 객체(), cfg ) 끝. 현지의 자물쇠 패턴 = '\127[^\127*UNIQ%-%-인디케이터%-%x+%-QINU[^\127]*\127' 기능. 스위트:assertIsPadlock(s, 메시지) 자신:assert String 포함( 자물쇠 패턴, s, 거짓의, 메시지 ) 끝. 기능. 스위트:부정 노패드록(s, 메시지) 자신:assert Not String 포함( 자물쇠 패턴, s, 거짓의, 메시지 ) 끝. 기능. 스위트:아사트이즈배너(s, 메시지) 자신:assert String 포함( 'class=class^'"*mbox[^]"*", s, 거짓의, 메시지 ) 자신:assert String 포함( '역할='프레젠테이션', s, 진실의, 메시지 ) 자신:assert Not String 포함( 'id="protected-icon", s, 진실의, 메시지 ) 자신:assert Not String 포함( '온', s, 진실의, 메시지 ) 끝. 기능. 스위트:노배너를 주장하다(s, 메시지) 자신:assert Not String 포함( 'class=class^'"*mbox[^]"*", s, 거짓의, 메시지 ) 자신:assert Not String 포함( '역할='프레젠테이션', s, 진실의, 메시지 ) 자신:assert Not String 포함( 'id="protected-icon", s, 진실의, 메시지 ) 자신:assert Not String 포함( '온', s, 진실의, 메시지 ) 끝. -------------------------------------------------------------------------------- -- 보호 객체 테스트 -------------------------------------------------------------------------------- -- 보호 액션 기능. 스위트:testProtectionActionError() 스위트:assert Error(아스텐 에러)( 보호..신규, {{액션. = '푸'}, makeConfig(구성)()}, '액션: foo' ) 끝. 기능. 스위트:test Protection Action Edit() 현지의 obj = 보호..신규({액션. = '편집'}, makeConfig(구성)()) 스위트:assert Equals(동일)('편집', obj.액션.) 끝. 기능. 스위트:testProtectionActionMove() 현지의 obj = 보호..신규({액션. = '이동}, makeConfig(구성)()) 스위트:assert Equals(동일)('이동, obj.액션.) 끝. 기능. 스위트:test Protection Action(테스트 보호 액션)자동 뷰() 현지의 obj = 보호..신규({액션. = '자동 보기'}, makeConfig(구성)()) 스위트:assert Equals(동일)('자동 보기', obj.액션.) 끝. 기능. 스위트:test Protection Action 업로드() 현지의 obj = 보호..신규({액션. = '실패'}, makeConfig(구성)()) 스위트:assert Equals(동일)('실패', obj.액션.) 끝. 기능. 스위트:testProtectionNoAction(무작동)() 현지의 obj = 보호..신규({}, makeConfig(구성)()) 스위트:assert Equals(동일)('편집', obj.액션.) 끝. -- 보호 수준 기능. 스위트:테스트 보호 세미() 현지의 obj = 보호..신규( {액션. = '편집'}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다. = '푸우', 편집하다 = '자동 확인됨'} ) 자신:assert Equals(동일)('자동 확인됨', obj.수평) 끝. 기능. 스위트:테스트 보호가득한() 현지의 obj = 보호..신규( {액션. = '편집'}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다. = '푸우', 편집하다 = 'sysop'} ) 자신:assert Equals(동일)('sysop', obj.수평) 끝. 기능. 스위트:테스트 보호 보호 없음() 현지의 obj = 보호..신규( {액션. = '편집'}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다. = '푸우', 편집하다 = 제로} ) 자신:assert Equals(동일)('*', obj.수평) 끝. 기능. 스위트:테스트 보호 SemiMove() 현지의 obj = 보호..신규( {액션. = '이동}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다. = '푸우', 움직이다 = '자동 확인됨'} ) 자신:assert Equals(동일)('*', obj.수평) 끝. 기능. 스위트:테스트 보호템플릿() 현지의 obj = 보호..신규( {액션. = '편집'}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다. = '템플릿:푸우, 편집하다 = '편집자'} ) 자신:assert Equals(동일)('편집자', obj.수평) 끝. 기능. 스위트:테스트 보호제목 블랙리스트() 현지의 obj = 보호..신규( {액션. = '편집'}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다. = '템플릿:알림/페이지/후' 편집, 편집하다 = 제로} ) 자신:assert Equals(동일)('편집자', obj.수평) 끝. -- 이유 기능. 스위트:test Protection Reason(테스트 보호 이유)() 현지의 obj = 보호..신규( {'푸'}, makeConfig(구성)() ) 자신:assert Equals(동일)('푸', obj.이유) 끝. 기능. 스위트:test Protection Reason Lower Case() 현지의 obj = 보호..신규( {'후'}, makeConfig(구성)() ) 자신:assert Equals(동일)('푸', obj.이유) 끝. 기능. 스위트:test Protection Bad Reason() 자신:assert Error(아스텐 에러)( 보호..신규, {{'푸바'}, makeConfig(구성)()}, 파이프 문자("")를 포함할 수 없습니다. ) 끝. 기능. 스위트:test Protection No Reason() 현지의 obj = 보호..신규( {}, makeConfig(구성)() ) 자신:assert Equals(동일)(제로, obj.이유) 끝. -- 보호 날짜 기능. 스위트:testProtectionProtectionDateIndef() 자신:assert Error(아스텐 에러)( 보호..신규, { {날짜. = '무한'}, makeConfig(구성){스트링 없음 = {무기한의 = 진실의}} }, '확장 보호 날짜: 무기한' ) 끝. 기능. 스위트:test Protection ProtectionDateTemp() 현지의 obj = 보호..신규( {날짜. = d.보호 날짜}, makeConfig(구성)() ) 자신:assert Equals(동일)(d.보호 날짜u, obj.보호 날짜) 끝. 기능. 스위트:test Protection No Protection 날짜() 현지의 obj = 보호..신규( {}, makeConfig(구성)() ) 자신:assert Equals(동일)(제로, obj.보호 날짜) 끝. 기능. 스위트:testProtectionBadProtectionDate() 자신:assert Error(아스텐 에러)( 보호..신규, { {날짜. = '푸바'}, makeConfig(구성){스트링 없음 = {무기한의 = 진실의}} }, '보호 날짜: foobar' ) 끝. -- banner Config(배너 구성) 기능. 스위트:test Protection MasterBannerConfigPrecedence 1() 현지의 마스터 배너 = {본문 = '마스터 배너 텍스트'} 현지의 obj = makeDefaultProtectionObject{마스터 배너 = 마스터 배너} 자신:assert Equals(동일)('마스터 배너 텍스트', obj.배너 설정.본문) 끝. 기능. 스위트:test Protection MasterBannerConfigPrecedence 2() 현지의 마스터 배너 = {본문 = '마스터 배너 텍스트'} 현지의 default 배너 = {[d.액션.] = {체납 = {본문 = 'default기본 텍스트 배너'}}} 현지의 obj = makeDefaultProtectionObject(makeConfig(구성){ 마스터 배너 = 마스터 배너, default 배너 = default 배너 }) 자신:assert Equals(동일)('default기본 텍스트 배너', obj.배너 설정.본문) 끝. 기능. 스위트:test Protection MasterBannerConfigPrecedence 3() 현지의 default 배너 = {[d.액션.] = { [d.수평] = {본문 = '기본 배너 수준 텍스트'}, 체납 = {본문 = 'default기본 텍스트 배너'} }} 현지의 obj = makeDefaultProtectionObject(makeConfig(구성){default 배너 = default 배너}) 자신:assert Equals(동일)('기본 배너 수준 텍스트', obj.배너 설정.본문) 끝. 기능. 스위트:test Protection MasterBanner ConfigPrecedence 4() 현지의 default 배너 = {[d.액션.] = { [d.수평] = {본문 = '기본 배너 수준 텍스트'} }} 현지의 배너 = {[d.액션.] ={ [d.이유] = {본문 = '텍스트 표시'} }} 현지의 obj = makeDefaultProtectionObject(makeConfig(구성){ default 배너 = default 배너, 배너 = 배너 }) 자신:assert Equals(동일)('텍스트 표시', obj.배너 설정.본문) 끝. 기능. 스위트:testProtectionMasterBannerConfigFields() 현지의 마스터 배너 = { 본문 = '마스터 배너 텍스트', 설명. = '마스터 배너 설명', 툴팁 = '마스터 배너 툴팁', 알트 = '마스터 배너 alt', 링크 = '마스터 배너 링크', 이미지 = '마스터 배너 이미지' } 현지의 obj = makeDefaultProtectionObject{마스터 배너 = 마스터 배너} 자신:assert Equals(동일)('마스터 배너 텍스트', obj.배너 설정.본문) 자신:assert Equals(동일)('마스터 배너 설명', obj.배너 설정.설명.) 자신:assert Equals(동일)('마스터 배너 툴팁', obj.배너 설정.툴팁) 자신:assert Equals(동일)('마스터 배너 alt', obj.배너 설정.알트) 자신:assert Equals(동일)('마스터 배너 링크', obj.배너 설정.링크) 자신:assert Equals(동일)('마스터 배너 이미지', obj.배너 설정.이미지) 끝. -- isUserScript 기능. 스위트:test Protection Is UserScript With UserCSS() 현지의 보호. = 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자: 예/공통.css') ) 자신:assert True(참)(보호.:is User Script()) 끝. 기능. 스위트:test Protection Is UserScript With UserJs() 현지의 보호. = 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자: 예/공통.js') ) 자신:assert True(참)(보호.:is User Script()) 끝. 기능. 스위트:testProtectionIsUserScriptWithUserPage() 현지의 보호. = 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자: 예') ) 자신:assert False(거짓)(보호.:is User Script()) 끝. 기능. 스위트:test Protection Is UserScript With Normal Subpage() 현지의 보호. = 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자: 예/공통') ) 자신:assert False(거짓)(보호.:is User Script()) 끝. 기능. 스위트:test Protection Is UserScript With Username Ending InCSS() 현지의 보호. = 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자: 내 사용자 이름은 .css로 끝납니다.') ) 자신:assert False(거짓)(보호.:is User Script()) 끝. 기능. 스위트:test Protection Is UserScript With Username Ending InJS() 자신:assert False(거짓)( 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자: 내 사용자 이름은 .js로 끝납니다.') ):is User Script() ) 끝. 기능. 스위트:test Protection Is UserScript With Subpage Containing CSS() 자신:assert False(거짓)( 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자: 예/공통.css.txt') ):is User Script() ) 끝. 기능. 스위트:test Protection Is UserScript With No Subpage Prefix() 자신:assert True(참)( 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자: 예/.css') ):is User Script() ) 끝. 기능. 스위트:test Protection Is UserScript With Blank Username AndNo Subpage Prefix() 자신:assert True(참)( 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자:/.css') ):is User Script() ) 끝. 기능. 스위트:test Protection Is UserScript사용자 이름이 있는 경우유일한 CSS() 자신:assert False(거짓)( 보호..신규( {}, makeConfig(구성)(), 음.직함.신규('사용자: .css') ):is User Script() ) 끝. 기능. 스위트:test Protection Is UserScript With Nonstandard CSSContent Model() 자신:assert True(참)( 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='사용자: 예/foo', 콘텐츠 모델='css'} ):is User Script() ) 끝. 기능. 스위트:test Protection Is UserScript With NonstandardJSContent Model(S콘텐트 모델)() 자신:assert True(참)( 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='사용자: 예/foo', 콘텐츠 모델='스크립트 삭제'} ):is User Script() ) 끝. 기능. 스위트:test Protection Is UserScript With NonstandardWikitext 콘텐츠 모델() 자신:assert False(거짓)( 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='사용자: 예/foo.css', 콘텐츠 모델='sysitext'} ):is User Script() ) 끝. 기능. 스위트:testProtectionIsUserScriptWithNonUserspacePage() 자신:assert False(거짓)( 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='Wikipedia:예.css', 콘텐츠 모델='css'} ):is User Script() ) 끝. -- 보호되고 있다 기능. 스위트:test Protection Protected(테스트 보호)진실의() 현지의 obj = makeDefaultProtectionObject() obj.수평 = '자동 확인됨' 자신:assert True(참)(obj:보호되고 있다()) 끝. 기능. 스위트:test Protection Is Protected False() 현지의 obj = makeDefaultProtectionObject() obj.수평 = '*' 자신:assert False(거짓)(obj:보호되고 있다()) 끝. -- Show Lock이 필요합니다. 기능. 스위트:테스트 보호Show Lock 표시Protected Page() 현지의 obj = 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='푸우', 편집하다='sysop'} ) 자신:assert True(참)(obj:Show Lock을 표시해야 합니다.()) 끝. 기능. 스위트:테스트 보호Show Lock 표시Protected User Script 사용() 현지의 obj = 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='사용자: 예/공통.css', 콘텐츠 모델='css', 편집하다='sysop'} ) 자신:assert False(거짓)(obj:Show Lock을 표시해야 합니다.()) 끝. 기능. 스위트:테스트 보호Show Lock With Unprotected 페이지 표시() 현지의 obj = 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='푸우'} ) 자신:assert False(거짓)(obj:Show Lock을 표시해야 합니다.()) 끝. -- Have Protection Category가 필요합니다. 기능. 스위트:테스트 보호Should Have Protection Category(보호 카테고리 필요)Protected Page() 현지의 obj = 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='푸우', 편집하다='sysop'} ) 자신:assert True(참)(obj:should Have Protection Category()) 끝. 기능. 스위트:테스트 보호Should Have Protection Category(보호 카테고리 필요)Protected User Script 사용() 현지의 obj = 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='사용자: 예/공통.css', 콘텐츠 모델='css', 편집하다='sysop'} ) 자신:assert False(거짓)(obj:should Have Protection Category()) 끝. 기능. 스위트:테스트 보호Should Have Protection Category(보호 카테고리 필요)보호되지 않은 페이지 포함() 현지의 obj = 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='푸우'} ) 자신:assert False(거짓)(obj:should Have Protection Category()) 끝. -- 일시적 기능. 스위트:test Protection Protected(테스트 보호)진실의() 현지의 obj = makeDefaultProtectionObject() obj.기한 만료 = 123456789012 자신:assert True(참)(obj:일시적()) 끝. 기능. 스위트:test Protection Is Protected False 1() 현지의 obj = makeDefaultProtectionObject() obj.기한 만료 = '실패' 자신:assert False(거짓)(obj:일시적()) 끝. 기능. 스위트:test Protection Is Protected False 2() 현지의 obj = makeDefaultProtectionObject() obj.기한 만료 = 제로 자신:assert False(거짓)(obj:일시적()) 끝. -- make Protection Category -- 기능. 스위트:test Protection Category보호되지 않은 페이지 포함() 현지의 obj = 보호..신규( {}, makeConfig(구성)(), makeTitleObject(makeTitle오브젝트){페이지입니다.='푸우'} ) 자신:assert Equals(동일)(obj:make Protection Category(), '') 끝. 기능. 스위트:test Protection Category Precedence 1() -- 유효기간이 가장 낮은 우선순위를 가지는지 테스트합니다. 현지의 보호 카테고리 = { [makeDefaultProtectionCategoryKey{기한 만료 = '모두'}] = '모든 유효기간이 허용됨', [makeDefaultProtectionCategoryKey{네임스페이스 = '모두'}] = '모든 네임스페이스 허용', [makeDefaultProtectionCategoryKey{이유 = '모두'}] = '모든 이유 허용', [makeDefaultProtectionCategoryKey{수평 = '모두'}] = '모든 레벨 허용', [makeDefaultProtectionCategoryKey{액션. = '모두'}] = '모든 작업이 허용됨' } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '모든 유효기간이 허용됨', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Precedence 2() -- 이유를 가장 우선시하는 것으로 테스트합니다. 현지의 보호 카테고리 = { [makeProtectionCategoryKey{기한 만료 = d.expiry Fragment(확장 플래그먼트)}] = '모바일만', [makeProtectionCategoryKey{네임스페이스 = d.네임스페이스 플래그먼트}] = '모바일만', [makeProtectionCategoryKey{이유 = d.이유}] = '이유만', [makeProtectionCategoryKey{수평 = d.수평}] = '레벨만', [makeProtectionCategoryKey{액션. = d.액션.}] = '액션만' } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '이유만', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Precedence 3() -- 이유가 로 설정되어 있는 경우, 네임스페이스가 가장 높은 우선순위를 가지는 것을 테스트합니다. -- cfg.syslogWith Namespace Priority. 현지의 보호 카테고리 = { [makeProtectionCategoryKey{기한 만료 = d.expiry Fragment(확장 플래그먼트)}] = '모바일만', [makeProtectionCategoryKey{네임스페이스 = d.네임스페이스 플래그먼트}] = '모바일만', [makeProtectionCategoryKey{이유 = d.이유}] = '이유만', [makeProtectionCategoryKey{수평 = d.수평}] = '레벨만', [makeProtectionCategoryKey{액션. = d.액션.}] = '액션만' } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, reasons With Namespace Priority = {[d.이유] = 진실의} } 자신:assert String 포함( '모바일만', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Precedence 4() -- 이 레벨의 priority가 네임스페이스보다 높은 것을 테스트합니다. 현지의 보호 카테고리 = { [makeDefaultProtectionCategoryKey{네임스페이스 = '모두'}] = '모든 네임스페이스 허용', [makeDefaultProtectionCategoryKey{수평 = '모두'}] = '모든 레벨 허용', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '모든 네임스페이스 허용', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Precedence 5() -- 액션이 수준보다 높은 우선순위를 가지고 있는지 테스트합니다. 현지의 보호 카테고리 = { [makeDefaultProtectionCategoryKey{수평 = '모두'}] = '모든 레벨 허용', [makeDefaultProtectionCategoryKey{액션. = '모두'}] = '모든 작업이 허용됨', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '모든 레벨 허용', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Precedence 6() --정확한 일치가 첫 번째가 되는 것을 테스트합니다. 현지의 보호 카테고리 = { [makeDefaultProtectionCategoryKey()] = '성적 일치', [makeDefaultProtectionCategoryKey{액션. = '모두'}] = '모든 작업이 허용됨', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '성적 일치', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Precedence 7() -- 3개의 키에 일치하기 전에 일치하는 4개의 키가 나타나는지 테스트합니다. 현지의 보호 카테고리 = { [makeDefaultProtectionCategoryKey{액션. = '모두'}] = '4개의 키', [makeDefaultProtectionCategoryKey{액션. = '모두', 수평 = '모두'}] = '세 개의 열쇠', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '4개의 키', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Precedence 8() -- 2개의 키를 일치시키기 전에 3개의 키가 일치하는지 테스트합니다. 현지의 보호 카테고리 = { [makeProtectionCategoryKey{이유 = d.이유, 액션. = d.액션., 수평 = d.수평}] = '세 개의 열쇠', [makeProtectionCategoryKey{이유 = d.이유, 액션. = d.액션.}] = '키 두 개', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '세 개의 열쇠', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Precedence 9() -- 1개의 키에 일치하기 전에 2개의 키가 일치하는지 테스트합니다. 현지의 보호 카테고리 = { [makeProtectionCategoryKey{액션. = d.액션., 수평 = d.수평}] = '키 두 개', [makeProtectionCategoryKey{액션. = d.액션.}] = '하나의 키', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '키 두 개', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Precedence 10() -- 일치하는 1개의 키가 0개의 키보다 먼저 나타나는지 테스트합니다. 현지의 보호 카테고리 = { [makeProtectionCategoryKey{액션. = d.액션.}] = '하나의 키', [makeProtectionCategoryKey()] = '키 없음', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '하나의 키', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:test Protection Category Alls() -- 'all all all'이 동작하는지 테스트합니다. 현지의 보호 카테고리 = { [makeProtectionCategoryKey()] = '키 없음', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '키 없음', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:testProtectionCategoryNoFalseMatches() --당신이 해서는 안 되는 것과 일치하지 않는 것을 테스트합니다. 현지의 보호 카테고리 = { [makeProtectionCategoryKey{기한 만료 = '푸'}] = 'foo foo foo foo', [makeProtectionCategoryKey{네임스페이스 = '푸'}] = 'foo foo foo foo', [makeProtectionCategoryKey{이유 = '푸'}] = 'reason foo', [makeProtectionCategoryKey{수평 = '푸'}] = '레벨 foo', [makeProtectionCategoryKey{액션. = '푸'}] = '액션 foo', [makeProtectionCategoryKey()] = '키 없음', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '키 없음', obj:make Protection Category(), 진실의 ) 끝. 기능. 스위트:testProtectionCategoryProtected() -- 보호된 페이지가 일종의 카테고리 링크를 생성하는지 테스트합니다. 현지의 보호 카테고리 = { [makeProtectionCategoryKey()] = '키 없음', } 현지의 obj = makeDefaultProtectionObject{ 보호 카테고리 = 보호 카테고리, } 자신:assert String 포함( '^%[%] [카테고리:*%]%]