#!/usr/bin/python3 import binary_c_python_api from binarycpython.utils.custom_logging_functions import ( autogen_C_logging_code, binary_c_log_code, create_and_load_logging_function, ) from binarycpython.utils.functions import temp_dir import tempfile ############################################################ # Test script for the api functions # TODO: Add asserts to these functions and use em as # unittests ############################################################ # Evolution functionality def test_run_system(): m1 = 15.0 # Msun m2 = 14.0 # Msun separation = 0 # 0 = ignored, use period orbital_period = 4530.0 # days eccentricity = 0.0 metallicity = 0.02 max_evolution_time = 15000 argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} ".format( m1, m2, separation, orbital_period, eccentricity, metallicity, max_evolution_time, ) output = binary_c_python_api.run_system(argstring=argstring) print("\n\nBinary_c output:") print(output) def test_run_system_with_log(): m1 = 15.0 # Msun m2 = 14.0 # Msun separation = 0 # 0 = ignored, use period orbital_period = 4530.0 # days eccentricity = 0.0 metallicity = 0.02 max_evolution_time = 15000 log_filename = temp_dir() + "/test_log.txt" api_log_filename_prefix = temp_dir() + "/test_log" argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} log_filename {7:s} api_log_filename_prefix {8:s}".format( m1, m2, separation, orbital_period, eccentricity, metallicity, max_evolution_time, log_filename, api_log_filename_prefix, ) output = binary_c_python_api.run_system(argstring=argstring, write_logfile=1) print("\n\nBinary_c output:") print(output) def test_run_system_with_custom_logging(): """ """ # generate logging lines. Here you can choose whatever you want to have logged, and with what header # this generates working print statements logging_line = autogen_C_logging_code( {"MY_STELLAR_DATA": ["model.time", "star[0].mass"],} ) # Generate entire shared lib code around logging lines custom_logging_code = binary_c_log_code(logging_line) # Load memory adress func_memaddr, shared_lib_filename = create_and_load_logging_function( custom_logging_code ) # Some values m1 = 15.0 # Msun m2 = 14.0 # Msun separation = 0 # 0 = ignored, use period orbital_period = 4530.0 # days eccentricity = 0.0 metallicity = 0.02 max_evolution_time = 15000 argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g}".format( m1, m2, separation, orbital_period, eccentricity, metallicity, max_evolution_time, ) print(func_memaddr) out = binary_c_python_api.run_system( argstring, custom_logging_func_memaddr=func_memaddr ) print(out) # Testing other utility functions def test_return_help(): out = binary_c_python_api.return_help("M_1") print(out) def test_return_arglines(): out = binary_c_python_api.return_arglines() print(out) def test_return_help_all(): out = binary_c_python_api.return_help_all("M_1") print(out) def test_return_version_info(): out = binary_c_python_api.return_version_info() print(out) # Testing other functions def test_return_store(): out = binary_c_python_api.return_store("") print(out) #### if __name__ == "__main__": test_run_system() test_run_system_with_log() test_run_system_with_custom_logging() test_return_help() test_return_arglines() test_return_help_all() test_return_version_info() test_return_store()