From 3cff6342afb791ade90b53c53ed3281bc53be5f9 Mon Sep 17 00:00:00 2001 From: rask24 <70057885+rask24@users.noreply.github.com> Date: Wed, 7 Feb 2024 16:12:23 +0900 Subject: [PATCH] sort prep (#18) * implement large sort * add visualizer push-swap-pain * implement operate_rb * implement stack_size * implement all oparations * fix filename * refactor witch t_content * update test * format --- Makefile | 6 +- include/push_swap.h | 70 +++++++++++++--------- src/check_args.c | 5 +- src/generate_stack.c | 14 ++--- src/main.c | 7 ++- src/sort/large_sort.c | 26 +++++++++ src/sort/micro_sort.c | 2 +- src/sort/nano_sort.c | 15 ++--- src/sort/sort.c | 2 +- src/stack_operations/ft_lst_before.c | 2 +- src/stack_operations/push.c | 2 +- src/stack_operations/reverse_rotate.c | 46 +++++++++++++++ src/stack_operations/rotate.c | 29 ++++----- src/stack_operations/swap.c | 9 ++- src/utils/clear_stack.c | 2 +- src/utils/exit_with_error.c | 2 +- src/utils/first_content.c | 4 +- src/utils/second_content.c | 4 +- src/utils/stack_size.c | 18 ++++++ src/utils/third_content.c | 18 ++++++ test/test_sort.cpp | 84 ++++++++++++++++++++++++++- 21 files changed, 282 insertions(+), 85 deletions(-) create mode 100644 src/sort/large_sort.c create mode 100644 src/stack_operations/reverse_rotate.c create mode 100644 src/utils/stack_size.c create mode 100644 src/utils/third_content.c diff --git a/Makefile b/Makefile index 42951ea..b74a0e0 100644 --- a/Makefile +++ b/Makefile @@ -19,14 +19,18 @@ SRC = $(SRC_DIR)/main.c \ $(SRC_DIR)/sort/sort.c \ $(SRC_DIR)/sort/micro_sort.c \ $(SRC_DIR)/sort/nano_sort.c \ + $(SRC_DIR)/sort/large_sort.c \ $(SRC_DIR)/stack_operations/push.c \ $(SRC_DIR)/stack_operations/swap.c \ $(SRC_DIR)/stack_operations/rotate.c \ + $(SRC_DIR)/stack_operations/reverse_rotate.c \ $(SRC_DIR)/stack_operations/ft_lst_before.c \ $(SRC_DIR)/utils/first_content.c \ $(SRC_DIR)/utils/second_content.c \ + $(SRC_DIR)/utils/third_content.c \ $(SRC_DIR)/utils/exit_with_error.c \ - $(SRC_DIR)/utils/clear_stack.c + $(SRC_DIR)/utils/clear_stack.c \ + $(SRC_DIR)/utils/stack_size.c OBJ = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRC)) DEP = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.d, $(SRC)) OBJ_FILTER_MAIN = $(filter-out $(BUILD_DIR)/main.o, $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRC))) diff --git a/include/push_swap.h b/include/push_swap.h index e6e5f70..d7d6079 100644 --- a/include/push_swap.h +++ b/include/push_swap.h @@ -6,48 +6,60 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/10 12:37:54 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:51:40 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:04:00 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef PUSH_SWAP_H # define PUSH_SWAP_H +# include "../libft/libft.h" # include # include # include # include -// TODO: delete -# include +typedef t_list t_stack; +typedef struct s_content +{ + int index; + int delta_a; + int delta_b; + int target; +} t_content; -# include "../libft/libft.h" +int check_args(int argc, char **argv); -typedef t_list t_stack; +t_stack *generate_stack(int argc, char **argv); + +void sort(t_stack **p_a, t_stack **p_b, int num_a); +void nano_sort(t_stack **p_a, int num_a); +void micro_sort(t_stack **p_a, t_stack **p_b, int num_a); +// void large_sort(t_stack **p_a, t_stack **p_b, int num_a); + +void operate_sa(t_stack **p_a); +void operate_sb(t_stack **p_b); +void operate_ss(t_stack **p_a, t_stack **p_b); +void operate_ra(t_stack **p_a); +void operate_rb(t_stack **p_b); +void operate_rr(t_stack **p_a, t_stack **p_b); +void operate_rra(t_stack **p_a); +void operate_rrb(t_stack **p_a); +void operate_rrr(t_stack **p_a, t_stack **p_b); +void operate_pa(t_stack **p_b, t_stack **p_a); +void operate_pb(t_stack **p_a, t_stack **p_b); + +void push_stack(t_stack **p_s1, t_stack **p_s2); +void swap_stack(t_stack **p_stack); +void rotate_stack(t_stack **p_stack); +void reverse_rotate_stack(t_stack **p_stack); +t_list *ft_lst_before(t_list *lst, t_list *trg); -int check_args(int argc, char **argv); - -t_stack *generate_stack(int argc, char **argv); - -void sort(t_stack **p_a, t_stack **p_b, int num_a); -void nano_sort(t_stack **p_a, int num_a); -void micro_sort(t_stack **p_a, t_stack **p_b, int num_a); - -void operate_sa(t_stack **p_a); -void operate_sb(t_stack **p_b); -void operate_ra(t_stack **p_a); -void operate_rra(t_stack **p_a); -void operate_pa(t_stack **p_b, t_stack **p_a); -void operate_pb(t_stack **p_a, t_stack **p_b); -void push_stack(t_stack **p_s1, t_stack **p_s2); -void swap_stack(t_stack **p_stack); -void rotate_stack(t_stack **p_stack); -void reverse_rotate_stack(t_stack **p_stack); -t_list *ft_lst_before(t_list *lst, t_list *trg); - -int first_content(t_stack **p_stack); -int second_content(t_stack **p_stack); -void exit_with_error(void); -void clear_stack(t_stack **p_stack, void (*del)(void *)); +int first_content(t_stack **p_stack); +int second_content(t_stack **p_stack); +int third_content(t_stack **p_stack); +void exit_with_error(void); +void clear_stack(t_stack **p_stack, void (*del)(void *)); +int stack_size(t_stack *stack); #endif diff --git a/src/check_args.c b/src/check_args.c index 75f6abf..1aca3f6 100644 --- a/src/check_args.c +++ b/src/check_args.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/11 14:44:55 by reasuke #+# #+# */ -/* Updated: 2024/01/15 13:18:39 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:06:08 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -66,8 +66,7 @@ static bool _has_duplicate(int argc, char **argv) int check_args(int argc, char **argv) { - if (_has_not_digit(argc, argv) - || _has_overflow(argc, argv) + if (_has_not_digit(argc, argv) || _has_overflow(argc, argv) || _has_duplicate(argc, argv)) exit_with_error(); return (0); diff --git a/src/generate_stack.c b/src/generate_stack.c index 56583da..892d165 100644 --- a/src/generate_stack.c +++ b/src/generate_stack.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/11 19:04:40 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:10:51 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:06:20 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -90,20 +90,20 @@ int *_coordinate_compression(int argc, char **argv) t_stack *generate_stack(int argc, char **argv) { - t_stack *stack; - int *compressed_array; - int i; - int *ptr; + t_stack *stack; + int *compressed_array; + int i; + t_content *ptr; compressed_array = _coordinate_compression(argc, argv); i = 0; stack = NULL; while (i < argc - 1) { - ptr = ft_calloc(1, sizeof(int)); + ptr = ft_calloc(1, sizeof(t_content)); if (!ptr) exit_with_error(); - *ptr = compressed_array[i]; + ptr->index = compressed_array[i]; ft_lstadd_back(&stack, ft_lstnew(ptr)); i++; } diff --git a/src/main.c b/src/main.c index c9d6e12..9e64ca4 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/10 12:37:36 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:48:43 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:12:35 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,8 +15,9 @@ #ifdef LEAK # ifdef __APPLE__ -__attribute__((destructor)) -void destructor(void) +void leak_chek(void) __attribute__((destructor)); + +void leak_chek(void) { system("leaks -q push_swap"); } diff --git a/src/sort/large_sort.c b/src/sort/large_sort.c new file mode 100644 index 0000000..7533340 --- /dev/null +++ b/src/sort/large_sort.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* large_sort.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: reasuke +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/22 16:55:10 by reasuke #+# #+# */ +/* Updated: 2024/02/06 17:45:36 by reasuke ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +// naive implement: insertion sort +// find smallest number of a +// rotate +// push to b +// push to a + +void large_sort(t_stack **p_a, t_stack **p_b, int num_a) +{ + (void)p_a; + (void)p_b; + (void)num_a; +} diff --git a/src/sort/micro_sort.c b/src/sort/micro_sort.c index 8d922d9..c4476d1 100644 --- a/src/sort/micro_sort.c +++ b/src/sort/micro_sort.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 16:32:27 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:29:19 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:04:27 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/sort/nano_sort.c b/src/sort/nano_sort.c index 74e79db..ab480b7 100644 --- a/src/sort/nano_sort.c +++ b/src/sort/nano_sort.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/12 15:58:22 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:27:24 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:04:35 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,12 +14,7 @@ static void _handle_2(t_stack **p_a) { - int first; - int second; - - first = *(int *)(*p_a)->content; - second = *(int *)(*p_a)->next->content; - if (first > second) + if (first_content(p_a) > second_content(p_a)) { swap_stack(p_a); ft_putendl_fd("sa", STDOUT_FILENO); @@ -32,9 +27,9 @@ static void _handle_3(t_stack **p_a) int second; int third; - first = *(int *)(*p_a)->content; - second = *(int *)(*p_a)->next->content; - third = *(int *)(*p_a)->next->next->content; + first = first_content(p_a); + second = second_content(p_a); + third = third_content(p_a); if (second < first && first < third) operate_sa(p_a); else if (third < second && second < first) diff --git a/src/sort/sort.c b/src/sort/sort.c index f489a42..17b9bc2 100644 --- a/src/sort/sort.c +++ b/src/sort/sort.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 15:10:35 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:26:11 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:04:45 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/stack_operations/ft_lst_before.c b/src/stack_operations/ft_lst_before.c index fd8ef57..d83506c 100644 --- a/src/stack_operations/ft_lst_before.c +++ b/src/stack_operations/ft_lst_before.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 16:54:29 by reasuke #+# #+# */ -/* Updated: 2024/01/15 16:54:44 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:04:54 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/stack_operations/push.c b/src/stack_operations/push.c index 7235360..a58bbaa 100644 --- a/src/stack_operations/push.c +++ b/src/stack_operations/push.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 15:56:53 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:36:08 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:05:10 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/stack_operations/reverse_rotate.c b/src/stack_operations/reverse_rotate.c new file mode 100644 index 0000000..0db9f93 --- /dev/null +++ b/src/stack_operations/reverse_rotate.c @@ -0,0 +1,46 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* reverse_rotate.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: reasuke +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/23 17:18:15 by reasuke #+# #+# */ +/* Updated: 2024/02/07 15:04:58 by reasuke ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void reverse_rotate_stack(t_stack **p_stack) +{ + t_stack *before_last; + t_stack *last; + + if (ft_lstsize(*p_stack) < 2) + return ; + last = ft_lstlast(*p_stack); + before_last = ft_lst_before(*p_stack, last); + before_last->next = NULL; + last->next = *p_stack; + *p_stack = last; +} + +void operate_rra(t_stack **p_a) +{ + reverse_rotate_stack(p_a); + ft_putendl_fd("rra", STDOUT_FILENO); +} + +void operate_rrb(t_stack **p_b) +{ + reverse_rotate_stack(p_b); + ft_putendl_fd("rrb", STDOUT_FILENO); +} + +void operate_rrr(t_stack **p_a, t_stack **p_b) +{ + reverse_rotate_stack(p_a); + reverse_rotate_stack(p_b); + ft_putendl_fd("rrr", STDOUT_FILENO); +} diff --git a/src/stack_operations/rotate.c b/src/stack_operations/rotate.c index 19b0878..eff3e01 100644 --- a/src/stack_operations/rotate.c +++ b/src/stack_operations/rotate.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 14:05:46 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:31:46 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:05:17 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,28 +26,21 @@ void rotate_stack(t_stack **p_stack) *p_stack = second; } -void reverse_rotate_stack(t_stack **p_stack) -{ - t_stack *before_last; - t_stack *last; - - if (ft_lstsize(*p_stack) < 2) - return ; - last = ft_lstlast(*p_stack); - before_last = ft_lst_before(*p_stack, last); - before_last->next = NULL; - last->next = *p_stack; - *p_stack = last; -} - void operate_ra(t_stack **p_a) { rotate_stack(p_a); ft_putendl_fd("ra", STDOUT_FILENO); } -void operate_rra(t_stack **p_a) +void operate_rb(t_stack **p_b) +{ + rotate_stack(p_b); + ft_putendl_fd("rb", STDOUT_FILENO); +} + +void operate_rr(t_stack **p_a, t_stack **p_b) { - reverse_rotate_stack(p_a); - ft_putendl_fd("rra", STDOUT_FILENO); + rotate_stack(p_a); + rotate_stack(p_b); + ft_putendl_fd("rr", STDOUT_FILENO); } diff --git a/src/stack_operations/swap.c b/src/stack_operations/swap.c index cbfcff4..042c331 100644 --- a/src/stack_operations/swap.c +++ b/src/stack_operations/swap.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/15 13:28:54 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:32:30 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:05:21 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,3 +35,10 @@ void operate_sb(t_stack **p_b) swap_stack(p_b); ft_putendl_fd("sb", STDOUT_FILENO); } + +void operate_ss(t_stack **p_a, t_stack **p_b) +{ + swap_stack(p_a); + swap_stack(p_b); + ft_putendl_fd("ss", STDOUT_FILENO); +} diff --git a/src/utils/clear_stack.c b/src/utils/clear_stack.c index 9dfee44..dce9e85 100644 --- a/src/utils/clear_stack.c +++ b/src/utils/clear_stack.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/23 15:46:24 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:47:39 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:05:27 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/utils/exit_with_error.c b/src/utils/exit_with_error.c index 4f82387..c4deee8 100644 --- a/src/utils/exit_with_error.c +++ b/src/utils/exit_with_error.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/11 14:38:17 by reasuke #+# #+# */ -/* Updated: 2024/01/11 14:38:59 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:05:34 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/utils/first_content.c b/src/utils/first_content.c index 6655bcb..bd41fc4 100644 --- a/src/utils/first_content.c +++ b/src/utils/first_content.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/17 18:27:37 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:37:13 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:05:41 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,5 +14,5 @@ int first_content(t_stack **p_stack) { - return (*(int *)(*p_stack)->content); + return (((t_content *)(*p_stack)->content)->index); } diff --git a/src/utils/second_content.c b/src/utils/second_content.c index 816fd2d..80b3f7d 100644 --- a/src/utils/second_content.c +++ b/src/utils/second_content.c @@ -6,7 +6,7 @@ /* By: reasuke +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/17 18:28:02 by reasuke #+# #+# */ -/* Updated: 2024/01/23 15:37:22 by reasuke ### ########.fr */ +/* Updated: 2024/02/07 15:05:48 by reasuke ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,5 +14,5 @@ int second_content(t_stack **p_stack) { - return (*(int *)(*p_stack)->next->content); + return (((t_content *)(*p_stack)->next->content)->index); } diff --git a/src/utils/stack_size.c b/src/utils/stack_size.c new file mode 100644 index 0000000..3b7d760 --- /dev/null +++ b/src/utils/stack_size.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* stack_size.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: reasuke +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/23 16:25:21 by reasuke #+# #+# */ +/* Updated: 2024/02/07 15:05:54 by reasuke ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int stack_size(t_stack *stack) +{ + return (ft_lstsize(stack)); +} diff --git a/src/utils/third_content.c b/src/utils/third_content.c new file mode 100644 index 0000000..cfff57e --- /dev/null +++ b/src/utils/third_content.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* third_content.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: reasuke +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/17 18:28:02 by reasuke #+# #+# */ +/* Updated: 2024/02/07 15:06:04 by reasuke ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int third_content(t_stack **p_stack) +{ + return (((t_content *)(*p_stack)->next->next->content)->index); +} diff --git a/test/test_sort.cpp b/test/test_sort.cpp index c96e83e..4a1146f 100644 --- a/test/test_sort.cpp +++ b/test/test_sort.cpp @@ -1,7 +1,8 @@ // Copyright 2024, reasuke -#include #include +#include +#include #include "gtest/gtest.h" @@ -30,13 +31,14 @@ static void sort_test_main(int N) { t_stack *stack_a = NULL; t_stack *stack_b = NULL; for (int &i : v) { - ft_lstadd_back(&stack_a, ft_lstnew(new int(i))); + t_content *c = new t_content({i, 0, 0, 0}); + ft_lstadd_back(&stack_a, ft_lstnew(c)); } // sort sort(&stack_a, &stack_b, N); // check if the order is appropreate for (int i = 1; stack_a; ++i, stack_a = stack_a->next) { - EXPECT_EQ(*(int *)stack_a->content, i); + EXPECT_EQ(first_content(&stack_a), i); } } while (std::next_permutation(v.begin(), v.end())); } @@ -57,6 +59,50 @@ static void sort_test(int N) { close(stdout_copy); } +// static void random_sort_test_main(int N) { +// std::vector v(N); +// for (int i = 0; i < N; ++i) { +// v[i] = i + 1; +// } +// // shuffle vector +// std::cout << std::endl; +// std::random_device seed_gen; +// std::mt19937 engine(seed_gen()); +// std::shuffle(v.begin(), v.end(), engine); +// // for (int i = 0; i < N; ++i) { +// // std::cout << v[i] << ' '; +// // } +// // std::cout << '\n'; +// t_list *stack_a = NULL; +// t_list *stack_b = NULL; +// for (int &i : v) { +// FIXME: use content +// ft_lstadd_back(&stack_a, ft_lstnew(new int(i))); +// } +// // sort +// sort(&stack_a, &stack_b, N); +// // check if the order is appropreate +// for (int i = 1; stack_a; ++i, stack_a = stack_a->next) { +// EXPECT_EQ(*(int *)stack_a->content, i); +// } +// } + +// static void random_sort_test(int N) { +// // save stdout +// int stdout_copy = dup(STDOUT_FILENO); +// // redirect stdout to /dev/null +// int dev_null = open("/dev/null", O_WRONLY); +// dup2(dev_null, 1); +// close(dev_null); + +// // execute test +// random_sort_test_main(N); + +// // revert stdout +// dup2(stdout_copy, STDOUT_FILENO); +// close(stdout_copy); +// } + TEST(sort, oneElement) { sort_test(1); } @@ -76,3 +122,35 @@ TEST(sort, fourElements) { TEST(sort, fiveElements) { sort_test(5); } + +// TEST(sort, sixElements) { +// sort_test(6); +// } + +// TEST(sort, sevenElements) { +// sort_test(7); +// } + +// TEST(sort, eightElementsRandom) { +// random_sort_test(8); +// } + +// TEST(sort, nineElementsRandom) { +// random_sort_test(9); +// } + +// TEST(sort, tenElementsRandom) { +// random_sort_test(10); +// } + +// TEST(sort, hundredElementsRandom) { +// random_sort_test(100); +// } + +// TEST(sort, twoHundredElementsRandom) { +// random_sort_test(200); +// } + +// TEST(sort, thousandElementsRandom) { +// random_sort_test(1000); +// }