#!/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, ) import tempfile ############################################################ # Test script for the api functions ############################################################ def test_run_binary(): 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_binary(argstring) print("\n\nBinary_c output:") print(output) 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_run_binary_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 = tempfile.gettempdir() + "/test_log.txt" api_log_filename_prefix = tempfile.gettempdir() + "/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_binary_with_logfile(argstring) print("\n\nBinary_c output:") print(output) def test_run_binary_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 = create_and_load_logging_function(custom_logging_code) 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 = tempfile.gettempdir() + "/test_log.txt" 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}".format( m1, m2, separation, orbital_period, eccentricity, metallicity, max_evolution_time, log_filename, ) out = binary_c_python_api.run_binary_custom_logging(argstring, func_memaddr) 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) def test_return_store(): out = binary_c_python_api.return_store("") print(out) 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 log_filename = tempfile.gettempdir() + "/test_log.txt" 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, log_filename, ) out = binary_c_python_api.run_system(argstring, -1, -1) print(out) #### if __name__ == "__main__": # test_run_binary() # test_run_binary_with_log() # test_run_binary_with_custom_logging() # test_return_help() # test_return_arglines() # test_return_help_all() # test_return_version_info() # test_return_store() test_run_system()