모듈:리퍼/테스트 케이스

Module
-- 필요한 모듈을 로드합니다. 현지의 mRepr = 요구하다('모듈:응답하다) 현지의 스크리분토 유닛 = 요구하다('모듈:스크리분토 유닛')  -- 테스트 스위트 초기화 현지의 스위트 = 스크리분토 유닛:신규()  -------------------------------------------------------------------------------- -- isLuaIdentifier 테스트 --------------------------------------------------------------------------------  현지의 isLuaIdentifier테스트 데이터 = {  {   테스트명 = "testIsLuaIdentifier_containingLowerCaseCharacters_isTrue",   가치 = "푸",   기대됩니다 = 진실의,  },  {   테스트명 = "TestIsLuaIdentifier_containing UpperCaseCharacters_isTrue",   가치 = "푸",   기대됩니다 = 진실의,  },  {   테스트명 = "testIsLuaIdentifier_containingDigitsAfter First Position_is True",   가치 = "test1",   기대됩니다 = 진실의,  },  {   테스트명 = "testIsLuaIdentifier_containingUnderscores_isTrue",   가치 = "foo_bar",   기대됩니다 = 진실의,  },  {   테스트명 = "testIsLuaIdentifier_nonString_isFalse",   가치 = 6,   기대됩니다 = 거짓의,  },  {   테스트명 = "testIsLuaIdentifier_emptyString_isFalse",   가치 = "",   기대됩니다 = 거짓의,  },  {   테스트명 = "testIsLuaIdentifier_startingWithNumber_isFalse",   가치 = "1 foo",   기대됩니다 = 거짓의,  },  {   테스트명 = "testIsLuaIdentifier_containingMultibyteCharacter_isFalse",   가치 = "föo",   기대됩니다 = 거짓의,  },  {   테스트명 = "testIsLuaIdentifier_containingPeriod_isFalse",   가치 = 'a1.2',   기대됩니다 = 거짓의,  },  {   테스트명 = "testIsLuaIdentifier_containingHypen_isFalse",   가치 = "foo 바",   기대됩니다 = 거짓의,  }, }  위해서 _, 테스트 데이터  아이페어(isLuaIdentifier테스트 데이터) 하다  스위트[테스트 데이터.테스트명] = 기능.(자신)   현지의 결과 = mRepr._isLuaIdentifier(테스트 데이터.가치)   자신:assert Equals(동일)(테스트 데이터.기대됩니다, 결과)  끝. 끝.  현지의 lua = {  "그리고",  '브레이크',  '도',  "실패",  "만약",  '종료',  "false",  "용",  "기능',  "만약",  "입력"」,  "로컬",  "실패",  "없음",  "또는",  "실패",  '돌아오다',  "그럼",  "진짜",  '까지',  '중', }  위해서 _, 키워드  아이페어(lua) 하다  스위트["testIsLuaIdentifier_keyword_" .. 키워드 .. '_isFalse'] = 기능.(자신)   자신:assert False(거짓)(mRepr._isLuaIdentifier(키워드))  끝. 끝.  -------------------------------------------------------------------------------- -- repr 테스트 --------------------------------------------------------------------------------  현지의 표_WITH_IDENTIFIER_KEYS = {e = '이', c = "cc", a = "실패", d = "ddd", b = "bbb"} 현지의 표_WITH_IDENTIFIER_KEYS_SORTED_REPR = '{a = "bbb", c = "ccc", d = "ddd", e = "eee"}'  현지의 사이클릭 시퀀스 = {1, 2, 3} table.insert(사이클릭 시퀀스, 사이클릭 시퀀스) 현지의 사이클릭_시퀀스_REPR = '{1, 2, 3, {CYCLECTIC}}'  현지의 순환 탭LE = {a = "실패"} 순환 탭LE.b= 순환 탭LE 현지의 사이클릭_테이블_REPR = '{a = "cycle", b = {CYCLECTIC}}'  현지의 주기_테이블_쌍 = {a = "실패", b = {c = "cc"}} 주기_테이블_쌍.b.d = 주기_테이블_쌍 현지의 Cyclic_TABLE_PAIR_REPR = '{a = "cycle", b = {c = "ccc", d = {CYCLECTIC}}'  현지의 서브테이블 = {후우 = '바'} 현지의 표_With_SHARED_Subtables = {a = 서브테이블, b = 서브테이블} 현지의 표_WITH_SHARED_SUBTABles_REPR = '{a = {foo = "bar"}, b = {foo = "bar"}'  현지의 토스트링_메타메타모드_표_REPR = '<내 테이블>' 현지의 토스트링_METABLE =  {  __tostring = 기능. (t)   돌아가다 토스트링_메타메타모드_표_REPR  끝.  } 현지의 토스트링_메타메타모드_테이블 = 설정 가능한({}, 토스트링_METABLE) 현지의 TOSTRING_METABLE_REPR = '{_tostring = <function >}'  현지의 네스트 완료_탭LE = {a = "실패", b = {c = "cc"}}  현지의 reprTestData = {  {   테스트명 = "testRepr_nil",   args = {제로, {}},   기대됩니다 = '실패',  },  {   테스트명 = "testRepr_true",   args = {진실의, {}},   기대됩니다 = '진짜',  },  {   테스트명 = "testRepr_false",   args = {거짓의, {}},   기대됩니다 = 'false',  },  {   테스트명 = "testRepr_integer",   args = {7, {}},   기대됩니다 = '7',  },  {   테스트명 = "testRepr_float",   args = {3.14159, {}},   기대됩니다 = '3.14159',  },  {   테스트명 = "testRepr_largeInt",   args = {12345678901234567890, {}},   기대됩니다 = '1.2345678901235e+19',  },  {   테스트명 = "testRepr_positive Infinity",   args = {math.matrix, {}},   기대됩니다 = 'math.filename',  },  {   테스트명 = "testRepr_negative Infinity",   args = {-math.matrix, {}},   기대됩니다 = '-math.delay',  },  {   테스트명 = "테스트 담당자_NaN",   args = {0/0, {}},   기대됩니다 = '-난',  },  {   테스트명 = "testRepr_emptyString",   args = {"", {}},   기대됩니다 = '""',  },  {   테스트명 = "testRepr_normalString",   args = {"푸", {}},   기대됩니다 = '푸',  },  {   테스트명 = "testRepr_string With Quotes",   args = {'푸', {}},   기대됩니다 = '"\\"후우\\""',  },  {   테스트명 = "testRepr_string With Newline",   args = {'후우'\n바', {}},   기대됩니다 = '후후'\\nbar',  },  {   테스트명 = "testRepr_emptyTable",   args = {{}, {}},   기대됩니다 = '{}',  },  {   테스트명 = "testRepr_sequence With SimpleValues",   args = {{1, "푸", 진실의}, {}},   기대됩니다 = '{1, "foo", true}',  },  {   테스트명 = "testRepr_sparse Sequence",   args = {{1, 제로, 3, 제로, 5}, {}},   기대됩니다 = '{1, [3] = 3, [5] = 5}',  },  {   테스트명 = "testRepr_mixedSequenceAndKeys",   args = {{1, 2, 3, 후우 = '바'}, {}},   기대됩니다 = '{1, 2, 3, foo = "bar"}',  },  {   테스트명 = "testRepr_table"ZeroKey를 사용하여",   args = {{[0] = 0}, {}},   기대됩니다 = '{[0] = 0}',  },  {   테스트명 = "testRepr_tableWithNegativeIntegerKey",   args = {{[-1] = -1}, {}},   기대됩니다 = '{[-1] = -1}',  },  {   테스트명 = "testRepr_table"FloatKeys 포함",   args = {{[3.14159] = "pi"}, {}},   기대됩니다 = '{[3.14159] = "pi"}',  },  {   테스트명 = "testRepr_tableWithHugeKey",   args = {{[math.matrix] = "실패"}, {}},   기대됩니다 = {[수학]거대] = "대단히"}',  },  {   테스트명 = "testRepr_tableWith EmptyStringKey",   args = {{[""] = "비었다"}, {}},   기대됩니다 = '{["] = '비어 있음'}',  },  {   테스트명 = "testRepr_tableWithIdentifierKeys",   args = {{a = "b", c = "d"}, {}},   기대됩니다 = '{a = "b", c = "d"}',  },  {   테스트명 = "testRepr_tableWithStringKeysStartingWithNumbers",   args = {{["1 foo"] = "푸", ["2바"] = '바'}, {}},   기대됩니다 = '{["1foo"] = 'foo', ["2bar"] = 'bar'}',  },  {   테스트명 = "testRepr_tableWithStringKeys(멀티바이트 문자 포함)",   args = {{["föo"] = 「바」}, {}},   기대됩니다 = '{["föo"] = 'bör'}',  },  {   테스트명 = "testRepr_tableWithLuaKeywordKey",   args = {{['브레이크'] = '브레이크'}, {}},   기대됩니다 = '{["break"] = 'break'}',  },  {   테스트명 = "testRepr_table With Boolean Key",   args = {{[진실의] = '진실'}, {}},   기대됩니다 = '{[true] = 'truth'}',  },  {   테스트명 = "testRepr_tableWith EmptyTableKey",   args = {{[{}] = "테이블"}, {}},   기대됩니다 = '{{}} = "테이블"}',  },  {   테스트명 = "testRepr_nested Sequence",   args = {{1, 2, {3, 4, {5}}}, {}},   기대됩니다 = '{1, 2, {3, 4, {5}}}',  },  {   테스트명 = "testRepr_nestedTableWithIdentifierKeys",   args = {{a = {b = {c = "d"}}}, {}},   기대됩니다 = '{a = {b = {c = "d"}}}',  },  {   테스트명 = "testRepr_tableWithNestedTableKey",   args = {{[{a = {b = "b"}}] = "값"}, {}},   기대됩니다 = '{{a = {b = "b"}}}} = "값"}',  },  {   테스트명 = "testRepr_sequenceKey",   args = {{[{1, 2, 3}] = 6}, {}},   기대됩니다 = '{[{1, 2, 3}] = 6}',  },  {   테스트명 = "testRepr_cyclic Sequence",   args = {사이클릭 시퀀스, {}},   기대됩니다 = 사이클릭_시퀀스_REPR,  },  {   테스트명 = "testRepr_cyclicTable",   args = {순환 탭LE, {}},   기대됩니다 = 사이클릭_테이블_REPR,  },  {   테스트명 = "testRepr_cyclicTablePair",   args = {주기_테이블_쌍, {}},   기대됩니다 = Cyclic_TABLE_PAIR_REPR,  },  {   테스트명 = "testRepr_tableWithSharedSubtables",   args = {표_With_SHARED_Subtables, {}},   기대됩니다 = 표_WITH_SHARED_SUBTABles_REPR,  },  {   테스트명 = "testRepr_tableWithToStringMethod",   args = {토스트링_METABLE, {}},   기대됩니다 = TOSTRING_METABLE_REPR,  },  {   테스트명 = "testRepr_tableWithToStringMetamethod",   args = {토스트링_메타메타모드_테이블, {}},   기대됩니다 = 토스트링_메타메타모드_표_REPR,  },  {   테스트명 = "testRepr_function",   args = {기능. () 끝., {}},   기대됩니다 = '<기능>',  },  {   테스트명 = "testRepr_tableKeySorting_withExplicitSetting",   args = {표_WITH_IDENTIFIER_KEYS, {정렬 키=진실의}},   기대됩니다 = 표_WITH_IDENTIFIER_KEYS_SORTED_REPR,  },  {   테스트명 = "testRepr_tableKeySorting_withDefaultSetting",   args = {표_WITH_IDENTIFIER_KEYS},   기대됩니다 = 표_WITH_IDENTIFIER_KEYS_SORTED_REPR,  },  {   테스트명 = "testRepr_tableKeySorting_with"상속 설정",   args = {표_WITH_IDENTIFIER_KEYS, {}},   기대됩니다 = 표_WITH_IDENTIFIER_KEYS_SORTED_REPR,  },  {   테스트명 = "testRepr_prettyPrint_withDefaultSettings",   args = {네스트 완료_탭LE, {예쁘다 = 진실의}},   기대됩니다 = [[ { a = "실행", b = { c = "cc" } }]],  },  {   테스트명 = "testRepr_prettyPrint_withDefaultSpaces",   args = {네스트 완료_탭LE, {예쁘다 = 진실의,  = 거짓의}},   기대됩니다 = [[ { a = "실행", b = { c = "cc" } }]],  },  {   테스트명 = "testRepr_prettyPrint_with TwoSpaces",   args = {네스트 완료_탭LE, {예쁘다 = 진실의, 스페이스 = 2,  = 거짓의}},   기대됩니다 = [[ { a = "실행", b = { c = "cc" } }]],  },  {   테스트명 = "TestRepr_prettyPrint_withSemicolons",   args = {네스트 완료_탭LE, {예쁘다 = 진실의, 세미콜론 = 진실의}},   기대됩니다 = [[ { a = "실행"; b = { c = "cc" } }]],  },  {   테스트명 = "testRepr_prettyPrint_withDepthOf1",   args = {네스트 완료_탭LE, {예쁘다 = 진실의, 깊이 = 1}},   기대됩니다 = [[{ a = "실행", b = { c = "cc" } }]],  },  {   테스트명 = "testRepr_prettyPrint_with NestedTableKey",   args = {{[{a = "실패", b = "bbb"}] = "cc"}, {예쁘다 = 진실의}},   기대됩니다 = [[ { [{ a = "실행", b = "bbb" }] = "cc" }]],  },  {   테스트명 = "TestRepr_nestedTable_withSemicolons",   args = {네스트 완료_탭LE, {세미콜론 = 진실의}},   기대됩니다 = '{a = "ccc"}, b = {c = "ccc"}',  }, }  위해서 _, 테스트 데이터  아이페어(reprTestData) 하다  스위트[테스트 데이터.테스트명] = 기능.(자신)   현지의 결과 = mRepr.반응하다(개봉하다(테스트 데이터.args))   자신:assert Equals(동일)(테스트 데이터.기대됩니다, 결과)  끝. 끝.  -------------------------------------------------------------------------------- -- invocationRepr 테스트 --------------------------------------------------------------------------------  현지의 invocation Repr Test Data = {  {   테스트명 = "testInvocationRepr_nameOnly",   args = {    기능명 = "foo.bar",    args = {},    옵션들 = {},   },   기대됩니다 = "foo.bar()",  },  {   테스트명 = "testInvocationRepr_nameOnly_withNilArgsAndOptions",   args = {    기능명 = "foo.bar",   },   기대됩니다 = "foo.bar()",  },  {   테스트명 = "testInvocationRepr_withSimpleArguments",   args = {    기능명 = "마이펑크",    args = {1, "푸", 진실의},    옵션들 = {},   },   기대됩니다 = 'myFunc(1, "foo", true)',  },  {   테스트명 = "testInvocationRepr_withTableArguments",   args = {    기능명 = "마이펑크",    args = {{후우 = '바'}, {["123"] = "456"}},    옵션들 = {},   },   기대됩니다 = 'myFunc({foo = "bar", {["123"] = "456"})'',  },  {   테스트명 = "testInvocationRepr_withNestedTableArgument",   args = {    기능명 = "마이펑크",    args = {{a = {b = "bbb"}}},    옵션들 = {},   },   기대됩니다 = 'myFunc({a = {b = "bbb"})'',,  },  {   테스트명 = "testInvocationRepr_withNestedTableArgument_prettyPrinted",   args = {    기능명 = "마이펑크",    args = {{a = "실패", b = {c = "cc"}}},    옵션들 = {예쁘다 = 진실의},   },   기대됩니다 = [[ myFunc( { a = "실행", b = { c = "cc" } } )]],  },  {   테스트명 = "testInvocationRepr_withNestedTableArgument_prettyPrinted"Depth Of 1",   args = {    기능명 = "마이펑크",    args = {{a = "실패", b = {c = "cc"}}},    옵션들 = {예쁘다 = 진실의, 깊이 = 1},   },   기대됩니다 = [[myFunc( { a = "실행", b = { c = "cc" } } )]],  }, }  위해서 _, 테스트 데이터  아이페어(invocation Repr Test Data) 하다  스위트[테스트 데이터.테스트명] = 기능.(자신)   현지의 결과 = mRepr.invocationRepr(테스트 데이터.args)   자신:assert Equals(동일)(테스트 데이터.기대됩니다, 결과)  끝. 끝.  돌아가다 스위트