示例#1
0
/*
 * @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);
}
示例#3
0
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);
}
示例#4
0
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);
}
示例#8
0
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);
}