From 9c98624e83efd0d53c8e8ef21a36d622a25e022c Mon Sep 17 00:00:00 2001 From: 20041679 <-> Date: Sat, 27 Jan 2024 02:14:48 +0100 Subject: [PATCH] exam sample 2 --- exam-sample_02/Makefile | 19 + exam-sample_02/exam.c | 111 ++++ exam-sample_02/exam.pdf | Bin 0 -> 83464 bytes exam-sample_02/include/upo/bst.h | 161 ++++++ exam-sample_02/include/upo/hashtable.h | 353 +++++++++++++ exam-sample_02/include/upo/test.h | 43 ++ exam-sample_02/lib/libupoalglib.a | Bin 0 -> 49528 bytes exam-sample_02/lib/libupoalglib.a-fedora | Bin 0 -> 49528 bytes exam-sample_02/lib/libupoalglib.a-ubuntu | Bin 0 -> 50760 bytes exam-sample_02/test/bst_subtree_count_even.c | 361 +++++++++++++ exam-sample_02/test/ht_sepchain_odelete.c | 506 +++++++++++++++++++ 11 files changed, 1554 insertions(+) create mode 100644 exam-sample_02/Makefile create mode 100644 exam-sample_02/exam.c create mode 100644 exam-sample_02/exam.pdf create mode 100644 exam-sample_02/include/upo/bst.h create mode 100644 exam-sample_02/include/upo/hashtable.h create mode 100644 exam-sample_02/include/upo/test.h create mode 100644 exam-sample_02/lib/libupoalglib.a create mode 100644 exam-sample_02/lib/libupoalglib.a-fedora create mode 100644 exam-sample_02/lib/libupoalglib.a-ubuntu create mode 100644 exam-sample_02/test/bst_subtree_count_even.c create mode 100644 exam-sample_02/test/ht_sepchain_odelete.c diff --git a/exam-sample_02/Makefile b/exam-sample_02/Makefile new file mode 100644 index 0000000..9cca8cc --- /dev/null +++ b/exam-sample_02/Makefile @@ -0,0 +1,19 @@ +CFLAGS += -Wall -Wextra -std=c11 -pedantic +CFLAGS += -g +CFLAGS += -I./include +LDFLAGS += -L./lib +LDLIBS += -lupoalglib -lm + + +.PHONY: all clean + +all: test/bst_subtree_count_even test/ht_sepchain_odelete + +test/bst_subtree_count_even: test/bst_subtree_count_even.o exam.o + +test/ht_sepchain_odelete: test/ht_sepchain_odelete.o exam.o + +clean: + $(RM) test/bst_subtree_count_even + $(RM) test/ht_sepchain_odelete + $(RM) *.o test/*.o diff --git a/exam-sample_02/exam.c b/exam-sample_02/exam.c new file mode 100644 index 0000000..3b30e32 --- /dev/null +++ b/exam-sample_02/exam.c @@ -0,0 +1,111 @@ +/* vim: set tabstop=4 expandtab shiftwidth=4 softtabstop=4: */ + + +/******************************************************************************/ +/*** NOME: ***/ +/*** COGNOME: ***/ +/*** MATRICOLA: ***/ +/******************************************************************************/ + + +#include <assert.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <upo/bst.h> +#include <upo/hashtable.h> + + +/**** BEGIN of EXERCISE #1 ****/ + +size_t upo_bst_subtree_count_skip_2_impl(upo_bst_node_t *node) +{ + if (!node) { return 0; } + size_t count = 1; + if (node->left) { + count += upo_bst_subtree_count_skip_2_impl(node->left->left) + + upo_bst_subtree_count_skip_2_impl(node->left->right); + } + if (node->right) { + count += upo_bst_subtree_count_skip_2_impl(node->right->left) + + upo_bst_subtree_count_skip_2_impl(node->right->right); + } + return count; +} + +size_t upo_bst_subtree_count_even(const upo_bst_t bst, const void *key) +{ + if (!bst) { + return 0; + } + if (upo_bst_is_empty(bst)) { + return 0; + } + + upo_bst_node_t *node = bst->root; + upo_bst_comparator_t cmp = upo_bst_get_comparator(bst); + int res; + int even = 1; + while (node && (res = cmp(key, node->key)) != 0) + { + node = res < 0 ? node->left : node->right; + even = !even; + } + if (!node) + { + return 0; + } + if (even) + { + return upo_bst_subtree_count_skip_2_impl(node); + } + + size_t count = 0; + if (node->left) { + count += upo_bst_subtree_count_skip_2_impl(node->left); + } + if (node->right) { + count += upo_bst_subtree_count_skip_2_impl(node->right); + } + return count; +} + +/**** END of EXERCISE #1 ****/ + + +/**** BEGIN of EXERCISE #2 ****/ + +void upo_ht_sepchain_odelete(upo_ht_sepchain_t ht, const void *key, int destroy_data) +{ + if (!ht) + { + perror("Uninitialized hash table"); + return; + } + upo_ht_hasher_t h = upo_ht_sepchain_get_hasher(ht); + size_t i = h(key, upo_ht_sepchain_capacity(ht)); + if (ht->slots[i].head) + { + upo_ht_comparator_t cmp = upo_ht_sepchain_get_comparator(ht); + upo_ht_sepchain_list_node_t **before = &ht->slots[i].head; + while (*before && cmp((*before)->key, key) != 0) + { + before = &(*before)->next; + } + if (*before) + { + upo_ht_sepchain_list_node_t *next = (*before)->next; + if (destroy_data) + { + free((*before)->key); + free((*before)->value); + } + free(*before); + *before = next; + --ht->size; + } + } +} + +/**** END of EXERCISE #2 ****/ diff --git a/exam-sample_02/exam.pdf b/exam-sample_02/exam.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ee9c491104f983b847614d4bad4b03c06c73c7ec GIT binary patch literal 83464 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 QGXo<dG%2a5ycqQV01VdXbN~PV literal 0 HcmV?d00001 diff --git a/exam-sample_02/include/upo/bst.h b/exam-sample_02/include/upo/bst.h new file mode 100644 index 0000000..53919e2 --- /dev/null +++ b/exam-sample_02/include/upo/bst.h @@ -0,0 +1,161 @@ +/* vim: set tabstop=4 expandtab shiftwidth=4 softtabstop=4: */ + +/** + * \file upo/bst.h + * + * \brief The Binary Search Tree (BST) abstract data type. + * + * Trees are nonlinear containers where data is structured according to + * hierarchical organization. + * Trees are made of nodes that are connected to each other according to a + * parent-child relationship. + * Binary Search Trees are Binary Trees where: + * - Each node has a key and an associated value (possibly, the + * key itself), + * - The key in node v is greater than the keys in all nodes in the + * left subtree of v, and + * - The key in node v is less than the keys in all nodes in the right + * subtree of v. + * . + * + * \author Marco Guazzone (marco.guazzone@uniupo.it) + * + * \copyright 2015 University of Piemonte Orientale, Computer Science Institute + * + * This file is part of UPOalglib. + * + * UPOalglib is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * UPOalglib is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with UPOalglib. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef UPO_BST_H +#define UPO_BST_H + + +#include <stddef.h> + + +/** + * \brief The type for key comparison functions. + * + * Declares the type for key comparison functions that are used to compare keys + * stored in the binary search tree. + * A comparison function takes two parameters: + * - The first parameter is a pointer to the first key to compare. + * - The second parameter is a pointer to the second key to compare. + * A comparison function returns a number less than, equal to, or greater than + * zero if the first key (first argument) is less than, equal to, or greater + * than the second key (second argument), respectively. + */ +typedef int (*upo_bst_comparator_t)(const void*, const void*); + +/** \brief Alias for binary search tree node type. */ +typedef struct upo_bst_node_s upo_bst_node_t; + +/** \brief Type for nodes of a binary search tree. */ +struct upo_bst_node_s +{ + void* key; /**< Pointer to user-provided key. */ + void* value; /**< Pointer to user-provided value. */ + upo_bst_node_t* left; /**< Pointer to the left child node. */ + upo_bst_node_t* right; /**< Pointer to the right child node. */ +}; + +/** \brief Defines a binary tree. */ +struct upo_bst_s +{ + upo_bst_node_t* root; /**< The root of the binary tree. */ + upo_bst_comparator_t key_cmp; /**< Pointer to the key comparison function. */ +}; + +/** \brief Declares the Binary Search Tree type. */ +typedef struct upo_bst_s* upo_bst_t; + + +/** + * \brief Creates a new empty binary search tree. + * + * \param key_cmp A pointer to the function used to compare keys. + * \return An empty binary search tree. + * + * Worst-case complexity: constant, `O(1)`. + */ +upo_bst_t upo_bst_create(upo_bst_comparator_t key_cmp); + +/** + * \brief Destroys the given binary search tree together with data stored on it. + * + * \param tree The binary search tree to destroy. + * \param destroy_data Tells whether the previously allocated memory for keys + * and values stored in this binary search tree must be freed (value `1`) or + * not (value `0`). + * + * Memory deallocation (if requested) is performed by means of the `free()` + * standard C function. + * + * Worst-case complexity: linear in the number `n` of elements, `O(n)`. + */ +void upo_bst_destroy(upo_bst_t tree, int destroy_data); + +/** + * \brief Removes all elements from the given binary search tree and destroys + * all data stored on it. + * + * \param tree The binary search tree to clear. + * \param destroy_data Tells whether the previously allocated memory for keys + * and values stored in this binary search tree must be freed (value `1`) or + * not (value `0`). + * + * Memory deallocation (if requested) is performed by means of the `free()` + * standard C function. + * + * Worst-case complexity: linear in the number `n` of elements, `O(n)`. + */ +void upo_bst_clear(upo_bst_t tree, int destroy_data); + +/** + * \brief Returns the comparison function stored in the binary search tree. + * + * \param tree The binary search tree. + * \return The comparison function. + */ +upo_bst_comparator_t upo_bst_get_comparator(const upo_bst_t tree); + +/** + * \brief Tells if the given binary search tree is empty. + * + * \param tree The binary search tree. + * \return `1` if the binary search tree is empty or `0` otherwise. + * + * A binary search tree is empty if it doesn't contain any node. + * + * Worst-case complexity: constant, `O(1)`. + */ +int upo_bst_is_empty(const upo_bst_t tree); + +/** + * \brief Counts the number of nodes of the subtree rooted at the node of the + * binary search tree containing the given key and that are located at an + * even depth. + * + * \param tree The binary search tree. + * \param key The key for which this function must return the number of nodes of + * the subtree rooted at the associated node and located at an even depth. + * \return The number of nodes of the subtree rooted at the node containing the + * given key and located at an even depth, or `0` if the tree is empty or if + * the given key does not belong to the tree. + */ +size_t upo_bst_subtree_count_even(const upo_bst_t tree, const void* key); + + +#endif /* UPO_BST_H */ diff --git a/exam-sample_02/include/upo/hashtable.h b/exam-sample_02/include/upo/hashtable.h new file mode 100644 index 0000000..0d95aa4 --- /dev/null +++ b/exam-sample_02/include/upo/hashtable.h @@ -0,0 +1,353 @@ +/* vim: set tabstop=4 expandtab shiftwidth=4 softtabstop=4: */ + +/** + * \file upo/hashtable.h + * + * \brief The Hash Table (HT) abstract data type. + * + * Hash Tables are containers composed of unique keys (containing at most one of + * each key value) that associates values of another type with the keys. + * + * \author Marco Guazzone (marco.guazzone@uniupo.it) + * + * \copyright 2015 University of Piemonte Orientale, Computer Science Institute + * + * This file is part of UPOalglib. + * + * UPOalglib is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * UPOalglib is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with UPOalglib. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef UPO_HASHTABLE_H +#define UPO_HASHTABLE_H + + +#include <stddef.h> + + +/*** BEGIN of COMMON TYPES ***/ + + +/** \brief The type for hash functions. + * + * Declares the type for key hash functions that are used to map key + * space into the index space to use for indexing the hash table. + * A hash function takes two parameters: + * - The first parameter is a pointer to the key to hash. + * - The second parameter is the capacity of the hash table. + * A hash function returns a nonnegative number which represents a position + * (index) in the hash table. + */ +typedef size_t (*upo_ht_hasher_t)(const void*, size_t); + +/** + * \brief The type for key comparison functions. + * + * Declares the type for key comparison functions that are used to compare keys + * stored in the hash table. + * A comparison function takes two parameters: + * - The first parameter is a pointer to the first key to compare. + * - The second parameter is a pointer to the second key to compare. + * A comparison function returns a number less than, equal to, or greater than + * zero if the first key (first argument) is less than, equal to, or greater + * than the second key (second argument), respectively. + */ +typedef int (*upo_ht_comparator_t)(const void*, const void*); + + +/*** END of COMMON TYPES ***/ + + +/*** BEGIN of HASH TABLE with SEPARATE CHAINING ***/ + + +/** \brief Default capacity of hash tables with separate chaining. */ +#define UPO_HT_SEPCHAIN_DEFAULT_CAPACITY 997U + + +/** \brief Type for nodes of the list of collisions. */ +struct upo_ht_sepchain_list_node_s +{ + void *key; /**< Pointer to the user-provided key. */ + void *value; /**< Pointer to the value associated to the key. */ + struct upo_ht_sepchain_list_node_s *next; /**< Pointer to the next node in the list. */ +}; +/** \brief Alias for the type for nodes of the list of collisions. */ +typedef struct upo_ht_sepchain_list_node_s upo_ht_sepchain_list_node_t; + +/** \brief Type for slots of hash tables with separate chaining. */ +struct upo_ht_sepchain_slot_s +{ + upo_ht_sepchain_list_node_t *head; /**< Pointer to the head of the list of collisions. */ +}; +/** \brief Alias for the type for slots of hash tables with separate chaining. */ +typedef struct upo_ht_sepchain_slot_s upo_ht_sepchain_slot_t; + +/** \brief Type for hash tables with separate chaining. */ +struct upo_ht_sepchain_s +{ + upo_ht_sepchain_slot_t *slots; /**< The hash table as array of slots. */ + size_t capacity; /**< The capacity of the hash table. */ + size_t size; /**< The number of elements stored in the hash table. */ + upo_ht_hasher_t key_hash; /**< The key hash function. */ + upo_ht_comparator_t key_cmp; /**< The key comparison function. */ +}; + +/** \brief Type for hash tables with separate chaining. */ +typedef struct upo_ht_sepchain_s* upo_ht_sepchain_t; + + +/** + * \brief Creates a new empty hash table. + * + * \param m The initial capacity of the hash table. + * \param key_hash A pointer to the function used to hash keys. + * \param key_cmp A pointer to the function used to compare keys. + * \return An empty hash table. + * + * Worst-case complexity: linear in the capacity `m` of the hash table, `O(m)`. + */ +upo_ht_sepchain_t upo_ht_sepchain_create(size_t m, upo_ht_hasher_t key_hash, upo_ht_comparator_t key_cmp); + +/** + * \brief Destroys the given hash table. + * + * \param ht The hash table to destroy. + * \param destroy_data Tells whether the previously allocated memory for data + * stored in the hash table must be freed (value `1`) or not (value `0`). + * + * Memory deallocation (if requested) is performed by means of the `free()` + * standard C function. + * + * Worst-case complexity: linear in the capacity `m` of the hash table, `O(m)`. + */ +void upo_ht_sepchain_destroy(upo_ht_sepchain_t ht, int destroy_data); + +/** + * \brief Removes all key-value pairs from the given hash table. + * + * \param ht The hash table to clear. + * \param destroy_data Tells whether the previously allocated memory for data + * stored in the hash table must be freed (value `1`) or not (value `0`). + * + * Memory deallocation (if requested) is performed by means of the `free()` + * standard C function. + * + * Worst-case complexity: linear in the capacity `m` of the hash table, `O(m)`. + */ +void upo_ht_sepchain_clear(upo_ht_sepchain_t ht, int destroy_data); + +/** + * \brief Tells if the given hash table is empty. + * + * \param ht The hash table. + * \return `1` if the hash table is empty or `0` otherwise. + * + * A hash table is empty if it doesn't contain any node. + * + * Worst-case complexity: constant, `O(1)`. + */ +int upo_ht_sepchain_is_empty(const upo_ht_sepchain_t ht); + +/** + * \brief Returns the capacity of the hash table. + * + * \param ht The hash table. + * \return The total number of slots of the hash tables. + * + * Worst-case complexity: constant, `O(1)`. + */ +size_t upo_ht_sepchain_capacity(const upo_ht_sepchain_t ht); + +/** + * \brief Returns the size of the hash table. + * + * \param ht The hash table. + * \return The number of keys stored in the hash tables. + * + * Worst-case complexity: linear in the capacity `m` of the hash table, `O(m)`. + */ +size_t upo_ht_sepchain_size(const upo_ht_sepchain_t ht); + +/** + * \brief Returns the load factor of the hash table. + * + * \param ht The hash table. + * \return The load factor which is defined as the ratio between the number of + * stored keys (i.e., the keys) and the number of slots (i.e., the capacity). + * + * Worst-case complexity: constant, `O(1)`. + */ +double upo_ht_sepchain_load_factor(const upo_ht_sepchain_t ht); + +/** + * \brief Returns the key comparator function. + * + * \param ht The hash table. + * \return The key comparator function. + */ +upo_ht_comparator_t upo_ht_sepchain_get_comparator(const upo_ht_sepchain_t ht); + +/** + * \brief Returns the key hasher function. + * + * \param ht The hash table. + * \return The key hasher function. + */ +upo_ht_hasher_t upo_ht_sepchain_get_hasher(const upo_ht_sepchain_t ht); + +/** + * \brief Removes the value identified by the provided key in the given + * hash table. + * + * \param ht The hash table. + * \param key The key. + * \param destroy_data Tells whether the previously allocated memory for data, + * that is to be removed, must be freed (value `1`) or not (value `0`). + * + * Memory deallocation (if requested) is performed by means of the `free()` + * standard C function. + * + * Worst-case complexity: linear in the number `n` of elements, `O(n)`. + */ +void upo_ht_sepchain_odelete(upo_ht_sepchain_t ht, const void *key, int destroy_data); + + +/*** END of HASH TABLE with SEPARATE CHAINING ***/ + + +/*** BEGIN of HASH FUNCTIONS ***/ + + +/** + * \brief Hash function for integers that uses the division method. + * + * \param x The integer to be hashed. + * \param m The number of possible hash values. + * \return The hash value which is an integer number in \f$\{0,\ldots,m-1\}\f$. + * + * The division method is defined as: + * \f[ + * h(x) = x \bmod m + * \f] + * where: + * - \f$y \bmod z\f$ means the remainder of the division \f$y / z\f$. + * . + */ +size_t upo_ht_hash_int_div(const void *x, size_t m); + +/** + * \brief Hash function for integers that uses the multiplication method. + * + * \param x The integer to be hashed. + * \param a A multiplicative constant in the range of (0,1). + * \param m The number of possible hash values. + * \return The hash value which is an integer number in \f$\{0,\ldots,m-1\}\f$. + * + * The multiplication method is defined as: + * \f[ + * h(x) = m \lfloor a x \bmod 1 \rfloor + * \f] + * where: + * - \f$\lfloor y \rfloor\f$ means the floor of \f$y\f$, that is the greatest + * integer less than or equal to \f$y\f$. + * - \f$y \bmod z\f$ means the remainder of the division \f$y / z\f$. + * - \f$y \bmod 1\f$ is the fractional part of \f$y\f$, that is + * the result of \f$y - \lfloor y \rfloor\f$. + * . + */ +size_t upo_ht_hash_int_mult(const void *x, double a, size_t m); + +/** + * \brief Hash function for integers that uses the multiplication method and + * the value of the multiplicative constant as proposed by Knuth. + * + * \param x The integer to be hashed. + * \param m The number of possible hash values. + * \return The hash value which is an integer number in \f$\{0,\ldots,m-1\}\f$. + */ +size_t upo_ht_hash_int_mult_knuth(const void *x, size_t m); + +/** + * \brief Hash function for strings. + * + * \param s The string to be hashed. + * \param h0 The initial value for the hash value that is usually chosen + * randomly from a universal family mapping integer domain + * \f$\{0,\ldots,p-1\} \mapsto \{0,\ldots,m-1\}\f$. + * \param a A multiplicative factor such that \f$a \in \{0,\ldots,p-1\}\f$ which + * is usually uniformly random. + * \param m The number of possible hash values. + * \return The hash value which is an integer number in \f$\{0,\ldots,m-1\}\f$. + * + * The implemented hash function is the following: + * \f[ + * h(k) = h_0 \left( \big(\sum_{i=0}^{\ell-1} k_i\cdot a^i \big) \bmod m \right), + * \f] + * where: + * - \f$k=(k_0,\ldots,k_{\ell-1})\f$ is an array of characters of size \$\ell\$ + */ +size_t upo_ht_hash_str(const void *s, size_t h0, size_t a, size_t m); + +/** + * \brief The Bernstein's hash function `djb2`. + * + * This hash function was first reported by Daniel J. Bernstein in comp.lang.c on 1991. + * + * See: + * - https://groups.google.com/forum/#!msg/comp.lang.c/lSKWXiuNOAk/zstZ3SRhCjgJ + * - http://www.cse.yorku.ca/~oz/hash.html + * . + */ +size_t upo_ht_hash_str_djb2(const void *s, size_t m); + +/** + * \brief The Bernstein's hash function `djb2a`. + * + * This hash function is an alternative to the 'djb2' hash function that was + * first reported by Daniel J. Bernstein in comp.lang.c on 1991. + * Instead of using the sum operator it uses the XOR operator. + * + * See: + * - https://groups.google.com/forum/#!msg/comp.lang.c/lSKWXiuNOAk/zstZ3SRhCjgJ + * - http://www.cse.yorku.ca/~oz/hash.html + * . + */ +size_t upo_ht_hash_str_djb2a(const void *s, size_t m); + +/** + * \brief The Java's hash function `hashCode`. + * + * See: + * - https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#hashCode-- + * . + */ +size_t upo_ht_hash_str_java(const void *s, size_t m); + +/** + * \brief The Kernighan and Ritchie's hash function proposed in the second + * edition of their C book. + */ +size_t upo_ht_hash_str_kr2e(const void *s, size_t m); + +/** + * \brief The SGI STL's hash function `hash_fun`. + * + */ +size_t upo_ht_hash_str_sgistl(const void *s, size_t m); + + +/*** END of HASH FUNCTIONS ***/ + + +#endif /* UPO_HASHTABLE_H */ diff --git a/exam-sample_02/include/upo/test.h b/exam-sample_02/include/upo/test.h new file mode 100644 index 0000000..f373ab9 --- /dev/null +++ b/exam-sample_02/include/upo/test.h @@ -0,0 +1,43 @@ +/* vim: set tabstop=4 expandtab shiftwidth=4 softtabstop=4: */ + +/** + * \file upo/test/utility.h + * + * \brief Collection of useful functions for testing. + * + * \author Marco Guazzone (marco.guazzone@uniupo.it) + * + * \copyright 2015 University of Piemonte Orientale, Computer Science Institute + * + * This file is part of UPOalglib. + * + * UPOalglib is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * UPOalglib is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with UPOalglib. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef UPO_TEST_H +#define UPO_TEST_H + + +int upo_test_int_cmp(const void* a, const void* b); + +int upo_test_str_cmp(const void* a, const void* b); + +char* upo_test_int_to_string(const void *pval); + +char* upo_test_str_to_string(const void *pval); + +char* upo_test_array_to_string(const void *base, size_t nelem, size_t elem_sz, char* (*to_string)(const void*)); + + +#endif /* UPO_TEST_H */ diff --git a/exam-sample_02/lib/libupoalglib.a b/exam-sample_02/lib/libupoalglib.a new file mode 100644 index 0000000000000000000000000000000000000000..44a6ea57f9cd514063d4c67ef153a4bcd9e0ef85 GIT binary patch literal 49528 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 literal 0 HcmV?d00001 diff --git a/exam-sample_02/lib/libupoalglib.a-fedora b/exam-sample_02/lib/libupoalglib.a-fedora new file mode 100644 index 0000000000000000000000000000000000000000..44a6ea57f9cd514063d4c67ef153a4bcd9e0ef85 GIT binary patch literal 49528 zcmeHw3wTw<wg2Adu*nG_Bq2P)`=E%Z5E4KH1&m-IC<v%n6!Z|16B5nK<RpRx<r1ib z)LYO#w9Qp&U$)l=ZLJs4+CZ&f+iS5}rLDE;tyUCoOKoeZ_16FT&8)T0J}c+=xX=In zzB}KSv-kSVT5Hy<nLT^<>^&>v=Tx>-)y^9*HJX}AXP!NC+Kic{)6a=UOH5YqHyWKi zV+ISX9pE_5X^s>AWBR`-`Hu5n_4lzEj+6PXt+^?dh_@zUb&ZKwRYSAm1FeacQ~(@_ zrWoOMjq8(q)lF^d>f`BhpdpPwWlKxtMwL;Uh_%L>t7<Fj8e>&0@ybNp6cB`~$;y_d zjeYQ{`gmnaAGEGD7H?=y^kr|YyRonCs><fds=74X^-Y!4v6{-NL{r})*2l?XO%2VJ zEtQ$FYb#r8<Gv&)<LBzSb}`t;8rtd;X~EcajctkAlq_<DreoFDuA7z?tn7ncTiM<h zysl-M?-yefTCa6|U2CGgj{?G)n_7Hx{g!KP>x)%2H72N4TSbY_T;0aKE!fCawehO! zVofd8?6q~&GXwnrWUwEYY`^_MrL;SMG_7Q`Na-NNZk!tn90%7#aZ~b&4_@n~B_(vB z`@b`1(q&#+G6M%nYX{t1zGPv@b?K6~$#v#ANlH-1*>h_0yv&@IIYXTx&dQ3;S1LL; zAFJqW>#gW2r(^j^I`-1>1RYOy<<swpE@$?^yt{ky9zJ5Q2xABGx(Vw!<6!5JtG{bB zb-WRM4{f9o>ZkyxqVxHR&O^sw$x|X)LZU}0|0oJSRQ?V!D>^oxa1!fnf!lj-%G!t8 z9ryOVOR2N`4V%%m@{PO)50dE}o8NGfJRxH3EPv;CzmD>ET$EdNq@wP}>uYLiDh|9J zJ@9tuz{zni-Uyy_Za&&o{!T}aTXBb&Muzl~1-(vNLB*|eVUMxc{B&%7$GItL%15Po zD{eg-3?#bGXFQ&ToF@sTL;8AF94bF)<V-~)Am4==m<wCjNo2_}vgBAgO9(&dBqovw zJNQ^lMPB2<fI;w?G1?e(%o=noy+J9CA8VC572A6fgXNq}BG0DrS4Jz1zs3iQ4A__I zus-&!rH-+Wdg$JY&XxC8bS~XPT8J(`;ydq9`3d91L*=HL-w8{FiR&bBod7^mC!cgy zS9Fvga|!E(#B2X%GkPoX9xNx_2Z`xOg^R<Uiq03_Jwgf&6LC1u5IrP(6vC!!B+zC@ z(bX!tR#F2{_ch`@74DIWTbH|poDB4KV-OlFO_w5lN1ep!qzBjFF;cMK==FP+shll> zvW4x|fgw8YA)KsyvZC`x!bT<-He``iR4;Q;C+pHt-V6JBE6yw5o455(e|z^`U#WZK zN#|;&PLQnaGbf+=E-LOgD;q26P8>}%MJwy;o2uw08f}O-G_`Du)-<(5X*|b$`?PB3 zwBpip=%m$31?A|@n^|&l)cLLFIQ@)R#0+QyMTH!v*<3@yO-|^U;j`%wj%0xf_cMon zk+2&9?JWivvUzTQK;aOT;W+*Kc{JZ}ylVkP3}p0$?-<cekUhV16wb3Ep97N>_i%1> zAMIBfDJH&b0-S!+v!IEInc1JB^N7tk#}N6Jm}Q6}OUyPz)Dq_!Vv;4!Gen6c<``m@ zCFUBU%o1gWsIbHZhFETi`G#0!i3^7<B0JYwV&RabMATZM!dTsGiN%IUSmL6b%~XXA zmRLG?B@tUJaY^19BDPv$S>!U()?tYic~wO0u*8+Qoy4}w603(dQqCQgSTkZH5qm6g zwK3;jOI(w^h-CI!A~s+O5&JB$*4Wl#iFJ{iNx>7gk-V%CUm-qBfSrD44a&hWD>9!L zvLeVBhz5gQx#%ZA&n1G{>XN4kIyJnX5Z*#(5Cr;n4*DEHS*EcqveO{;yvv+(7s`q} zNvwG^+jbmxTNZkOq)+l4+U@=>jY|c9-EEV5h&{af-kX`8jVgzC?-6>DrSA}W)sIOw zynENpgPW@y_hTcE5*gZEHn=6;>bSS$puEuT+Crmz$3O^&cCWQ$CzGp&AQ!2KEgD?s zxVs80^Kw7e+@OeSFloLm51PZf_uXuD-JWml+ROB(3?15CL0m(@3NweHZsaypH!HH7 z&aGQ&QrxnKa3r^THeK4*4K-&%l+@YMY6l~WDl)jyaj(tBbr#xP54*1C8n2=P&L^I% z$UT&4iz!PfW;e>9<aY1ziz%CuQq1B)WN|SUv$twd%%y>1?kApbgnnpn`7#}BVIxus zGefZ{Y%UEfwoW5b>oh7KSzOqdV4bFLVab+QkHRQfZ=8~A9k9ld6PT<;?XM>;Yfyn1 z*o+wcoX00_cQ=(fywY(CPO)`gHGCZrrIuJexRSC8+1<5+*HPXOalTUoC2n?#;){I6 zP?{Z7nw_FFhwE#V4wTxH!UFfSL4`TtL8As0xP!Cuhm%)^IpIO)=A4%^J7+OfGCaY_ z$(ctSbbaU1DLH<kgN**1L8EaNGJr)2-SD8C94qY-kewS)Hj9J@B(>8pP)NCRM$nb- zx{C|JpF5s(PbI!VGXjF=j{sBNM5=Cnv3vdqvG4Q|iwj|PS<$EGkAQfA7mx~(%LbF0 zh*SnZVNfrCAvxrO!C7?W40WLoYKD2HhQmo)if~c-!ap;gtaB#QA1*n*KbbT91n-$X zNGCVqB6E7^%ys`dD3^ZCGX;$bZfi@GGqtU?Womuhx~c1{s-|w3H8VDI#*~(Lb!}y0 zN_|~p+lHyLr`9!A)wfm0Eh`gK*VQFj`yx{l8=Gm6GD=0vJ_OM~<~Xg1>gsq+aV;uf zIO&we4VqK5RV88z7cVI%fG)S>8A;SN5r|v2=Q`Q8=0t?ET`&L94lj3`S6Jf})Oe$| zdgE)naW!7iR?oe-)EoSV4sYN#&y94H5~G*B&5N{qLvQd-t8qg8-2NBQZz$pA(xG4f zRo)OB=UKAG8x86<`f>Y%oA`2o5MLgSbG_UWZ&-zw7dh+=ulMq5yvPe)cKf4VWVM%F z>kW(?yTO=Hcn}suws|@2Ufy;u5}E6BwR;0Y6Ng*2!D8J=l$h{_+e7YEUe3$j@blB? zf6EGvjI?<<RLhPIFK3&V`vRSLUYl2NmFI2sPQA*D?)M54UeQxt{vVMw<Oc85?cSO9 zd3g!4alMyI77twQ4R7~y@AHO`afMWHXq%Uf!+tLxhsab9R)spe0vztMnM=G=L4~XL zdmf#*tGq~f?DJm1eI98Ue4jUP9@Re-qP`Yeyezh^ttJ+4taf5e_0_Sanwr*l!l7GP ztUli8*kvCFY^{~;al_YIOREA=%-gWa5=)Sv6#~}{Ep>@_teKWBVm0-Z>suXK35d1c zXf&Xpb(O7l0U~8Ns=2Pcvfha`RJL3fZ)r8mG)b+tX4SOB<FJRsokf?dj4miGjm|Ef zUR)ZTRx+)mWJbxX=%h>I)zON|gvF;!J0m)!A<@<tpSwQZ7;mYoA`**xbLj$_LJ#m$ z)<>sM&z)OEnx@n&UtDgMEqsfTt69VpZ)tI+);2Z7r`9wzt*dOAnrLXA8sAXaFr~G! zp_!J%N~YoZbn2TL*GJ6{Jmasg^;tKI(VYD{ry2G2xnosrv<lZ$-`3FRSii%SxXPTi z#@4#^jZ`~YHEVI=_3;LHGl-F3b-b!Q;UvxWg<uL)S;smt({%7-vZ+ji#M&C$TI1Ez zlAcEk`jyaYdA0|nlw!<_-B4E@k5yMDDyj9k)#_<&$!V@O?Hg;ZtUlYJVQs2ec&T!1 zvy*{R2jh|y#f_-5sc^t((_PW+X3jwW!x<f$TTLluebF)}&7m^ZRaRZs)@*wq#;wL= z1+fa2bf4|H<ctRLY|<sET^Ax)NsYB9@H`g02F#UW{aRB;S5cE0Fr6D(V$Dshj>(|% zn`jvg&4B(u#yg7^EI2nhi8}Zh@7ud+e5E^<`K8;$jh8y^hJ1I_z^uqF8pKBvjz1(b zGq_+-{>MTKa{GtMiNog2vDtP?BKhqm+sNYC0?EvwBtP_PUw)I#cFcs%&;Pie-_7}Z zaP;#(=jT7h`DQvU`QcBv)&kB{2h5ZEIlspeO`jA_yYfbNA>6*wq%iJcX;RqS$ogi4 z9rM)MCnIbhLet>p87U2J9(mH>xqUDIVJ9yGZYG$0^1}9EDFvq{cLoRiBeO+JR)7mF z)6+8vPp7>s1HOp$Y^NiV=`(b^hW^s&iD$s;GvF;5@EZw-{SD|Cl;q*!lXMRJZ;bCj zCZ&I*zjXF|gK+TQ#d8;VMEpSp{%14bKg)p2{K_9qX;4mm<>C(|i<T^#f5DR2vV{vT zE5AH;`33Wrl*cgpN_k@g@#I+5V3u;6X1Yz$%Zti&Sg>zxrZu2MO>%haa})AyNgeoz z!cE`L)#E-d967Y!RMouE!4U5_H&eZla7E!M>m95QQyR(s2Tqe|AD_%P+>L3Y@RtVo zF}4XlGk^~b;7gUB@sx*jRe*mO(W2*z0X%5W!%C0vKN{c<+S3!jgZ8|n^h_|;(29A0 zKWNW6+~43IT#HifMFBi$=NiVf-zo$AK|5;#c+k$9lpb8~NL>N`pq(!U@Sr_Ycxcu3 zHw5req*v;7GviQ)cAr6iNZSJZLHj!cc+mc@C_SsK8t1_P|7gOb+~+gke+l4Y0{k-4 z4<L-52mK_gpuq9BmvhkPkp#yQ77}bm5_}@}1GF^~NM<$k8RpmW2k#!m0UWyKF+E4& zyI9!*g+I^bE>ZaB8DFLFnXD(K@PA_d8ih+cZdCYY=D$hd-(&qd75*sWcPV@^<M%53 z4%YuIg-d@psPKH&^CN|Sn&}r6ek%8m*A#w|%Y94XOPLOHzO?)OTyDO?>zIFx!WnkX zRQL+E=NyF}WBnH@{B%~dLgBYEevQJPWj)s^JjUg2Q20>Bw<}z(liL*jF{bZU_<YuL zpTd93^dkyyVfsmhmvg<IRrq(A?p63DT;G3H_?3*mt?)0f{w&Uy_HAH#h{DHky~ZnC z<fkfpJ@cQZa2YojDE!xK-?a+g#&ny)f5x<o6Jq~K#_v)58`z!)6h4m2eN5pOF@9L# zW0;oy1vWr3-+Eo~w{p2}E8Mq_^TqxLx!jQo{~_ax6i$nMCS9TMdZy!i6g$N~9SZlD zzK4%ukM#R*D1054`%8uYjqCY3<5I57UtQc_DT#i$4)YcM&#Y&m!dI~$RxmF5W!_w? z_(lH>3SZCqzpC)4vCeV6sc`%5&~YATT*}?f{6A6rQtrzNzlHg8F=?PAdcI;wXDs95 zpL^NPDGJBiDx?b)Udn!7ru1KA*`0q-{Oye2tN0oApA=z_%q5T~&mLmG@XP&3<56aS z*=)K&$`meku2uMUrne|u+I^40rN8wkT&`26xOHO#t#!~b(PEFaa@G>BuPjc)Hzb^5 zv-(rKuC>)EZfUZF$*qpBYg<p>Mb$JBk2$Ygx2`4LPHYfnsHL)TJuOfNF<R!1iwKqH z6w}vO4RKo7DsF5_#EWUcgx2zCX@`a4wY2n9*%0Si{QD145=EN?+Ys8y@Iy&2=z}+y zF!x1QE(?Nm9-)^jNJqF)2h%xZ@tlq%<I_Ys2hQCSSthmc^&zwzb@`Ji13Le`@}(pT zox#3Gq_cs`Uk4(P#D0M=Pt`Ud?`JIkCSO0ouX$%vMmql;<q32d7YP5Mjih|>AFd0n zlOX4ZxG*VQtTGkpTunS0gWPbQ;FN#}B+ZL?bvpZtPO(BF5Bo9S*Y;menAQo&MO?l- z#{omqy!C{oE5Cxv7eAqVtV-$f@#O(@ik)<7()Y|8cgNYOI+m0##~s9-PJS5*q=c8( z!6b5W+)bHs9^~7^@<9yen)l0$>HfQg<&P=_Qh$LzPbca8x0e04iy5IVpZ-K%{0e(? z*$`QUhiFQ2{ey%{wLJQSaxo!}GYJpplzwRs{;#e-o=elopJ4m<`jYlU%j5G<v$V}0 zNWR~<k<+G~Gt+(<{lUMDy!W!C5oP8y@NHzr8~7~onE5`kbLCNdO9mD?o-{}Eb>O&) zTg}qxemw5TcWr?W2F-_EZ9dne^jzNoe#~ga*O&MpFx^LD_%iH3Z#elu8a`G#QPGL7 z5b66fe5;pEj14~Sf6|A~#}52U7~h2*LZS3ITlq=*x!QT<$6D|uCaGIVRbOsC_^dco zh8~8`=z#YUUc~1|={$;a|C7Rea@xtxwm(uW=-b4}T`T`c*(Z}9eS$KdfgZ9IHXq5^ z^Ig6Yc>ZW-+jGW!dE1WI!pShyF>hNBXlVyNzJ>=&zmf3S8!-oJN)-9_c)2mW6JN)n zGG%0L`H7Cr&pC;4gb+$>zGXy~MN(+VGfngmN$6ry9ZI>RV0QV*yseeACTaNDnaRo; zk5LwVEXXBO9Y2ZhYuO*<Q0vVBhKp3vXRuUThrhk;lb@fO-|<GeA~p<svm)=zBX8yv ztUPgiBtC$A=Jk$Vw<7x>@PlvWt?HpXI4Q-l4Oz(UIX*OlME=qfZ{}TdxF&DXfq?m@ z(aWL%gDq0ze?DwY>}*5#r*9<vOXf~AD}M)>dSTH;;&XjA0~eJ-Eqcd(c&p;iq`dQp z-^rrrskVxpZTNaMSnNIN6~395Uw)z{?{`nt<V`)0_nDrK6YjR2w&4Vu=>(zWCj_P* z#e>5a(kr7P>9by+>x&t<&@H$31e&Y&J({Z*&DG_+Nlo---j(Il7Wrm?G8Y?=UUNo< z8iQNWnv;8uj}^W*^VS?NP=)asnY5*%H0iTsD|IcUo?#XlZ3lVUetOJZ*mrVC${5<Y zH2LLj7k_J>>V$_fIH6<nk$|hP=$5WiK<9boM_PQJK9Z5qUh3s1k54B1kK!X>>KqtQ zPv$-BROCI5uXv@~9HGyTsbBISN%_>~PZ8@0znTHRm`{P}T7G8#cq;sHk9;H-w$F~P zXYVY@QS5}_O!WpH&eGL0_1<HK$26CSjAvBIVj2pmen;s3;n}a0{c4u_)$C1E%|q{B z&2gwE{q?P8TCaRac68GZq22gAtuf2V=ZEQT-b1zA=ifa#HXnBKwpG#WgDQGhZZMbm zbVZTH&7F`$v3cR$XXvKU8@SgPIoufeu4?Wz$BqvnQEFu~gyL30?jRa1Y;HCrRe^ga zW#!YsSH8XH<|i%J99wn<uC_5&7`G_gQ=y1zMmO!(ZbxhIx9Z=)j8G;QM@jL~43i7G zS<$!TW;TISqlvWQoNBQ=pG0ZM9c698y_M^Wi{@xWXXyAqI-x;<=1Sl;?xZ@~FX74a z2BYuD`|KBiNAk9P12&sV*qgi=femfifGTI&pf}J4C;Vn)Idt-18=N#Yk#CIe`7X*g z`U?1-vS6vNlzjg*)suHsP?;IH+WhS(=xctR)&~1n=hBCkbe7+HVdv7lzMbf9$q|1U zx>=eFw_|fpfNOaMF5_VCm;OcpGcS;t)nW3P?ON&cskIO6&!P%EPDPL<b5R*9EVHUb z{*{0h_vekKhoh~@fz)%;s6SNx29&<`Q)o8*0t%>89eVf2=JK)guLyzn3V0N|coNwp z3PX-l1DTr?tPBy**GjW(qCcrPO8Z-GwRa<ojS0fadx2R6U7M+@bk)k%n536FHb3Mf z3aQCS2>q9Of}MnQY~E`#Xk!L4s8jp%LaMl(IGRf$Z~JIFw=?d{V5q%!P=m;P@GG?E zVpnn!SVBGLDDA*84Uv4*Fpcrrr>qa@N`w#TA;3=FiK5*(?Z&u1IW$6<&fm+n(vd0$ zyGaIHhDe*~+!o}^0PSjrIGS-B2#Vwxf(A2xn-DhB7&WF!$65zqqfg%U%d9i#-iSst z37=dgpXaKa>*5<@prhmGMlV^pWQhUjD+8Zqx%b{{QUMK@o82fk)Fo=8m&MI4$#`@D zc6eeN%6rSV);A?uqfIr@L~WeD-g`e~8+_{;qVu99P9=V$6DLM1qjRFAPHhPt8m!^( zU2bKxkv{B_g7JYG&guI*I<0G>O^me(zbIO9j8``J<O1G8dT#Wz`nCbiW%L20oT4)4 z4sfEAD2Kj3oEKf~OpZEp;NE%89P&6ZwoZ=HCu(hwX`Sa>%_~uk`QjpFgCrG7n`8Zi zFES_}P3CVc^)u;2=bLS&0ft~c)=(8~wv|@)<xkzk>F1v~-=6j^SpM47bAI>aug^b9 zYf@M%p;ZiAKMpTZ;nb!@W)5u6Lw2K27!++BD#O8U9O`Gc12IF$zTq%@;pu~GiO-8P z(r<sfa^6aRS?0&Qfc7Fg2#8qb3(QUl&+HiLzliV$eP&3Q<u<1%ye#rE5d)}cobZYq zoZB5K;Y$q>G2d#1FFWHml#%ZYjCc{~u|-@l8RuA|p+c{u58g#~^(i=qsTe~o^EIcR zq;tbODO?#z_{>#faL%Px4@6D4)VLw?tqC<l*HBK8CDxDVBqB-$j38NCz;&l~(RuET z^y5WNqu-F-c@?sou0nQ0R>*Fi3fa9^MzY@>Bc_lxdw%CAoO_WU8wFTXb#l#lKhw4$ zyWzrA<EU2}!HYU$k~cjIPG(|eHr~A1YIx@u!dAnZWe8ghZ?++#R>8T3m}H6b3{hf< zIflTN0kUkaA<8UKW{3()TwsXhmY8pdRhGDL*vHAvwU$^o<TfH|Em2{tZnnf?LnJJ5 zQO-kDg$<TiI`|GEwpiklye|{6)e_4hcaXLYORUJdmxvvfxH7kg*mhZB_3&>}&K;Im zGvaX~_E_R-W6r&nxF#DtaIYm|1JD=tSz@iRt;Z7UB2SQlCv21T&l-W7yjhX;&Ki_w zycD^G7^wSEMn0Mkb`_K%i%`5xX0`{Cr;pI7;eAec3+bCUN?DzQdI|DOV_RgWLF{># zImZg7<9@~+YkNK@$N9NE&|aV0sP_!1O@QN4d;~ySiiS2_=eT#eW}_MHA~GwQ?q^+d z>Cko@ena9o@(4V%mh`v<@JVR*DnDCZ#aa11?wK$kw0k+RVb1Ni7uz0>^K&sTpk#O7 z7<(>ur^6oXs50*qh<z?<8{WOw2bTULO<=G$OgI|R)x*2L=mR?~#~nU!zvb9-^HAE- zwbV5iGVKQ&iP8^{wrncGCch%{$qXc0kv4att;kwSZ*X&=GPHY*FMvrMl4ba)TZn6p zYHsOGLRSz=e`LW%Gg?wpV)s%0PYHxEreh3oa=%XJwjF1<p1GQhe#d!^kF+(6Mg-%x z8SYHmj;n@X>~v?i3o)!x@xFccuoN0@mYZ)Ij;k|Usz)O_UXnTP+gWDtWf^?LjO2E| zLnV$z&v|<ahBh?RXj9_b=Rg4MgfF)!f4-&fy?Lym-!TI?Io&ttGFA$M95IO9<%&UU zU`Xg>PrDszDOvxHke&wr+A6#rK^-Mc<r8vR7FA(`<Gw!Gx~O(^0}(UXAuRk#2H|!V ze&wuy@GEDh3ioCZ{w53eo)Hl4ot`TE^9;f#Sor5b;h!tvr&5H?l%DGCc3%~-b$;qh zTk<N@`KcMU<mKaNFW(Oez(egbj+*0#e1)tvS4cBuB(D(auIQ<zyCTPQ*P%}CS~|Cm ze<H<*q~pIq9B}*-!5TcFYVbgc@T-2SokKS{2tP1EYEWB3R54d!G;OncV74VHP`L*d zSfUJ-+Z(Lh*HbFDi1Y?3XQ~CvR4dQPMY*<GUrn(L?_!bM?oPJst5XB5`c<}NEeqeB zB0R&to_@o^cl$n}irhW@6=I-K7ZtgCuC2(bG@}(O|8$D-7Hb$;Hj`$v@Y$y)1uXmY zG^@|H?LuPF)dyy(U+CmQMby-DX8~qBlFZG92)BC^3c-l5^FliW)w00$p`F4_$E3jh zBCvgl2v`SiiJ;n&ZsrrW`y~<BGDifW$aFuNQg4F+?#`q8vN7qSXQv9ZXAme8f%e%V zU`@I{W#By(rBZUcuNQ&qdEBja#+#fKW{!r_f5i_aw|fxHy^T35iZN!=&DIW)D`qaD z{Lt<T{UNaj0+hzlZE7VC(a8aGhs|{CfO-|*T9dct@|65ovAtuh0&0z0<QpffZudoE z+@ca|T&*>3(JX6RHTSXcg~*n4HlMrQPePu$>G)FardE9Xh3GAG|6y_+`U2H_9D2&B z!);M(QO^k}cjM<to$imoOn)5a<f6E=dt;NEVZ+Idtl0V5FS#3*_9EKdu>F%eO0(>a z(#S;8o2@s=4xml4{yx)L)aE&Q*X%&M^ETJ+yd9J*n&xz}hc;jK&=$xZT5Nvxck<dj zw1xf-R&RDrpY5|lc*85@EiT07*rB|A)(3{MN*@?5+h>z|V~ysNZMh?OTdprP5^5F~ z&KQA0M)@|;mg7D)jn<oR$FMT9KN<34gVh8uj;;1NqUlSZeY@E0J3cix#qx~1dV|lk z)TVxVgQim<=hsC4M|brW7t03Usr1yIvUT^vZ1Tm@fqk3bXQyv6%k1`*jlVQ&r=^0x z#$T!uZ~Ub*Y@ox&UtHu~%EsUEt~Z>vnPRW&c5FWFpXeWX!Jc>n`bT~$n{f-)&<5RN zFQ?6mB)sgaXs_!U?2E-t-f)RG7>9&63Wxi=A{<&|Gwa}cyg`q8v@N%QgdQ_nc_XjT z)?F_@Qs`wTIz0EW^F2aFkd#YXXK_e)`L}KNvbTC?UgZtj=8Z{UA8cWpS4=yFw|PSz z^M=;G;uZYKD-0+0n_a}A@Sub@j6`X7@i-jr^G?Sh++eMuO|{sF>u&W1hlk!}iX8Z; zSG?bIcb9sTI*`>r0RhURgV+DcQg1?fnB-2|@0Enk8tk3E-#abxrsqCY>J6fL(B5cs z2oEUsygyo<NpBA9A318aQ$Jejd66Z->`?y*c1DLIHHtkNnmX7UUPBv<S9xw|c44VE z@DH>J`-M`kfOadVYqb86pBc?}d08mWyWhH}#Q2r=A)}?pIcT@g9J?#|NpB!TR@nxl z-OS5OBbk!O)`CBzEy&kzwlY(@K;!eam=C32%1J$j2T^CEj!FByQ#;16+q@xLy@^!) zsU6<Tgg23PU~lw>Qy=W`^8U#?1yxCSXXCKdi&|<74*R`<D@@;@>}fXJ;0d!Qo3e*r z;*EIJJ2O(`6>anKU+@ZONB5}J-kAHn(T`%&dttjbGU1(ipEv%K-mu50P0DO%{zFC! zhi~)7CcHx0=S{yQwg>L>qHW&vt;iTfCM|zYlZGtu25#_N>Wl+vQ@pngW(TfNYT?K$ z;c=0dDf>}ej#IB<m(b;v8=<x*FI|PpXZlm#xUF9P_r2k@Uco0R?>ANz{f5x>`l0iC z_%VC*=^Dp|^+^B79&ZAjxD*tCF4)H?ii8k@zwPCPYxmnN?BS93@h0}Q5ppD$xI0n! zfbc1IE%mY=^-iJ9^xI%%9$nN4Zv^dZpW{ux$~!lKZS-_?4=eGC_IZU{y~$QVISyOB zi|yfD9Oigu;*c;`H{}hz#LM66jl9Ym(&3d*PAHs6cw@ohmwyIPVY-CE1$1rOee@q> zhq!E0_QMcj_b)B<R@?3JcH1(q%=#;@Se=exxjIH$>3O@ozl)oL<i*UIvV?3DkRFr; zvWwVex3Rwm|G#P{ePjFvW3Q|+Cu{N^K^D`8Ym}IRjrg$G-y*I(gs^_8o9|P0$H$gm zT7LQESH>2uykx=Ui<eyzi-~1sHJw~zgDS>&t9JUOalfgs^W5LJuT4P|LTHWq(GLRJ z;<Uxw3GR@`mUIrifXEA`5ltJ(W_YdM?>G{bArP=Z_Mh9XklY`tb@YwUm?oHGAUtEz zDvlx0M<KoUpuU+FCe;$Yz(gXDm;i`C(08Xlt1!)iO|E!}!C^6z;R+C!!0+yTO0`i! zO>asQqaauS+TBFRgzDsmeH#}5mk!KuY_NvZcmPTZW<uD?51Br0_v?aKpr*#$bozx{ z3-uga<x(Rf2pc&zXVL-afZEx9I83l{JOSoOhAu_#qihpZ!n}ENYU-OR36!WC&Ga=s z8zHS`qB<D6tUFCBl9E82ht%)~Mtd!dX=0;a5fgc|rmlseK^U!OG_>Ix0?{vEp&1hW zU<<+5UgotHSo~NdsxfH5voT9$5VWx<Y}^U$H3>252fv_}M6?ghmnODons;?DD;Qxy zYe^djH95LdJIK`mP+rJ7hJbDxSjD)7NA?dNGU5Zpj4)5zeoTfE6O&;y&GP5)!;N{G zm;6wfAJah=Y|K)GpMT8H-^B7}T|@G(u@N7jznk-;I7<HNWd39Clm8;;o249)58ddO z{|@JywIRu0n$$m<R~a(p&*A(Q=n?r)gRg%L=bPm=$q!HU{kMtp&03!1*C)&G=6tgX zDfyv)@%2B(`DTez@~=(GzsULfQtbPtFaOT_$d3+L2W8Sf=Y8_myifin&Ns{ZVt=^H z_fI$HKbK<vk9_+d<9zcX$Cp1l1cuQh^CIW}JVpL_>mXaTKEH6u|3plYTq@V4UGRIj zO=L|D>q5YL7$3qG<Apo$UdGLbHiWHWTs9h*ufz$vo^jdpY+hRswv+J^_Lb-%m|iIQ z3w9v=^uHm-$rs34#PE<LD~5P~C_a%q9Pz<sI{c*!_$wLkH!|RF5)OOB4l`yFHh@e7 zE~}feY#Sv!ojs>9zwEt~HQ{-Te~sHQO1hEomJ9lKD!iWY?=vpT-8&dx9Jcai?4#4K zFuq#h2N{<b4`wVRe#96+xw5xaUO6E4MY?*O$bi4adJ1WU2}$026p-D}FMBuTO%3)| z13!zquDt$13<Ka-F>c00(zk?h1o}e~e#FoK{{;$fXS`YAw=#aW!oS4$(~Qfj%tsi% zhF-uRnK6!zKW2Oyy>vj5m(;Hkp3ZN-%YeU?0slAFUyp@sN@i@t38rPT92o2Sh*Uhi zv}7j5)#~%?L>V(?XUI7F><k$*XJyEkMKQM0l`-w?>3wEl93MWGHbzb?R@vGbZ%I%P z|GIi7T}+%l)3NvbKLaMRjTZ4|**YWr(<^@|)~6yg>HhEhX9G19#0)e2<i9rXA4&ob zSX?EUt&7n@|1bT&12r57sm4s6@uZe+ejogA1h_UR72AWktzsyWx!Ji2ml!h_D4Z`h zXCdRXmTo>B5dO;*zvy49aN%FCaPyvvuzJR|{`LTlxrOMFmwGfT&}<?ZgXh)&KfO8e z`ELv0_y9)q+!Mfq`oF`t=ua^HM1Vi2|ET~T)Gsj$P%pe2m2%h9{Q(I$=6r&;X24w- zLP_)Eev%HCSQVQ8qXB-r5S4OY%79C36zCZj;K!F)NDzbnA7i_3SGef^tilgKn9|*h zLqFzr!hgTw7ybCY3rWfq{vL(@z_K~t%b@>nivLBne*g@jr1cjlT<jmlxVHan#eX6D z_hN-hxgSxu)ax3BKV!{vsu;&1=(p<?zv$nraM8a_;o`SW#&HPh|B>RCdOa85KaFHW z|4RXUVgUb*(u4U7(w{TnXQGo)l6JYA`R6eXu?h4i<+dySces7GYMeeXN9t6#wC~>s z^auTbPtTCV9?>tcG<@8ufA>MfFMfU~gZ}R+e$oGo###SSh4&ik9OoAq^k2^NN%(CN z{fXbUF)sEGWIyjxxbS~Q;o`UMfc~K0zNYv^|HBFw{ohu&`0Zc@{pay~RoCm<4EUWH z@WUDKXX#@sB<K&`FJ56>{D$W#q}K!d!TZJU0(kI#QN{CT(KDI--=uKyPrJg;;(q>7 z#$jjB|DB3o^nXg>qQ6_=Gg<%VGw6Rv@s~6IfdKzBvPtwmr}!^t{$FL_|BK>}G5_BJ z{L=&ar{@qsN&G4IU3|KP1pfr>=?d`Apgghj?f{NUO77EN4Co1#Yd?5SmfOyD{!r-= z{1*zBm~*cN^at&fjR~+nIDZ(y6E=-kFfM+O*iK6W{6YKq@-nfSu*M^a*$s~8x^Hks z0Uyx}z)N5NC0Umd+@dy4B+lU$?&2ov4D)MaMCI{04kZB``X$!c*$R&{y+Gm9_<p}a z;Wu-;tWx*{w*P8{7qPKB6^>8Ck@nhy@1Mm?e_!E0Wj!w_{A#vG)>Fi9r*nh+Me$3_ zvHmP4{1Rhoq{3bH!$gJO$@WZF_=8-pGKEiOJC-W^R@Q%&!k=bbu0OF;KK%Qr;{Qjs z=aUM5n(g_V!m%3y=^lj_G5%GB-^%n}h5w56e@o#Lta|5w!l&{5^(P9Km|ee8__tX9 zF@@v**&s>37XRRXf*`%E_+{QNG5CaEu7_X@KU^=pERS_2B;l`M`->HR4fnTT3_s|J zu|F#m|5~<lrNX~tN^_ib3ZKq&lfw72epzD|J40+wr{cek?f<mGA7y*Kpz!%@&t8RN zJrL>J3jYP$BkPS~kHjQ=LGjOFdtO%fU)Y}CE4<zo>qzW8(f<OMo5M%J|BmIQUkkpD z?LSTNPhx%<|Ac=5`}2IoFY-$iF0tdTRQM}Q*C_lk_CrG9cE_CKY*F|v?4KP9|0UZm zF>%HI#f(dT5&Sso`H9kVnCVv){#T~|pm3RgzpHTRA30nO+zwM@U9yaEu}A3TivJeA zkv1v(0mio|JufnSyTS)^JAO{-k#*REivKR|Z_g?`#PrJw?_&NxDO|3@{@l(|-*)Cd zP2qQP|Fp3}?0p|B^8RKP^NT<6EjrR-rAPd5rNU2Vx=!h_8|mnu(<uH1_S;U4b9*0B zxWuG=R_T{@@NCv6_G5Pg(j>;kKVtv63crs1Q?B&L`uj%}zsw)H6n;Km7oSynJbvDI zMDaht?fR6$#m=89J>O$JuPc7M4?_Akg>PVg*=@1O`JTLQIG3NZ#6OGKo^r;;pYq<~ z2E{*^^>0=D^8Vu?#s4L4-|r}Xd5`jY#s7V-*E@<|-p4Fre~A6k&sQ)GahNFYFWVLW z{jC4*0{mz~c@OkW#ebabe_Zj)`=kln@3cL|jEg-o>0YY%FJ%4pU;QQ9OWtGcRQy-4 z|34Mb5Bq<~dY)DM;-6mx_@P4PC$B1gyK~xc-VE?Vzr43Q6&0nV>pO*Usc#Sad5Pl3 zdpe|#1o)v}-WP6G{6FOS?oj;l-ths&U&QT#HW_@&~X%KWb@{;$C(O8Go4A{+BD znQx6^9O7Wz$@~{6{zksOmMDICFWaK{Z{T*^sQBf*?_G+27yIXa#V`M};0FqSgzNjF z(sLz`BgYlLtY^NX_+`Ax<NK%h=ZkF5Fvi6{@;>`K#V__>tnlNk=L)5VTy4^gieH|0 zIu$O@JKt2eTo>OC=tq%z*gxzJ)6bd3l#4!qB=xcsT`zp1@hIcy9^6F?Ql@b6&sv2` zyKhmr^q)NnmwwozaOuyz3je+s#q}0D<@$;$T&~kHh0FM`R^c)(ZBe+4Z+jFj<7$t> zWqj^cxZD@SxnjTEU!q(;!R0<xrf|96tyQ?(H@7HU<_UWgF7uNfh0FY~SK%^`{l6H= zwqurY|J2)~xY;?^zT3mlD*TesGt-{U;_-Yik&xxv_xr|3z9qQ$CQ4aHfHd2>pp%Dd zKkI|a<NFlY#ofV|-^JyxRT(nw2;)4K7g~-dcoFZ#;GmU;cQ#?^{CBd<YTCtm;6IFo z+J6@jrrQLPKg8lFB~RI}d9lu?F~~iGm!y<R?7{!lyjVX>XaA1nRz&1sKc+I;{_6?T zIw9%er7NWqeE+djU*3AkNLT(oE+6k6kWfBuox1$ZgrR(~lTJ<g{RDe#lN%7@Vyhf? z5S~uH<}52Ph2`WRa&p|w@{%vd+gV;{If|UnU#1gas+pZTSYH13f$&THh5kI9r1Req z_Mfbyz<>GlC-UOgbY(;LF8%<+2KBU&DTbtxN1xEwF68%MQJ&HWm8t7rKs<`Y$ep~@ z9Q<`@OZDwP>sk{W9XV>!`^88uJ-f7Yn&JH5F_I6<;v^YSW(-M*ksOssmfwj|<}oms zXoM!3YC$lhoXs;K_YhAIap@>{oQWn(LEz~8P?>2Li!U!S$FxBMzk{~?U_~8*K@Jy% zD2ApeKVF{+Q0WIN9+N&;F~@yN#%fEIT5YwL<&(4xbNmx}y~|*c5B3n)vH6cS^dnWA z+;k}55(IG!(C<?wLKs4auYH{qX)7$Y`jLSV!Oj#)A)-@47X~8onkLKI2ZtTEEkeQS z{P?^GP<N8TXP%(&na4VpzD%JFk5Xtugq0)Mnog1BU>UI-*pFLBpMZVGr?DLunqYLB zk9IA6*+jJKBE21NM6PwpI}a@GGz#(TUeWPHzSO1Tjpc}uM<yI06ApJSeS%EbM<(=8 z6uzSrK(dD}FA21Gd>9o(d`||trNnQg2(kGsy(E<HBoIQA*bbN#$v);%=25g%*UH0G zMH9D>LjPI4bI3f~eh7=1IGvb|P~Hg}KhNZJY<|K?oMl1lpyPgd7@5<RXN<vkm@boy zp?(sGqR7!irEu!t2;Rqq_t?S-{7)&IB6)6*fPeWHb}j8$(pA2%Yv~ilJ6+T$)P5g9 zS(i{`Lo^&!JSbE2UNR$DCfV2}GO$o%Bl!AB@(J|^1W%npnvYTRLUd9(Qs7GJnFu@D z)z-_M2NNKIsO}+RN(LQ;R=*clQ1?YQuIQp})rGE10_ce(!FtdV{%BE_ViLtNCgH=z zq_!ekz626I_R`z$zWdtU#t4b;O6r$V>)Pmwo#pQ!TH;2o3Pok?qTsY(NUg_Kb6ukz z^Yf2i0+E|Ugo;cnvMec5bR5xIsZM6tJ8TDCBFR;DBs}KV%^$~&fPX!=Eh5*Spn8xu zeMO{!e2)0fZM|sl(~*r3v?g%sP||N)$ej@%<#9Z6zqHiGMO0`T1NP&7L1;aAj4Vy{ zSP2<IULpgQqc@UA^Q~!R<dCHQVAm(e6UQ$wPRlGs(y3BcLMjJ3Q>?y>`u8M%05VZ@ zd91veTqGm;5kyd@F*X7Ww|irvHI@1pqK29)^lQ>cw~mJSN4Pd%DPopez~WNC-X|ul zzWTe)>heo3U3Tf!(PV5%`$=-NGP<s=v9e`jv^9=@G99Iek#Q4Yl1iuaq2!3Wp*gWJ zI{&iEDLUk)DSiOS$x&zC0Ox#~@L;}0GbuBb!5E*CnlNZ{`gg@yoRe2e;v8pj5uI+O zKO1KeXOy#pej{em6h434XNkz}q#yI377fpjyhub2?ND>V7v|vHesU2mH$=o399}r| zCCbRR#3Dl!Ik^;H(btq8zBn?Fs%Tl38Wtul8M%gpBX-^vzH}7+e_l3tJrmB+k98P9 z;SvDx14cfqCN&%-(NqXw4&S69$e1Bv4lOY=`x;`l6{0YQAZ&#w%pr&(%Qo8(QA?a_ zh)I?>&k!Y+m}7`pmY8dZGE0;h!hVS2U0{giHfO#eR$1c0VR+}c))EVc6cABs2@Z2; z2@Z2;iHmX;lA#+cv2-y00qYh^T#`47h^>}b78y?3IxMjw?{p$|SmMguONnilB~}l| z+tNEMv1Y_vBKBC~YGcm5mbfMxy<)E=VgvBC&^}9Wm_tjfi!2}o$uNg_)1$&1_9q4} zf{c8$8|*45BXvOWV%R+UdXXuF^XV))HN2MzZ!*kbj3Cc6HXc@-tet~^*z+!PUI^UH zb5p`PbpWK~c0WVxct!!sg&-&Zk<cqp&Cu>L^IeZSOkx7Aq7pwvIr!Afao-vaDM=6W ziQA2jT=CHyag<xVtBP=exo>?0m!yQ<bKkli7Y3Ee%v&Kyh2ldwlRnPJk@$bY?%Nzx zupae>eKrWyt0~oMWD&O;pO9F^uTCr?cT*fjYsIUx*b2WK3>!$J@#7ws=zo@cW1Ou6 z4KuddhYBzlNJ8g8a=WjgXLnoRp_$<D3p_L*On$WwEwv<9`%v8)lUv5J8==P!@km(? zW(7#r4bKGK08Q4agDF<cH3G2e$G%kur&+6Nts4%`vu3Qd<sMvYNgG1YJs7uE*$9d5 z!8TY$O~p=sI1Aj8uHX~5yOd_BR^P*8FvR&jc=!yfp7lLE!;%%FA?ofkgDr*EbH*5Y zhrbLVAIiAh1L;m-RqrU~-pb^;==jucn7n8dal(O2Ux(%m?|w+=TWtQlLVwNX?-lxx z?fd3`9K#xabECEOlX(~|5q=JN?iZL`<@csDfm0e;?YJMONK|0PJ*q$CP`1RiM2*IR z)7|9Pw*xdKxBIh{TSU+6lzXb}zc$vHyQ$dLmm6-=Jm{1tqwc2IA`%bnzTDP+(?@MC zceYJ;+1%ykD}TqW9=665XMdu6?sor>R9XeqbGdMqh^54QJHwawn=cXL%dM6xcZFZM zSw8o9bhESiuNZ6l30LllN!Gw>?g{du+;I}V@CIMF{0#2WR#*9S5w>of<Ci?s7ygzn zJSUn`@|-h8*p4exa*!=)nXlk2U%`~Aa2|Qy_JpZ<tj~#p*&Us7MK%GW<aXQ3Z}eF& z66H7B=$V#WZgq_{6A069+yeKsL4`TtL8AsC#8*C5HT0hn&dmm88=#}QA&6T_RJVaT zs#~s&>h>QC=Vl_jnUHIX3sXXuA($JYzxhGe5X>zF7*^~`e7HVg*M{pTYehN^+X#vL zhG1@fMMJcb^gaRIbhx%LK{HaSF!ntnvyDs5lge{UH;VX{wrbQ>CZoI1AEuJQ6r4c^ z@!t}2$a#UF|4$;iVePR`EH{AvDN)=;yWZ$ONT{~F)n38<2-Y<05d=pXxZQ-Q8uqB< z=dbn(?@tNEMuFHk2wQf0<YEdYwZzM%0BhNQO2Xa{3dZF=aK3kThc_O9mTZiz5JE<U z`>&$kehCvgEeoO3A{}0S`wbKkEnHCSWmD)XiVBszgd&&qcw;9c8kQS6YY0Vsqnx1+ zAkJGZ)RdU0PT{}VKv}E2f%ka1?cQ0D$Gi~~bM7g!s}MkbWU5zC>*fBOG(YA|rN~#K zsFqLl$)XI3d6m62G@;O*P^lBBR1PaPtlb+DnmE`SNOoR~09*Il$Z8Qf$=~2jh-~l* zDHs|RHnPqu3Y|LGE7;?Ws`EzRbnF)p%56lOm;Y_gT~g`|An)(@@|SoMJG}W6o(zI> zy&>&%xWvToicr9^aSvFH6pXFbD~XIpAhUu9#jX-6vc?;DEwdMr2Vq-&2O{oK$gDxz zy;)nmK~&ZI5N6Ilcjr>rc-Q?<F|C@~8f|<T9nh*z&?<z!v3*y9v~WBV{KE+BL#50Z z2l6rheBr+*Zj~Qjs-<o{g$;d=h*BIV$`4hO5)#VB3i@zyo?;&`juRY{vI!Z04ZVc3 zgbj>j+{M9~Y&fG26ND)lYNl_bB@}`%HnF;f=6WYXfF&^59kn%ejn$U5I^LY1U`i6W z#}8tY8ZQZw2<GMY0TYI*wQU_1RH%8VhsEOU@kXmNU1%l_#pEk!YB2whqzRF?d=OfF zN@4&>u8GnU4AhkLhXh`NnQ1}-vGr^mRh8o~L4k>iBt^(Zb_u)Ww@xzHl3W;mpetM& znIbUxdh2QViHlDYl<5NpUGkd=6&6c^ag=ntBs7n`M(MvWw>47~q*fcp3NGQ$bz-C; zlZ`>mZ7imkPgNNLAf-r(?^5F-)yHdWz$6No<+L<4(bRU)f(7SBCsB;MGorJLrx%w- zr<F`ADVb3+D>~`Ycs2dAnS{lsOp_`12a1hkW}OmyCS-%}V1_w|X9{Lo>*rtO$F5n! z`DWfM`PbXfG?3rK`DRis`JpCXzMJ#Sj9>Cwlk$&ozNw7lS10pd<oqa(k{^hz^bY5n z$0f-R-Q<@)ny2pO@lo=_$Nbnmb2#5Txk`R$g)hH`^UZU#<ZnpYw~6zOosu7V!I$sm ze6t+k=hyl9k8%FP!TN>1Zt^D(_9Ew})UUiF9NK7Y;OeJ6K=gkiMi4y!(u9)@r*nDY z!Q&M0KhhCN9^~-K9C*E*)%ts4${3eDNwSu)g7G(KVFyY2NDZAs&rE*WGd?BkCdS`j zTpq0nrnOlA(GaAc{x`%9`XX72_t`pSiXC)-7}N0|&VWBnIAY64`<XF<uwO9#I31D9 z*g(gBr9bf3a?{IG{$B}CS1z#{{yoeu16l#&Pca@Pd8A2<zs9(<Bfecsr+-cce0~PJ zf^gV>CHE^cCQ!N9qYC^mt$ZQL(xOAR33`x8H_i)YW`p+DCQx!7B8c2ed`$wFn~QMi zsYxoHak7y%>P)6MGq~^Zol4Z}d4`?e`e9}u(Pw6tVUl5{C>+tGhU!@5;5Ru9B*J%r zsjYRlUDu>@G|MphlRdhVI3L3XnnrN>_6Yn~4-$MDog)FKr+gp(JAjn5{@X1~V~W*3 zgXuf?sP+Ft01xW_RRG5rDE8obL4uyq^e4FNq1O0H>W4@gugrkU9t7}@p+C_td%&e$ z>!6fUDF8~~kJ6v;-yguo2k@UWjsyHJ<3w+OKN{fo!bDJl{-B<50sIuolX6P~c+fu= zGcM(}LMf%?0sbh_qNi5z-w0+(^3AZWZ+AdX&>sBTDJ1X*?UB7^+Ma(7@JC5T?2$cm z!oQjFkY3Ng-^=3;$_=)o+_~_=Zx9r4GVh`295}uc`!wS?M-u!amQ2~REj-AQg=};$ z*eXfJY3K=#yCuvZ`X@t>l6(dx_(BUi3-~DbubChBcO=38&63V4J_`O9HtK4HKf?G< zg)e~vDSgf!eEoA7|CYkP!S)<f_*a?#M+*Nl)2}G}F4ps=!XIWm?<)Kz#&cOt>U%HK z!M)sQFS$=nQT*$<KS@kG(KC+ybDrYQVH)>GB;o%A>sh4m36{;o?hEoi%lyH;->_5m zNYpDm3z>hT!evjw#}qE(`0WZG$F$5R#QxV<|NV;pv+U>n3jY(+hZHX3*K-Q*WIy~$ z;o`5~DttNn|E~(4!uCWsU+n)g+dov{*D!vH!p~=WrYd|mmp4b@Uu0VL*h;x|%zuUA zmp#%|3YWdP%?e-2_H0)8T};cK5h=Hg%l(Yv|1IkgdxanKJfyEH{$}>);|hPC`G25r ziTQL?;rB89io%On{~r|o6t~N}3O|qWEIx|;``Dghg-dLR*$Tgt>B|-VUDgxan~m%4 z8*E35;vdiU-=y#j%)gUys0Ad?PoG!(ZA^b%;TN%<0}96r45Xt9pT_*ZW?agZ=ef5P zzmzNOApVr`^K`DC;9}2A#znvEJ(Jj5!v8eeQ>XalIbe&@KZ)tP6#p^4f6H^M=ofn) zS9+vgKT`N=rhlgN%X9GW6~E}o<MO3kxvz~?xcE(CSqT4S+^^;`zxYk|V8@l7Gr66b z6~EN~7R4`ieo5hCr^L(>d&JJ~Dt@t3_G}BktSh{v?2+fZKPf%Zj)gqI5<OziDGHZz zrzt#_`_F8~#cyKIa>Xxxh$(!ly<D6|g<r$^Z&G+A^Z&iVCC1QQ3cr!t>j8yJ|CE?q zV!y=Rcv|s4!2RzR3J<fLGJa@1r(nT|lKA-z=0AgR;g{$BWr|<?bB)5qKMe{O|7=pY z_@_(Z;-Akcypa9&WyZx$nU8&2@k_t@XNBJiK}tuJ9+}7dPVtMLcNH${Y5n=Vu-GH( zF=H4PKZ~Bp3h&45I7i`M;rcF6`ei*2{}~fW^h<xPQ@H5gsBnpczD4Pmb*9fKezE_{ z3K#tkD|{K-e?aM%=hmZ&U&fhN6)xreS>YdJzlE}`AH@HbqIiXji+^N1nXYj08(&7o zpShxhj`GZ<_5X%>G#+Ifmla=H1}Rgx_+hQW#s6CrF73WY;nLrF6fXU_SK)HKI53=& z*eTb0RN*pymML7u^R)_>`_2}H%YAc?!sY(nqi~sr^eSA&wg1~gYum5P9vuBa3cHPS zGw-2oKE<*~%p-it3R%9~-ggh}gFG(!1@Vb4AM;S?<YB>Q|Df`vBmtelYYIyCa{1dp z1d`Y<&^$WPHX&~YGcMq9LHITAY|6lpQzi_2+;N&c>E%HK{=--z<zsCU=_2~mI)UGS zhXzXW9BQe)yjXWhCx5f~-nj4HQq7C?oOJfrPPZk>dJ^o1E42OB6Q*@S@<A>i-@gZw z=B=m9bmiZ{<%^$C{)gE^`*|!<Q<9iumP*<xcI==GoJ&20Zw(fSDNV5l|5xPXxSMk1 z+-IVbPL>a1IM=*iW=y%s*(LHSL;Np#KTjv={I{3=C-(vP5BDsQ7r(+DRRkgQSw0py uDQ(~j6U~Y5&$T@IguZqOaw6mLOEKtFg%xSmM$^d`@q*=EtH%G;^8XJEP*(T= literal 0 HcmV?d00001 diff --git a/exam-sample_02/lib/libupoalglib.a-ubuntu b/exam-sample_02/lib/libupoalglib.a-ubuntu new file mode 100644 index 0000000000000000000000000000000000000000..7855963573abce868e6c5349e28c73726e6d98be GIT binary patch literal 50760 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 G`TsAY5{Ezl literal 0 HcmV?d00001 diff --git a/exam-sample_02/test/bst_subtree_count_even.c b/exam-sample_02/test/bst_subtree_count_even.c new file mode 100644 index 0000000..4a4e58f --- /dev/null +++ b/exam-sample_02/test/bst_subtree_count_even.c @@ -0,0 +1,361 @@ +/* vim: set tabstop=4 expandtab shiftwidth=4 softtabstop=4: */ + +/* + * Copyright 2016 University of Piemonte Orientale, Computer Science Institute + * + * This file is part of UPOalglib. + * + * UPOalglib is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * UPOalglib is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with UPOalglib. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <assert.h> +#include <limits.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <upo/bst.h> +#include <upo/test.h> + + +#define TEST_OK 1 +#define TEST_FAIL 0 + + +static int test_bst1(); +static int test_bst2(); +static int test_bst3(); +static int test_bst4(); +static int test_bst5(); +static int test_empty_bst(); +static int test_int_bst(int *keys, int *values, size_t n, int *no_keys, size_t m); +static int test_str_bst(char **keys, int *values, size_t n, char **no_keys, size_t m); +static int test_bst(void *keys, size_t key_sz, void *values, size_t value_sz, size_t n, void *no_keys, size_t m, upo_bst_comparator_t key_cmp, char* (*key_to_string)(const void*), char* (*value_to_string)(const void*)); +extern size_t upo_bst_check(const upo_bst_t x, const void *y); +extern void upo_bst_dump(const upo_bst_t, FILE *, char* (*)(const void*), int, char* (*)(const void*), int); +extern void* upo_bst_put(upo_bst_t, void*, void*); + + +int main() +{ + size_t n = 5; + size_t i = 0; + int ret = 0; + + printf("*** [DISCLAIMER] ***************************************************************\n"); + printf("The following tests are provided as is, to allow you to quickly test your code.\n"); + printf("However, passing these tests is a necessary but not sufficient condition,\n"); + printf("meaning that they do not guarantee that your code is correct.\n"); + printf("In fact, your code may be wrong even it passes all these tests\n"); + printf("********************************************************************************\n\n"); + + for (i = 1; i <= n; ++i) + { + switch (i) + { + case 1: + ret = test_bst1(); + break; + case 2: + ret = test_bst2(); + break; + case 3: + ret = test_bst3(); + break; + case 4: + ret = test_bst4(); + break; + case 5: + ret = test_bst5(); + break; + default: + fprintf(stderr, "ERROR: Unexpected test case number"); + abort(); + } + printf("Test BST #%lu => %s\n", i, (ret == TEST_OK) ? "[OK]" : "[FAIL]"); + } + + ret = test_empty_bst(); + printf("Test Empty BST => %s\n", (ret == TEST_OK) ? "[OK]" : "[FAIL]"); + + return 0; +} + + +int test_bst1() +{ + /* + * BST: + * 8 + * / \ + * 3 10 + * / \ \ + * 1 6 14 + * / \ / + * 4 7 13 + */ + + int keys[] = {8, 3, 1, 6, 4, 7, 10, 14, 13}; + int values[] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + int no_keys[] = {0, 2, 5, 9, 11, 16}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == sizeof keys/sizeof keys[0] ); + assert( n == sizeof values/sizeof values[0] ); + assert( m == sizeof no_keys/sizeof no_keys[0] ); + + return test_int_bst(keys, values, n, no_keys, m); +} + +int test_bst2() +{ + /* + * BST: + * 11 + * / \ + * 3 13 + * / \ \ + * 1 9 19 + * / / + * 7 15 + * / \ + * 5 17 + */ + + int keys[] = {11, 3, 1, 9, 7, 5, 13, 19, 15, 17}; + int values[] = {-11, -3, -1, -9, -7, -5, -13, -19, -15, -17}; + int no_keys[] = {0, 6, 10, 12, 14, 20}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == sizeof keys/sizeof keys[0] ); + assert( n == sizeof values/sizeof values[0] ); + assert( m == sizeof no_keys/sizeof no_keys[0] ); + + return test_int_bst(keys, values, n, no_keys, m); +} + +int test_bst3() +{ + /* + * BST: + * 11 + * / + * 9 + * / + * 7 + * / + * 5 + * / + * 3 + * / + * 1 + */ + + int keys[] = {11, 9, 7, 5, 3, 1}; + int values[] = {0, 1, 2, 3, 4, 5}; + int no_keys[] = {0, 2, 4, 6, 8, 10, 12}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == sizeof keys/sizeof keys[0] ); + assert( n == sizeof values/sizeof values[0] ); + assert( m == sizeof no_keys/sizeof no_keys[0] ); + + return test_int_bst(keys, values, n, no_keys, m); +} + +int test_bst4() +{ + /* + * BST: + * 1 + * \ + * 3 + * \ + * 5 + * \ + * 7 + * \ + * 9 + * \ + * 11 + */ + + int keys[] = {1, 3, 5, 7, 9, 11}; + int values[] = {0, 1, 2, 3, 4, 5}; + int no_keys[] = {0, 2, 4, 6, 8, 10, 12}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == sizeof keys/sizeof keys[0] ); + assert( n == sizeof values/sizeof values[0] ); + assert( m == sizeof no_keys/sizeof no_keys[0] ); + + return test_int_bst(keys, values, n, no_keys, m); +} + +int test_bst5() +{ + /* + * BST: + * "aae" + * / \ + * "aac" "aaj" + * / \ \ + * "aaa" "aad" "aak" + */ + + char *keys[] = {"aae", "aaj", "aac", "aad", "aaa", "aak"}; + int values[] = {-5, -10, -3, -4, -1, -11}; + char *no_keys[] = {"AAA", "xyz", "aaf"}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == sizeof keys/sizeof keys[0] ); + assert( n == sizeof values/sizeof values[0] ); + assert( m == sizeof no_keys/sizeof no_keys[0] ); + + return test_str_bst(keys, values, n, no_keys, m); +} + +int test_empty_bst() +{ + return test_int_bst(NULL, NULL, 0, NULL, 0); +} + +int test_int_bst(int *keys, int *values, size_t n, int *no_keys, size_t m) +{ + return test_bst(keys, sizeof keys[0], values, sizeof values[0], n, no_keys, m, upo_test_int_cmp, upo_test_int_to_string, upo_test_int_to_string); +} + +int test_str_bst(char **keys, int *values, size_t n, char **no_keys, size_t m) +{ + return test_bst(keys, sizeof keys[0], values, sizeof values[0], n, no_keys, m, upo_test_str_cmp, upo_test_str_to_string, upo_test_int_to_string); +} + +int test_bst(void *keys, size_t key_sz, void *values, size_t value_sz, size_t n, void *no_keys, size_t m, upo_bst_comparator_t key_cmp, char* (*key_to_string)(const void*), char* (*value_to_string)(const void*)) +{ + upo_bst_t bst = NULL; + unsigned char *pck = keys; + unsigned char *pcv = values; + unsigned char *pcnk = no_keys; + int ret = TEST_OK; + + /* Creates BST */ + + bst = upo_bst_create(key_cmp); + + assert( bst != NULL ); + + if (n > 0) + { + // Non-empty BST + + for (size_t i = 0; i < n; ++i) + { + upo_bst_put(bst, pck + i*key_sz, pcv + i*value_sz); + } + + // Keys + for (size_t i = 0; i < n && ret == TEST_OK; ++i) + { + void *pkey = NULL; + size_t count = 0; + size_t count_check = 0; + + pkey = malloc(key_sz); + if (pkey == NULL) + { + perror("[ERROR] Unable to allocate memory for key"); + abort(); + } + + memcpy(pkey, pck + i*key_sz, key_sz); + + count = upo_bst_subtree_count_even(bst, pkey); + + count_check = upo_bst_check(bst, pkey); + + if (count != count_check) + { + char *key_str = key_to_string(pkey); + fprintf(stderr, "[file: %s, line: %d] ERROR: Key: '%s' -> Expected count %lu, got %lu.\n", __FILE__, __LINE__, key_str, count_check, count); + free(key_str); + fprintf(stderr, "[file: %s, line: %d] <BST>:\n", __FILE__, __LINE__); + upo_bst_dump(bst, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d] </BST>:\n", __FILE__, __LINE__); + ret = TEST_FAIL; + } + + free(pkey); + } + + // No keys + for (size_t i = 0; i < m && ret == TEST_OK; ++i) + { + void *pkey = NULL; + size_t count = 0; + size_t count_check = 0; + + pkey = malloc(key_sz); + if (pkey == NULL) + { + perror("[ERROR] Unable to allocate memory for key"); + abort(); + } + + memcpy(pkey, pcnk + i*key_sz, key_sz); + + count = upo_bst_subtree_count_even(bst, pkey); + + count_check = upo_bst_check(bst, pkey); + + if (count != count_check) + { + char *key_str = key_to_string(pkey); + fprintf(stderr, "[file: %s, line: %d] ERROR: Key: '%s' -> Expected count '%lu', got %lu.\n", __FILE__, __LINE__, key_str, count_check, count); + free(key_str); + fprintf(stderr, "[file: %s, line: %d] <BST>:\n", __FILE__, __LINE__); + upo_bst_dump(bst, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d] </BST>:\n", __FILE__, __LINE__); + ret = TEST_FAIL; + } + + free(pkey); + } + } + else + { + // Empty BST + + int dummy_key = 0; + size_t count = 0; + + count = upo_bst_subtree_count_even(bst, &dummy_key); + + if (count != 0) + { + fprintf(stderr, "[file: %s, line: %d] ERROR: Empty BST -> Expected count 0, got %lu.\n", __FILE__, __LINE__, count); + ret = TEST_FAIL; + } + } + + /* Destroy */ + + upo_bst_destroy(bst, 0); + + return ret; +} diff --git a/exam-sample_02/test/ht_sepchain_odelete.c b/exam-sample_02/test/ht_sepchain_odelete.c new file mode 100644 index 0000000..d376204 --- /dev/null +++ b/exam-sample_02/test/ht_sepchain_odelete.c @@ -0,0 +1,506 @@ +/* vim: set tabstop=4 expandtab shiftwidth=4 softtabstop=4: */ + +/* + * Copyright 2015 University of Piemonte Orientale, Computer Science Institute + * + * This file is part of UPOalglib. + * + * UPOalglib is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * UPOalglib is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with UPOalglib. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <assert.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <upo/hashtable.h> +#include <upo/test.h> + + +#define TEST_OK 1 +#define TEST_FAIL 0 + + +static int test_ht1(); +static int test_ht2(); +static int test_ht3(); +static int test_ht4(); +static int test_ht5(); +static int test_ht6(); +static int test_empty_ht(); +static int test_int_ht(int *keys, int *values, size_t n, int *no_keys, size_t m); +static int test_str_ht(char **keys, int *values, size_t n, char **no_keys, size_t m); +static int test_ht(void *keys, size_t key_sz, void *values, size_t value_sz, size_t n, void *no_keys, size_t m, upo_ht_hasher_t key_hasher, upo_ht_comparator_t key_cmp, char* (*key_to_string)(const void*), char* (*value_to_string)(const void*)); +extern upo_ht_sepchain_list_node_t* upo_ht_sepchain_check_order(const upo_ht_sepchain_t ht); +extern int upo_ht_sepchain_contains(const upo_ht_sepchain_t ht, const void *key); +extern void upo_ht_sepchain_dump(const upo_ht_sepchain_t, FILE *, char* (*)(const void*), int, char* (*)(const void*), int); +extern void* upo_ht_sepchain_put(upo_ht_sepchain_t ht, void *key, void *value); + + +int main() +{ + size_t n = 6; + size_t i = 0; + int ret = 0; + + printf("*** [DISCLAIMER] ***************************************************************\n"); + printf("The following tests are provided as is, to allow you to quickly test your code.\n"); + printf("However, passing these tests is a necessary but not sufficient condition,\n"); + printf("meaning that they do not guarantee that your code is correct.\n"); + printf("In fact, your code may be wrong even it passes all these tests\n"); + printf("********************************************************************************\n\n"); + + for (i = 1; i <= n; ++i) + { + switch (i) + { + case 1: + ret = test_ht1(); + break; + case 2: + ret = test_ht2(); + break; + case 3: + ret = test_ht3(); + break; + case 4: + ret = test_ht4(); + break; + case 5: + ret = test_ht5(); + break; + case 6: + ret = test_ht6(); + break; + default: + fprintf(stderr, "ERROR: Unexpected test case number"); + abort(); + } + printf("Test HT #%zu => %s\n", i, (ret == TEST_OK) ? "[OK]" : "[FAIL]"); + } + + ret = test_empty_ht(); + printf("Test Empty HT => %s\n", (ret == TEST_OK) ? "[OK]" : "[FAIL]"); + + return 0; +} + + +int test_ht1() +{ + int keys[] = {0,1,2,3,4,5,6,7,8,9,1000,2000,3000,4000,5000,6000,7000,8000,9000}; + int values[] = {0,1,2,3,4,5,6,7,8,9,1000,2000,3000,4000,5000,6000,7000,8000,9000}; + int no_keys[] = {10,11,12,13,14,15,16,19,1010,2010,3010,4010,5010}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == (sizeof keys/sizeof keys[0]) ); + assert( n == (sizeof values/sizeof values[0]) ); + assert( m == (sizeof no_keys/sizeof no_keys[0]) ); + + return test_int_ht(keys, values, n, no_keys, m); +} + +int test_ht2() +{ + int keys[] = {0,10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800,900}; + int values[] = {0,1,2,3,4,5,6,7,8,9,1000,2000,3000,4000,5000,6000,7000,8000,9000}; + int no_keys[] = {1,11,21,31,41,51,61,71,81,91,101,201,301,401,501,601,701,801,901,1001,1101,1201,1301,1401,1501}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == (sizeof keys/sizeof keys[0]) ); + assert( n == (sizeof values/sizeof values[0]) ); + assert( m == (sizeof no_keys/sizeof no_keys[0]) ); + + return test_int_ht(keys, values, n, no_keys, m); +} + +int test_ht3() +{ + int keys[] = {0,1,2,3,4,10,11,12,13,14,1000,2000,3000,4000,5000,6000,7000,8000,9000}; + int values[] = {0,1,2,3,4,5,6,7,8,9,1000,2000,3000,4000,5000,6000,7000,8000,9000}; + int no_keys[] = {5,6,7,8,9,15,16,17,18,19,1500,1600,1700,1800,1900}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == (sizeof keys/sizeof keys[0]) ); + assert( n == (sizeof values/sizeof values[0]) ); + assert( m == (sizeof no_keys/sizeof no_keys[0]) ); + + return test_int_ht(keys, values, n, no_keys, m); +} + +int test_ht4() +{ + char *keys[] = {"AA","AB","AQ","Aa","Aq","Ba","Ca","Da","Ea","Fa","AAA", "Ab"}; + int values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + char *no_keys[] = {"xAA","xAB","xAQ","xAa","xAq","xBa","xCa","xDa","xEa","xFa","xAAA", "xAb", "yAA", "yAB"}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == (sizeof keys/sizeof keys[0]) ); + assert( n == (sizeof values/sizeof values[0]) ); + assert( m == (sizeof no_keys/sizeof no_keys[0]) ); + + return test_str_ht(keys, values, n, no_keys, m); +} + +int test_ht5() +{ + char *keys[] = {"aaa","aba","aca","ada","aea","afa","aga","aha","aia","aja"}; + int values[] = {0,1,2,3,4,5,6,7,8,9}; + char *no_keys[] = {"a1a","a2a","a3a","a4a","a5a","a6a","a7a","a9a","a9a","a10a"}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == (sizeof keys/sizeof keys[0]) ); + assert( n == (sizeof values/sizeof values[0]) ); + assert( m == (sizeof no_keys/sizeof no_keys[0]) ); + + return test_str_ht(keys, values, n, no_keys, m); +} + +int test_ht6() +{ + char *keys[] = {"aaa","aab","aac","aad","aba","abb","abc","abd","abe","abf"}; + int values[] = {0,1,2,3,4,5,6,7,8,9}; + char *no_keys[] = {"aax","abx","acx","adx","aex","afx"}; + size_t n = sizeof keys/sizeof keys[0]; + size_t m = sizeof no_keys/sizeof no_keys[0]; + + assert( n == (sizeof keys/sizeof keys[0]) ); + assert( n == (sizeof values/sizeof values[0]) ); + assert( m == (sizeof no_keys/sizeof no_keys[0]) ); + + return test_str_ht(keys, values, n, no_keys, m); +} + +int test_empty_ht() +{ + int dummy1 = 0; + int dummy2 = 1; + + return test_int_ht(&dummy1, &dummy1, 0, &dummy2, 0); +} + +int test_int_ht(int *keys, int *values, size_t n, int *no_keys, size_t m) +{ + assert( keys ); + assert( values ); + assert( no_keys ); + + return test_ht(keys, sizeof keys[0], values, sizeof values[0], n, no_keys, m, upo_ht_hash_int_div, upo_test_int_cmp, upo_test_int_to_string, upo_test_int_to_string); +} + +int test_str_ht(char **keys, int *values, size_t n, char **no_keys, size_t m) +{ + assert( keys ); + assert( values ); + assert( no_keys ); + + return test_ht(keys, sizeof keys[0], values, sizeof values[0], n, no_keys, m, upo_ht_hash_str_kr2e, upo_test_str_cmp, upo_test_str_to_string, upo_test_int_to_string); +} + +int test_ht(void *keys, size_t key_sz, void *values, size_t value_sz, size_t n, void *no_keys, size_t m, upo_ht_hasher_t key_hasher, upo_ht_comparator_t key_cmp, char* (*key_to_string)(const void*), char* (*value_to_string)(const void*)) +{ + upo_ht_sepchain_t ht = NULL; + size_t base_cap = 3; + size_t caps[4]; + size_t nc; + unsigned char *pck = keys; + unsigned char *pcv = values; + unsigned char *pcnk = no_keys; + int ret = TEST_OK; + +/* + caps[0] = 2*n+UPO_HT_SEPCHAIN_DEFAULT_CAPACITY; + caps[1] = n*UPO_HT_SEPCHAIN_DEFAULT_CAPACITY; + caps[2] = UPO_HT_SEPCHAIN_DEFAULT_CAPACITY; +*/ + caps[0] = 3*n+base_cap; + caps[1] = 2*n+base_cap; + caps[2] = n*base_cap; + caps[3] = base_cap; + nc = sizeof caps/sizeof caps[0]; + + for (size_t k = 0; k < nc && ret == TEST_OK; ++k) + { + ht = upo_ht_sepchain_create(caps[k], key_hasher, key_cmp); + + assert( ht != NULL ); + + if (n > 0) + { + // Non-empty HT + + // Populate the HT + for (size_t i = 0; i < n; ++i) + { + upo_ht_sepchain_put(ht, pck + i*key_sz, pcv + i*value_sz); + } + + // Remove from HT + for (size_t i = 0; i < n && ret == TEST_OK; ++i) + { + size_t old_size = 0; + size_t new_size = 0; + int found = 0; + + void *key = NULL; + + key = malloc(key_sz); + if (key == NULL) + { + perror("Unable to allocate memory for key"); + abort(); + } + + memcpy(key, pck + i*key_sz, key_sz); + + old_size = upo_ht_sepchain_size(ht); + + upo_ht_sepchain_odelete(ht, key, 0); + + new_size = upo_ht_sepchain_size(ht); + + found = upo_ht_sepchain_contains(ht, key); + + if (found == 1) + { + char *key_str = key_to_string(key); + fprintf(stderr, "[file: %s, line: %d] ERROR: HT Alternative #: %lu, Key: '%s' -> Found key after its deletion.\n", __FILE__, __LINE__, k, key_str); + fprintf(stderr, "[file: %s, line: %d]: <HT>\n", __FILE__, __LINE__); + upo_ht_sepchain_dump(ht, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d]: </HT>\n", __FILE__, __LINE__); + fflush(stderr); + free(key_str); + ret = TEST_FAIL; + } + else if (new_size != (old_size-1)) + { + char *key_str = key_to_string(key); + fprintf(stderr, "[file: %s, line: %d] ERROR: HT Alternative #: %lu, Key: '%s' -> Expected size: %lu, got %lu.\n", __FILE__, __LINE__, k, key_str, (old_size-1), new_size); + fprintf(stderr, "[file: %s, line: %d]: <HT>\n", __FILE__, __LINE__); + upo_ht_sepchain_dump(ht, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d]: </HT>\n", __FILE__, __LINE__); + fflush(stderr); + free(key_str); + ret = TEST_FAIL; + } + + free(key); + + // Check order of stored values + + upo_ht_sepchain_list_node_t *node = upo_ht_sepchain_check_order(ht); + if (node != NULL) + { + char *key_str1 = key_to_string(node->key); + char *key_str2 = key_to_string(node->next->key); + fprintf(stderr, "[file: %s, line: %d] ERROR: HT Alternative #: %zu, Keys: '%s' and '%s' are out of order.\n", __FILE__, __LINE__, k, key_str1, key_str2); + free(key_str1); + free(key_str2); + fprintf(stderr, "[file: %s, line: %d]: <HT>\n", __FILE__, __LINE__); + upo_ht_sepchain_dump(ht, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d]: </HT>\n", __FILE__, __LINE__); + fflush(stderr); + ret = TEST_FAIL; + } + } + + upo_ht_sepchain_clear(ht, 0); + + // Now for each key to be removed, fill the HT with all keys, remove the given key and then check that the other keys are still present in the HT + + for (size_t j = 0; j < n && ret == TEST_OK; ++j) + { + // Populate the HT + for (size_t i = 0; i < n && ret == TEST_OK; ++i) + { + upo_ht_sepchain_put(ht, pck + i*key_sz, pcv + i*value_sz); + } + + // Remove from the HT + + void *key = NULL; + + key = malloc(key_sz); + if (key == NULL) + { + perror("Unable to allocate memory for key"); + abort(); + } + + memcpy(key, pck + j*key_sz, key_sz); + + size_t old_size = 0; + size_t new_size = 0; + int found = 0; + + old_size = upo_ht_sepchain_size(ht); + + upo_ht_sepchain_odelete(ht, key, 0); + + new_size = upo_ht_sepchain_size(ht); + + found = upo_ht_sepchain_contains(ht, key); + + if (found == 1) + { + char *key_str = key_to_string(key); + fprintf(stderr, "[file: %s, line: %d] ERROR: HT Alternative #: %lu, Key: '%s' -> Found key after its deletion.\n", __FILE__, __LINE__, k, key_str); + fprintf(stderr, "[file: %s, line: %d]: <HT>\n", __FILE__, __LINE__); + upo_ht_sepchain_dump(ht, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d]: </HT>\n", __FILE__, __LINE__); + fflush(stderr); + free(key_str); + ret = TEST_FAIL; + } + else if (new_size != (old_size-1)) + { + char *key_str = key_to_string(key); + fprintf(stderr, "[file: %s, line: %d] ERROR: HT Alternative #: %lu, Key: '%s' -> Expected size: %lu, got %lu.\n", __FILE__, __LINE__, k, key_str, (old_size-1), new_size); + fprintf(stderr, "[file: %s, line: %d]: <HT>\n", __FILE__, __LINE__); + upo_ht_sepchain_dump(ht, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d]: </HT>\n", __FILE__, __LINE__); + fflush(stderr); + free(key_str); + ret = TEST_FAIL; + } + + for (size_t i = 0; i < n && ret == TEST_OK; ++i) + { + if (i == j) + { + // Skip the remove key + continue; + } + + found = upo_ht_sepchain_contains(ht, pck + i*key_sz); + + if (found == 0) + { + ret = TEST_FAIL; + char *key_str = key_to_string(key); + char *key2_str = key_to_string(pck + i*key_sz); + fprintf(stderr, "[file: %s, line: %d] ERROR: HT Alternative #: %lu, Key: '%s' -> Key '%s' not found after the deletion of another key.\n", __FILE__, __LINE__, k, key_str, key2_str); + fprintf(stderr, "[file: %s, line: %d]: <HT>\n", __FILE__, __LINE__); + upo_ht_sepchain_dump(ht, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d]: </HT>\n", __FILE__, __LINE__); + fflush(stderr); + free(key_str); + free(key2_str); + ret = TEST_FAIL; + } + } + + /* Clean-up */ + free(key); + + // Clear the HT + upo_ht_sepchain_clear(ht, 0); + } + + // Now populate again the HT and try to remove a key not stored in it. + + // Populate the HT + for (size_t i = 0; i < n; ++i) + { + upo_ht_sepchain_put(ht, pck + i*key_sz, pcv + i*value_sz); + } + + // Remove from HT + for (size_t i = 0; i < m && ret == TEST_OK; ++i) + { + size_t old_size = 0; + size_t new_size = 0; + int found = 0; + + // Use a different pointer for key to catch comparison-by-pointers issues + + void *key = NULL; + + key = malloc(key_sz); + if (key == NULL) + { + perror("Unable to allocate memory for key"); + abort(); + } + + memcpy(key, pcnk + i*key_sz, key_sz); + + old_size = upo_ht_sepchain_size(ht); + + upo_ht_sepchain_odelete(ht, key, 0); + + new_size = upo_ht_sepchain_size(ht); + + found = upo_ht_sepchain_contains(ht, key); + + if (found == 1) + { + char *key_str = key_to_string(key); + fprintf(stderr, "[file: %s, line: %d] ERROR: HT Alternative #: %lu, Key: '%s' -> Found key not belonging to the HT.\n", __FILE__, __LINE__, k, key_str); + fprintf(stderr, "[file: %s, line: %d]: <HT>\n", __FILE__, __LINE__); + upo_ht_sepchain_dump(ht, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d]: </HT>\n", __FILE__, __LINE__); + fflush(stderr); + free(key_str); + ret = TEST_FAIL; + } + else if (new_size != old_size) + { + char *key_str = key_to_string(key); + fprintf(stderr, "[file: %s, line: %d] ERROR: HT Alternative #: %lu, Key: '%s' -> Expected size: %lu, got %lu.\n", __FILE__, __LINE__, k, key_str, old_size, new_size); + fprintf(stderr, "[file: %s, line: %d]: <HT>\n", __FILE__, __LINE__); + upo_ht_sepchain_dump(ht, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d]: </HT>\n", __FILE__, __LINE__); + fflush(stderr); + free(key_str); + ret = TEST_FAIL; + } + + free(key); + + // Check order of stored values + + upo_ht_sepchain_list_node_t *node = upo_ht_sepchain_check_order(ht); + if (node != NULL) + { + char *key_str1 = key_to_string(node->key); + char *key_str2 = key_to_string(node->next->key); + fprintf(stderr, "[file: %s, line: %d] ERROR: HT Alternative #: %zu, Keys: '%s' and '%s' are out of order.\n", __FILE__, __LINE__, k, key_str1, key_str2); + free(key_str1); + free(key_str2); + fprintf(stderr, "[file: %s, line: %d]: <HT>\n", __FILE__, __LINE__); + upo_ht_sepchain_dump(ht, stderr, key_to_string, 1, value_to_string, 1); + fprintf(stderr, "[file: %s, line: %d]: </HT>\n", __FILE__, __LINE__); + fflush(stderr); + ret = TEST_FAIL; + } + } + + upo_ht_sepchain_clear(ht, 0); + } + else + { + // Empty HT: no test + } + + upo_ht_sepchain_destroy(ht, 0); + } + + return ret; +} -- GitLab