/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* quote_removal.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/28 13:46:56 by khais #+# #+# */ /* Updated: 2025/03/07 11:24:30 by khais ### ########.fr */ /* */ /* ************************************************************************** */ #include "../src/parser/wordlist/wordlist.h" #include "../src/parser/wordsplit/wordsplit.h" #include "../src/parser/remove_quotes/remove_quotes.h" #include "testutil.h" #include static t_worddesc *create_single_word(char *str) { t_wordlist *words = minishell_wordsplit(str); assert(wordlist_get(words, 0) != NULL); assert(wordlist_get(words, 1) == NULL); t_worddesc *word = wordlist_pop(&words); return (word); } static void test_quote_removal_no_quotes_single_word(void) { t_worddesc *word = create_single_word("word"); t_worddesc *got_word = remove_quotes(word); assert_strequal("word", got_word->word); assert(got_word->marker == NULL); worddesc_destroy(word); worddesc_destroy(got_word); } static void test_quote_removal_null(void) { t_worddesc *word = NULL; t_worddesc *got_word = remove_quotes(word); assert(got_word == NULL); } static void test_quote_removal_single_quotes(void) { t_worddesc *word = create_single_word("'word'"); t_worddesc *got_word = remove_quotes(word); assert_strequal("word", got_word->word); assert(got_word->marker == NULL); worddesc_destroy(word); worddesc_destroy(got_word); } static void test_quote_removal_double_quotes(void) { t_worddesc *word = create_single_word("\"word\""); t_worddesc *got_word = remove_quotes(word); assert_strequal("word", got_word->word); assert(got_word->marker == NULL); worddesc_destroy(word); worddesc_destroy(got_word); } static void test_quote_removal_mixed_single_in_double(void) { t_worddesc *word = create_single_word("\"'word'\""); t_worddesc *got_word = remove_quotes(word); assert_strequal("'word'", got_word->word); assert(got_word->marker == NULL); worddesc_destroy(word); worddesc_destroy(got_word); } static void test_quote_removal_mixed_double_in_single(void) { t_worddesc *word = create_single_word("'\"word\"'"); t_worddesc *got_word = remove_quotes(word); assert_strequal("\"word\"", got_word->word); assert(got_word->marker == NULL); worddesc_destroy(word); worddesc_destroy(got_word); } static void test_quote_removal_middle_of_word(void) { t_worddesc *word = create_single_word("var='VALUE'here"); t_worddesc *got_word = remove_quotes(word); assert_strequal("var=VALUEhere", got_word->word); assert(got_word->marker == NULL); worddesc_destroy(word); worddesc_destroy(got_word); } static void test_quote_removal_nested_middle_of_word(void) { t_worddesc *word = create_single_word("var=\"'VALUE'here\""); t_worddesc *got_word = remove_quotes(word); assert_strequal("var='VALUE'here", got_word->word); assert(got_word->marker == NULL); worddesc_destroy(word); worddesc_destroy(got_word); } int main(void) { test_quote_removal_no_quotes_single_word(); test_quote_removal_null(); test_quote_removal_single_quotes(); test_quote_removal_double_quotes(); test_quote_removal_mixed_single_in_double(); test_quote_removal_mixed_double_in_single(); test_quote_removal_middle_of_word(); test_quote_removal_nested_middle_of_word(); return (0); }