-- 필요한 모듈을 로드합니다. 현지의 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(동일)(테스트 데이터.기대됩니다, 결과) 끝. 끝. 돌아가다 스위트