import stdio
import t, c
import testcheck
from stdint import *
from asm_test import asm_test
from attr_test import attr_test
from augassign_test import augassign_test
from closure_test import closure_test
from deco_test import deco_test
from deref_min_test import deref_min_test
from deref_test import deref_test
from eq_test import eq_test
from float_test import float_test
from flow_test import flow_test
from for_test import for_test
from func_test import func_test
from llvmir_test import llvmir_test
from oop_test import oop_test
from ptr_only_test import ptr_only_test
from ptr_test import ptr_test
from simple_test import simple_test
from string_min_test import string_min_test
from string_test import string_test
from struct_test import struct_test
from type_bit_test import type_bit_test
from vtable_test import vtable_test
from inherit_test import inherit_test
from func_vtable_test import func_vtable_test
from virtual_dispatch_test import virtual_dispatch_test
from new_test import new_test
from namespace_test import namespace_test
from testcheck_test import testcheck_test
from opovl_test import opovl_test
from generic_test import generic_test


def main() -> int:
    stdio.printf("===== TransPyV Test Suite =====\n\n")

    r: int = 0

    stdio.fflush(None)
    r = asm_test()
    stdio.fflush(None)
    r = attr_test()
    stdio.fflush(None)
    r = augassign_test()
    stdio.fflush(None)
    r = closure_test()
    stdio.fflush(None)
    r = deco_test()
    stdio.fflush(None)
    r = deref_min_test()
    stdio.fflush(None)
    r = deref_test()
    stdio.fflush(None)
    r = eq_test()
    stdio.fflush(None)
    r = float_test()
    stdio.fflush(None)
    r = flow_test()
    stdio.fflush(None)
    r = for_test()
    stdio.fflush(None)
    r = func_test()
    stdio.fflush(None)
    r = llvmir_test()
    stdio.fflush(None)
    r = oop_test()
    stdio.fflush(None)
    r = ptr_only_test()
    stdio.fflush(None)
    r = ptr_test()
    stdio.fflush(None)
    r = simple_test()
    stdio.fflush(None)
    r = string_min_test()
    stdio.fflush(None)
    r = string_test()
    stdio.fflush(None)
    r = struct_test()
    stdio.fflush(None)
    r = type_bit_test()
    stdio.fflush(None)
    r = vtable_test()
    stdio.fflush(None)
    r = inherit_test()
    stdio.fflush(None)
    r = func_vtable_test()
    stdio.fflush(None)
    r = virtual_dispatch_test()
    stdio.fflush(None)
    r = new_test()
    stdio.fflush(None)
    r = namespace_test()
    stdio.fflush(None)
    r = testcheck_test()
    stdio.fflush(None)
    r = opovl_test()
    stdio.fflush(None)

    stdio.printf("[TM] before generic_test\n")
    stdio.fflush(None)
    r = generic_test()
    stdio.printf("[TM] after generic_test r=%d\n", r)
    stdio.fflush(None)

    stdio.printf("\n===== Test Suite Complete =====\n")
    return r