#include "test_utils.h" UnittestTestResult_t* test_static_field_basic(void) { UNITTEST_BEGIN_TEST("TestStatic", "test_static_field_basic"); RAVA_TEST_RUN(_unittest_result, "class Counter {\n" " static int count;\n" "}\n" "public class Test {\n" " public static int main() {\n" " Counter.count = 42;\n" " return Counter.count;\n" " }\n" "}\n", "Test", "main", 42, "static field basic read/write should return 42"); UNITTEST_END_TEST(); } UnittestTestResult_t* test_static_field_increment(void) { UNITTEST_BEGIN_TEST("TestStatic", "test_static_field_increment"); RAVA_TEST_RUN(_unittest_result, "class Counter {\n" " static int count;\n" "}\n" "public class Test {\n" " public static int main() {\n" " Counter.count = 10;\n" " Counter.count = Counter.count + 5;\n" " return Counter.count;\n" " }\n" "}\n", "Test", "main", 15, "static field increment should return 15"); UNITTEST_END_TEST(); } UnittestTestResult_t* test_static_field_same_class(void) { UNITTEST_BEGIN_TEST("TestStatic", "test_static_field_same_class"); RAVA_TEST_RUN(_unittest_result, "public class Test {\n" " static int value;\n" " public static int main() {\n" " Test.value = 100;\n" " return Test.value;\n" " }\n" "}\n", "Test", "main", 100, "static field in same class should return 100"); UNITTEST_END_TEST(); } UnittestTestResult_t* test_multiple_static_fields(void) { UNITTEST_BEGIN_TEST("TestStatic", "test_multiple_static_fields"); RAVA_TEST_RUN(_unittest_result, "class Data {\n" " static int a;\n" " static int b;\n" " static int c;\n" "}\n" "public class Test {\n" " public static int main() {\n" " Data.a = 10;\n" " Data.b = 20;\n" " Data.c = 30;\n" " return Data.a + Data.b + Data.c;\n" " }\n" "}\n", "Test", "main", 60, "multiple static fields sum should return 60"); UNITTEST_END_TEST(); } UnittestTestResult_t* test_static_field_across_classes(void) { UNITTEST_BEGIN_TEST("TestStatic", "test_static_field_across_classes"); RAVA_TEST_RUN(_unittest_result, "class ClassA {\n" " static int val;\n" "}\n" "class ClassB {\n" " static int val;\n" "}\n" "public class Test {\n" " public static int main() {\n" " ClassA.val = 100;\n" " ClassB.val = 200;\n" " return ClassA.val + ClassB.val;\n" " }\n" "}\n", "Test", "main", 300, "static field across classes should return 300"); UNITTEST_END_TEST(); } int main(int argc, char **argv) { UnittestConfig_t *config = unittest_config_create(); config->verbosity = 2; if (argc > 1 && strcmp(argv[1], "--json") == 0) { config->output_format = UNITTEST_FORMAT_JSON; config->use_colors = false; } UnittestTestSuite_t *suite = unittest_test_suite_create("Static Field Tests"); UnittestTestCase_t *tc = unittest_test_case_create("TestStatic"); unittest_test_case_add_result(tc, test_static_field_basic()); unittest_test_case_add_result(tc, test_static_field_increment()); unittest_test_case_add_result(tc, test_static_field_same_class()); unittest_test_case_add_result(tc, test_multiple_static_fields()); unittest_test_case_add_result(tc, test_static_field_across_classes()); unittest_test_suite_add_test_case(suite, tc); unittest_generate_report(suite, config); int failures = suite->total_failed + suite->total_errors; unittest_test_suite_destroy(suite); unittest_config_destroy(config); return failures > 0 ? 1 : 0; }