/* * @NAME: config_create * @DESC: Crea y devuelve un puntero a una estructura t_config * @PARAMS: * path - path del archivo de configuracion */ t_config *config_create(char *path) { t_config *config = malloc(sizeof(t_config)); config->path = strdup(path); config->properties = dictionary_create(); struct stat stat_file; stat(path, &stat_file); FILE* file = NULL; file = fopen(path, "r"); if (file != NULL) { char* buffer = calloc(1, stat_file.st_size + 1); fread(buffer, stat_file.st_size, 1, file); char** lines = string_split(buffer, "\n"); void add_cofiguration(char *line) { if (!string_starts_with(line, "#")) { char** keyAndValue = string_split(line, "="); dictionary_put(config->properties, keyAndValue[0], keyAndValue[1]); free(keyAndValue[0]); free(keyAndValue); } } string_iterate_lines(lines, add_cofiguration); string_iterate_lines(lines, (void*) free); free(lines); free(buffer); fclose(file); } else {
void cargar_dispositivos() { char** hioId = config_get_array_value(config, "ID_HIO"); char** hioRetardo = config_get_array_value(config, "HIO"); dispositivos = dictionary_create(); int i; for(i = 0; hioId[i] != NULL; i++) { io_t *registro_hio = crear_registro(hioRetardo[i]); dictionary_put(dispositivos, hioId[i], registro_hio); } string_iterate_lines(hioId, free); string_iterate_lines(hioRetardo, free); free(hioId); free(hioRetardo); }
static void test_string_n_split_when_separator_isnt_included() { char *line = "Hola planeta tierra"; char ** substrings = string_n_split(line, 5, ";"); CU_ASSERT_PTR_NOT_NULL(substrings); CU_ASSERT_STRING_EQUAL(substrings[0], line); CU_ASSERT_PTR_NULL(substrings[1]); string_iterate_lines(substrings, (void *) free); free(substrings); }
static void test_string_n_split_when_n_is_less_than_splitted_elements() { char *line = "Hola planeta tierra"; char** substrings = string_n_split(line, 2, " "); CU_ASSERT_PTR_NOT_NULL(substrings); CU_ASSERT_STRING_EQUAL(substrings[0], "Hola"); CU_ASSERT_STRING_EQUAL(substrings[1], "planeta tierra"); CU_ASSERT_PTR_NULL(substrings[2]); string_iterate_lines(substrings, (void*) free); free(substrings); }
void cargar_semaforos() { char** semaforosArray = config_get_array_value(config, "SEMAFOROS"); char** valorSemaforosArray = config_get_array_value(config, "VALOR_SEMAFORO"); semaforos = dictionary_create(); int i; semaforo_t *semaforo; for(i = 0; semaforosArray[i] != NULL && valorSemaforosArray[i] != NULL; i++) { semaforo = malloc(sizeof(semaforo_t)); semaforo->valor = atoi(valorSemaforosArray[i]); semaforo->cola = queue_create(); dictionary_put(semaforos, semaforosArray[i], semaforo); } string_iterate_lines(semaforosArray, free); string_iterate_lines(valorSemaforosArray, free); free(semaforosArray); free(valorSemaforosArray); }
void test_read_empty_array() { t_config* config = config_create(PATH_CONFIG); CU_ASSERT_EQUAL(config_keys_amount(config), KEYS_AMOUNT); CU_ASSERT_TRUE(config_has_property(config, "EMPTY_ARRAY")); CU_ASSERT_STRING_EQUAL(config_get_string_value(config, "EMPTY_ARRAY"), "[]"); char** empty_array = config_get_array_value(config, "EMPTY_ARRAY"); CU_ASSERT_PTR_NOT_NULL(empty_array); CU_ASSERT_PTR_EQUAL(empty_array[0], NULL); string_iterate_lines(empty_array, (void*) free); free(empty_array); config_destroy(config); }
void test_read_full_array() { char* numbers_expected[] = {"1", "2", "3", "4", "5", NULL}; t_config* config = config_create(PATH_CONFIG); CU_ASSERT_EQUAL(config_keys_amount(config), KEYS_AMOUNT); CU_ASSERT_TRUE(config_has_property(config, "NUMBERS")); CU_ASSERT_STRING_EQUAL(config_get_string_value(config, "NUMBERS"), "[1, 2, 3, 4, 5]"); char** numbers = config_get_array_value(config, "NUMBERS"); _assert_equals_array(numbers_expected, numbers, 5); string_iterate_lines(numbers, (void*) free); free(numbers); config_destroy(config); }
static void test_string_get_string_full_array() { char* numbers = "[1, 2, 3, 4, 5]"; char** numbers_array = string_get_string_as_array(numbers); CU_ASSERT_PTR_NOT_NULL(numbers_array); CU_ASSERT_PTR_EQUAL(numbers_array[5], NULL); int i; for (i = 1; i <= 5; ++i) { char* value = string_from_format("%d", i); CU_ASSERT_STRING_EQUAL(numbers_array[i - 1], value); free(value); } string_iterate_lines(numbers_array, (void*) free); free(numbers_array); }
void cargar_variablesCompartidas() { char** variablesCompartidasArray = config_get_array_value(config, "VARIABLES_COMPARTIDAS"); variablesCompartidas = dictionary_create(); int i; for(i = 0; variablesCompartidasArray[i] != NULL; i++) { int32_t *valor = malloc(sizeof(int32_t)); *valor = 0; dictionary_put(variablesCompartidas, variablesCompartidasArray[i], valor); } string_iterate_lines(variablesCompartidasArray, free); free(variablesCompartidasArray); }
void test_read_full_array() { t_config* config = config_create(PATH_CONFIG); CU_ASSERT_EQUAL(config_keys_amount(config), KEYS_AMOUNT); CU_ASSERT_TRUE(config_has_property(config, "NUMBERS")); CU_ASSERT_STRING_EQUAL(config_get_string_value(config, "NUMBERS"), "[1, 2, 3, 4, 5]"); char** numeros = config_get_array_value(config, "NUMBERS"); CU_ASSERT_PTR_NOT_NULL(numeros); CU_ASSERT_PTR_EQUAL(numeros[5], NULL); int i; for (i = 1; i <= 5; ++i) { char* value = string_from_format("%d", i); CU_ASSERT_STRING_EQUAL(numeros[i - 1], value); free(value); } string_iterate_lines(numeros, (void*) free); free(numeros); config_destroy(config); }