TESTING

Constant TESTING 

Source
pub const TESTING: &str = "// stdlib/testing.aether\n// Aether \u{6d4b}\u{8bd5}\u{6846}\u{67b6}\n// \u{63d0}\u{4f9b}\u{5355}\u{5143}\u{6d4b}\u{8bd5}\u{529f}\u{80fd}\n\n// ==================== \u{5168}\u{5c40}\u{6d4b}\u{8bd5}\u{72b6}\u{6001} ====================\n\nSet TEST_TOTAL 0\nSet TEST_PASSED 0\nSet TEST_FAILED 0\nSet TEST_CURRENT_SUITE \"\"\nSet TEST_FAILURES []\n\n// ==================== \u{65ad}\u{8a00}\u{51fd}\u{6570} ====================\n\n// \u{65ad}\u{8a00}\u{503c}\u{4e3a}\u{771f}\nFunc ASSERT_TRUE(VALUE, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (VALUE) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected True, got False\")\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{503c}\u{4e3a}\u{5047}\nFunc ASSERT_FALSE(VALUE, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (!VALUE) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected False, got True\")\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{4e24}\u{4e2a}\u{503c}\u{76f8}\u{7b49}\nFunc ASSERT_EQUAL(ACTUAL, EXPECTED, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (ACTUAL == EXPECTED) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected: \" + TO_STRING(EXPECTED) + \", Got: \" + TO_STRING(ACTUAL))\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{4e24}\u{4e2a}\u{503c}\u{4e0d}\u{76f8}\u{7b49}\nFunc ASSERT_NOT_EQUAL(ACTUAL, EXPECTED, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (ACTUAL != EXPECTED) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected values to be different, but both are: \" + TO_STRING(ACTUAL))\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{503c}\u{4e3a} null\nFunc ASSERT_NULL(VALUE, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (VALUE == Null) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected null, got: \" + TO_STRING(VALUE))\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{503c}\u{4e0d}\u{4e3a} null\nFunc ASSERT_NOT_NULL(VALUE, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (VALUE != Null) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected non-null VALUE, got null\")\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{503c}\u{5927}\u{4e8e}\u{9884}\u{671f}\u{503c}\nFunc ASSERT_GREATER(ACTUAL, EXPECTED, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (ACTUAL > EXPECTED) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected \" + TO_STRING(ACTUAL) + \" > \" + TO_STRING(EXPECTED))\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{503c}\u{5c0f}\u{4e8e}\u{9884}\u{671f}\u{503c}\nFunc ASSERT_LESS(ACTUAL, EXPECTED, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (ACTUAL < EXPECTED) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected \" + TO_STRING(ACTUAL) + \" < \" + TO_STRING(EXPECTED))\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{503c}\u{5927}\u{4e8e}\u{7b49}\u{4e8e}\u{9884}\u{671f}\u{503c}\nFunc ASSERT_GREATER_EQUAL(ACTUAL, EXPECTED, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (ACTUAL >= EXPECTED) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected \" + TO_STRING(ACTUAL) + \" >= \" + TO_STRING(EXPECTED))\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{503c}\u{5c0f}\u{4e8e}\u{7b49}\u{4e8e}\u{9884}\u{671f}\u{503c}\nFunc ASSERT_LESS_EQUAL(ACTUAL, EXPECTED, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    \n    If (ACTUAL <= EXPECTED) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected \" + TO_STRING(ACTUAL) + \" <= \" + TO_STRING(EXPECTED))\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{6570}\u{7ec4}\u{5305}\u{542b}\u{67d0}\u{4e2a}\u{503c}\nFunc ASSERT_CONTAINS(ARR, VALUE, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    Set LEN LEN(ARR)\n    Set FOUND False\n    Set I 0\n    \n    While (I < LEN) {\n        If (ARR[I] == VALUE) {\n            Set FOUND True\n            Break\n        }\n        Set I (I + 1)\n    }\n    \n    If (FOUND) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Array does not contain: \" + TO_STRING(VALUE))\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{6570}\u{7ec4}\u{957f}\u{5ea6}\nFunc ASSERT_LENGTH(ARR, EXPECTED_LEN, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    Set ACTUAL_LEN LEN(ARR)\n    \n    If (ACTUAL_LEN == EXPECTED_LEN) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected length: \" + TO_STRING(EXPECTED_LEN) + \", Got: \" + TO_STRING(ACTUAL_LEN))\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// \u{65ad}\u{8a00}\u{7c7b}\u{578b}\nFunc ASSERT_TYPE(VALUE, EXPECTED_TYPE, MESSAGE) {\n    Set TEST_TOTAL (TEST_TOTAL + 1)\n    Set ACTUAL_TYPE TYPE(VALUE)\n    \n    If (ACTUAL_TYPE == EXPECTED_TYPE) {\n        Set TEST_PASSED (TEST_PASSED + 1)\n        PRINTLN(\"  \u{2713} \" + MESSAGE)\n        Return True\n    } Else {\n        Set TEST_FAILED (TEST_FAILED + 1)\n        Set FAILURE_MSG (\"\u{2717} \" + MESSAGE + \" - Expected type: \" + EXPECTED_TYPE + \", Got: \" + ACTUAL_TYPE)\n        PRINTLN(\"  \" + FAILURE_MSG)\n        Set TEST_FAILURES PUSH(TEST_FAILURES, FAILURE_MSG)\n        Return False\n    }\n}\n\n// ==================== \u{6d4b}\u{8bd5}\u{5957}\u{4ef6}\u{7ba1}\u{7406} ====================\n\n// \u{5f00}\u{59cb}\u{4e00}\u{4e2a}\u{65b0}\u{7684}\u{6d4b}\u{8bd5}\u{5957}\u{4ef6}\nFunc TEST_SUITE(SUITE_NAME) {\n    Set TEST_CURRENT_SUITE SUITE_NAME\n    PRINTLN(\"\")\n    PRINTLN(\"\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\")\n    PRINTLN(\"Test Suite: \" + SUITE_NAME)\n    PRINTLN(\"\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\")\n}\n\n// \u{5f00}\u{59cb}\u{4e00}\u{4e2a}\u{6d4b}\u{8bd5}\u{7528}\u{4f8b}\nFunc TEST_CASE(CASE_NAME) {\n    PRINTLN(\"\")\n    PRINTLN(\"\u{25b6} \" + CASE_NAME)\n}\n\n// ==================== \u{6d4b}\u{8bd5}\u{7ed3}\u{679c}\u{62a5}\u{544a} ====================\n\n// \u{6253}\u{5370}\u{6d4b}\u{8bd5}\u{6458}\u{8981}\nFunc TEST_SUMMARY() {\n    PRINTLN(\"\")\n    PRINTLN(\"\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\")\n    PRINTLN(\"Test Summary\")\n    PRINTLN(\"\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\")\n    PRINTLN(\"Total Tests:  \" + TO_STRING(TEST_TOTAL))\n    PRINTLN(\"Passed:       \" + TO_STRING(TEST_PASSED) + \" \u{2713}\")\n    PRINTLN(\"Failed:       \" + TO_STRING(TEST_FAILED) + \" \u{2717}\")\n    \n    If (TEST_TOTAL > 0) {\n        Set PASS_RATE ((TEST_PASSED * 100) / TEST_TOTAL)\n        PRINTLN(\"Pass Rate:    \" + TO_STRING(PASS_RATE) + \"%\")\n    }\n    \n    If (TEST_FAILED > 0) {\n        PRINTLN(\"\")\n        PRINTLN(\"Failed Tests:\")\n        PRINTLN(\"\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\")\n        Set I 0\n        Set FAIL_LEN LEN(TEST_FAILURES)\n        While (I < FAIL_LEN) {\n            PRINTLN(TO_STRING(I + 1) + \". \" + TEST_FAILURES[I])\n            Set I (I + 1)\n        }\n    }\n    \n    PRINTLN(\"\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\")\n    \n    If (TEST_FAILED == 0) {\n        PRINTLN(\"\u{1f389} All tests passed!\")\n        Return True\n    } Else {\n        PRINTLN(\"\u{274c} Some tests failed.\")\n        Return False\n    }\n}\n\n// \u{91cd}\u{7f6e}\u{6d4b}\u{8bd5}\u{8ba1}\u{6570}\u{5668}\nFunc TEST_RESET() {\n    Set TEST_TOTAL 0\n    Set TEST_PASSED 0\n    Set TEST_FAILED 0\n    Set TEST_CURRENT_SUITE \"\"\n    Set TEST_FAILURES []\n    PRINTLN(\"Test counters reset.\")\n}\n\n// ==================== \u{6027}\u{80fd}\u{6d4b}\u{8bd5} ====================\n\n// \u{6027}\u{80fd}\u{6d4b}\u{8bd5}\u{8f85}\u{52a9}\u{51fd}\u{6570}\u{ff08}\u{8bb0}\u{5f55}\u{5f00}\u{59cb}\u{65f6}\u{95f4}\u{ff09}\nFunc PERF_START() {\n    PRINTLN(\"\u{23f1} Performance test started...\")\n    // \u{6ce8}\u{610f}\u{ff1a}Aether \u{53ef}\u{80fd}\u{6ca1}\u{6709}\u{5185}\u{7f6e}\u{65f6}\u{95f4}\u{51fd}\u{6570}\u{ff0c}\u{8fd9}\u{91cc}\u{53ea}\u{662f}\u{5360}\u{4f4d}\n    Return 0\n}\n\n// \u{6027}\u{80fd}\u{6d4b}\u{8bd5}\u{8f85}\u{52a9}\u{51fd}\u{6570}\u{ff08}\u{8bb0}\u{5f55}\u{7ed3}\u{675f}\u{65f6}\u{95f4}\u{5e76}\u{62a5}\u{544a}\u{ff09}\nFunc PERF_END(START_TIME, OPERATION_NAME) {\n    // \u{6ce8}\u{610f}\u{ff1a}Aether \u{53ef}\u{80fd}\u{6ca1}\u{6709}\u{5185}\u{7f6e}\u{65f6}\u{95f4}\u{51fd}\u{6570}\u{ff0c}\u{8fd9}\u{91cc}\u{53ea}\u{662f}\u{5360}\u{4f4d}\n    Set END_TIME 0\n    Set ELAPSED (END_TIME - START_TIME)\n    PRINTLN(\"\u{23f1} \" + OPERATION_NAME + \" completed in \" + TO_STRING(ELAPSED) + \"ms\")\n    Return ELAPSED\n}\n\n// ==================== Mock \u{8f85}\u{52a9}\u{51fd}\u{6570} ====================\n\n// \u{521b}\u{5efa}\u{4e00}\u{4e2a}\u{7b80}\u{5355}\u{7684} mock \u{5bf9}\u{8c61}\u{ff08}\u{5b57}\u{5178}\u{ff09}\nFunc MOCK_CREATE() {\n    Set MOCK {\"called\": False, \"call_count\": 0, \"last_args\": []}\n    Return MOCK\n}\n\n// \u{8bb0}\u{5f55} mock \u{88ab}\u{8c03}\u{7528}\nFunc MOCK_CALL(MOCK, ARGS) {\n    Set MOCK[\"called\"] True\n    Set COUNT MOCK[\"call_count\"]\n    Set MOCK[\"call_count\"] (COUNT + 1)\n    Set MOCK[\"last_args\"] ARGS\n    Return MOCK\n}\n\n// \u{68c0}\u{67e5} mock \u{662f}\u{5426}\u{88ab}\u{8c03}\u{7528}\nFunc MOCK_WAS_CALLED(MOCK) {\n    Return MOCK[\"called\"]\n}\n\n// \u{83b7}\u{53d6} mock \u{7684}\u{8c03}\u{7528}\u{6b21}\u{6570}\nFunc MOCK_CALL_COUNT(MOCK) {\n    Return MOCK[\"call_count\"]\n}\n\n// ==================== \u{6d4b}\u{8bd5}\u{6570}\u{636e}\u{751f}\u{6210} ====================\n\n// \u{751f}\u{6210}\u{6d4b}\u{8bd5}\u{7528}\u{7684}\u{6574}\u{6570}\u{6570}\u{7ec4}\nFunc TEST_DATA_INT_ARRAY(SIZE, START) {\n    Set RESULT []\n    Set I 0\n    \n    While (I < SIZE) {\n        Set RESULT PUSH(RESULT, START + I)\n        Set I (I + 1)\n    }\n    \n    Return RESULT\n}\n\n// \u{751f}\u{6210}\u{6d4b}\u{8bd5}\u{7528}\u{7684}\u{5b57}\u{7b26}\u{4e32}\u{6570}\u{7ec4}\nFunc TEST_DATA_STR_ARRAY(SIZE, PREFIX) {\n    Set RESULT []\n    Set I 0\n    \n    While (I < SIZE) {\n        Set ITEM (PREFIX + TO_STRING(I))\n        Set RESULT PUSH(RESULT, ITEM)\n        Set I (I + 1)\n    }\n    \n    Return RESULT\n}\n\n// \u{751f}\u{6210}\u{6d4b}\u{8bd5}\u{7528}\u{7684}\u{7a7a}\u{6570}\u{7ec4}\nFunc TEST_DATA_EMPTY_ARRAY() {\n    Return []\n}\n\n// \u{751f}\u{6210}\u{6d4b}\u{8bd5}\u{7528}\u{7684}\u{5355}\u{5143}\u{7d20}\u{6570}\u{7ec4}\nFunc TEST_DATA_SINGLE_ARRAY(VALUE) {\n    Set RESULT []\n    Set RESULT PUSH(RESULT, VALUE)\n    Return RESULT\n}\n\n// ==================== \u{65ad}\u{8a00}\u{7ec4}\u{5408} ====================\n\n// \u{65ad}\u{8a00}\u{8303}\u{56f4}\u{ff08}\u{503c}\u{5728}min\u{548c}max\u{4e4b}\u{95f4}\u{ff09}\nFunc ASSERT_IN_RANGE(VALUE, MIN, MAX, MESSAGE) {\n    Set IN_RANGE (VALUE >= MIN && VALUE <= MAX)\n    \n    If (IN_RANGE) {\n        Return ASSERT_TRUE(True, MESSAGE)\n    } Else {\n        Set FAILURE_MSG (MESSAGE + \" - Value \" + TO_STRING(VALUE) + \" not in range [\" + TO_STRING(MIN) + \", \" + TO_STRING(MAX) + \"]\")\n        Return ASSERT_TRUE(False, FAILURE_MSG)\n    }\n}\n\n// \u{65ad}\u{8a00}\u{6570}\u{7ec4}\u{4e3a}\u{7a7a}\nFunc ASSERT_EMPTY(ARR, MESSAGE) {\n    Set LEN LEN(ARR)\n    Return ASSERT_EQUAL(LEN, 0, MESSAGE)\n}\n\n// \u{65ad}\u{8a00}\u{6570}\u{7ec4}\u{4e0d}\u{4e3a}\u{7a7a}\nFunc ASSERT_NOT_EMPTY(ARR, MESSAGE) {\n    Set LEN LEN(ARR)\n    Return ASSERT_GREATER(LEN, 0, MESSAGE)\n}\n\n// ==================== \u{8f85}\u{52a9}\u{5de5}\u{5177} ====================\n\n// \u{6253}\u{5370}\u{5206}\u{9694}\u{7ebf}\nFunc TEST_DIVIDER() {\n    PRINTLN(\"\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\")\n}\n\n// \u{6253}\u{5370}\u{6d4b}\u{8bd5}\u{4fe1}\u{606f}\nFunc TEST_INFO(MESSAGE) {\n    PRINTLN(\"\u{2139} \" + MESSAGE)\n}\n\n// \u{6253}\u{5370}\u{8b66}\u{544a}\u{4fe1}\u{606f}\nFunc TEST_WARN(MESSAGE) {\n    PRINTLN(\"\u{26a0} \" + MESSAGE)\n}\n\n// \u{8df3}\u{8fc7}\u{6d4b}\u{8bd5}\nFunc TEST_SKIP(REASON) {\n    PRINTLN(\"\u{2298} Test skipped: \" + REASON)\n}\n\n";
Expand description

测试框架