tests
This commit is contained in:
parent
337c227fd7
commit
fb456880a7
16 changed files with 616 additions and 0 deletions
92
CMakeLists.txt
Normal file
92
CMakeLists.txt
Normal file
|
@ -0,0 +1,92 @@
|
|||
cmake_minimum_required(VERSION 3.5.2)
|
||||
project(fillit)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
include_directories(inc)
|
||||
include_directories(libft)
|
||||
|
||||
set(SOURCE_FILES
|
||||
libft/ft_atoi.c
|
||||
libft/ft_bzero.c
|
||||
libft/ft_isalnum.c
|
||||
libft/ft_isalpha.c
|
||||
libft/ft_isascii.c
|
||||
libft/ft_isdigit.c
|
||||
libft/ft_isprint.c
|
||||
libft/ft_itoa.c
|
||||
libft/ft_lst_at.c
|
||||
libft/ft_lstadd.c
|
||||
libft/ft_lstadd_back.c
|
||||
libft/ft_lstdel.c
|
||||
libft/ft_lstdelone.c
|
||||
libft/ft_lstfind.c
|
||||
libft/ft_lstiter.c
|
||||
libft/ft_lstmap.c
|
||||
libft/ft_lstnew.c
|
||||
libft/ft_lststrsplit.c
|
||||
libft/ft_memalloc.c
|
||||
libft/ft_memccpy.c
|
||||
libft/ft_memchr.c
|
||||
libft/ft_memcmp.c
|
||||
libft/ft_memcpy.c
|
||||
libft/ft_memdel.c
|
||||
libft/ft_memmove.c
|
||||
libft/ft_memset.c
|
||||
libft/ft_putchar.c
|
||||
libft/ft_putchar_fd.c
|
||||
libft/ft_putendl.c
|
||||
libft/ft_putendl_fd.c
|
||||
libft/ft_putnbr.c
|
||||
libft/ft_putnbr_fd.c
|
||||
libft/ft_putstr.c
|
||||
libft/ft_putstr_fd.c
|
||||
libft/ft_realloc.c
|
||||
libft/ft_strcat.c
|
||||
libft/ft_strchr.c
|
||||
libft/ft_strclr.c
|
||||
libft/ft_strcmp.c
|
||||
libft/ft_strcpy.c
|
||||
libft/ft_strdel.c
|
||||
libft/ft_strdup.c
|
||||
libft/ft_strequ.c
|
||||
libft/ft_striter.c
|
||||
libft/ft_striteri.c
|
||||
libft/ft_strjoin.c
|
||||
libft/ft_strlcat.c
|
||||
libft/ft_strlen.c
|
||||
libft/ft_strmap.c
|
||||
libft/ft_strmapi.c
|
||||
libft/ft_strncat.c
|
||||
libft/ft_strncmp.c
|
||||
libft/ft_strncpy.c
|
||||
libft/ft_strnequ.c
|
||||
libft/ft_strnew.c
|
||||
libft/ft_strnstr.c
|
||||
libft/ft_strrchr.c
|
||||
libft/ft_strsplit.c
|
||||
libft/ft_strstr.c
|
||||
libft/ft_strsub.c
|
||||
libft/ft_strtrim.c
|
||||
libft/ft_tolower.c
|
||||
libft/ft_toupper.c
|
||||
libft/ft_lstpop.c
|
||||
libft/libft.h
|
||||
src/check_raw_string.c
|
||||
src/dancing_links.c
|
||||
src/fillit.c
|
||||
src/get_types.c
|
||||
src/glue_figure.c
|
||||
src/main.c
|
||||
src/move_up_left.c
|
||||
src/read_file.c
|
||||
src/string_to_table.c
|
||||
src/test!_check.c
|
||||
src/test!_print_one_string.c
|
||||
src/test!_print_table.c
|
||||
src/to_letters.c
|
||||
src/get_amount.c
|
||||
tests/sample.fillit
|
||||
tests/sample1.fillit)
|
||||
|
||||
add_executable(fillit ${SOURCE_FILES})
|
34
src/check_raw_string.c
Normal file
34
src/check_raw_string.c
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* check_raw_string.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/12/15 18:32:54 by gtertysh #+# #+# */
|
||||
/* Updated: 2016/12/15 18:32:58 by gtertysh ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
int check_raw_string(char *raw_string)
|
||||
{
|
||||
int n_count;
|
||||
|
||||
n_count = 0;
|
||||
if (*raw_string == 0 || *raw_string == '\n')
|
||||
return (1);
|
||||
while(*raw_string)
|
||||
{
|
||||
if (*raw_string == '\n')
|
||||
n_count++;
|
||||
if ((n_count + 1) % 4 == 0)
|
||||
if (*(raw_string + 1) != '\0')
|
||||
if (*(raw_string + 1) != '\n' && !(*(raw_string + 2) == '.' || *(raw_string + 2) == '#'))
|
||||
return (1);
|
||||
raw_string++;
|
||||
|
||||
}
|
||||
if (n_count < 3)
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
11
src/fillit.c
Normal file
11
src/fillit.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
#include "fillit.h"
|
||||
|
||||
unsigned int ft_sqrt_ceil(unsigned int num)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
i = 1;
|
||||
while (i * i < num)
|
||||
i++;
|
||||
return (i);
|
||||
}
|
38
src/test!_check.c
Normal file
38
src/test!_check.c
Normal file
|
@ -0,0 +1,38 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* test!_check.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/12/14 17:26:13 by gtertysh #+# #+# */
|
||||
/* Updated: 2016/12/20 19:02:34 by gtertysh ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../inc/fillit.h"
|
||||
|
||||
// Test func. Compare figures from file
|
||||
// with templates
|
||||
void test_check(char **ttr, t_ttrmn *templates)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
|
||||
i = 0;
|
||||
while (ttr[i])
|
||||
{
|
||||
j = 0;
|
||||
while(j < 19)
|
||||
{
|
||||
if ((ft_memcmp(ttr[i], templates[j].t, 17) == 0))
|
||||
{
|
||||
printf(" match!\n");
|
||||
print_one_string(templates[j]);
|
||||
break;
|
||||
}
|
||||
j++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
31
src/test!_print_one_string.c
Normal file
31
src/test!_print_one_string.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* test!_print_one_string.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/12/14 17:09:23 by gtertysh #+# #+# */
|
||||
/* Updated: 2016/12/14 17:09:24 by gtertysh ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../inc/fillit.h"
|
||||
|
||||
// Test func. Print table but one string contain whole figure.
|
||||
void print_one_string(t_ttrmn ttr)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
while (ttr.t[i])
|
||||
{
|
||||
ft_putchar(ttr.t[i]);
|
||||
if ((i + 1) % 4 == 0)
|
||||
ft_putchar('\n');
|
||||
i++;
|
||||
}
|
||||
printf("x = %d, y = %d\n", ttr.width, ttr.height);
|
||||
printf("x1[%d] y1[%d]\nx2[%d] y2[%d]\nx3[%d] y3[%d]\nx4[%d] y4[%d]\n", ttr.c[0].x, ttr.c[0].y, ttr.c[1].x, ttr.c[1].y, ttr.c[2].x, ttr.c[2].y, ttr.c[3].x, ttr.c[3].y);
|
||||
ft_putstr("\n");
|
||||
}
|
30
src/test!_print_table.c
Normal file
30
src/test!_print_table.c
Normal file
|
@ -0,0 +1,30 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* test!_print_table.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/12/14 17:07:19 by gtertysh #+# #+# */
|
||||
/* Updated: 2016/12/14 17:07:22 by gtertysh ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../inc/fillit.h"
|
||||
|
||||
// Test func. Print string table,
|
||||
// each line - line of tetromino figure.
|
||||
void print_table(char **table)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
while (table[i])
|
||||
{
|
||||
ft_putstr(table[i]);
|
||||
ft_putstr("\n");
|
||||
if ((i + 1) % 4 == 0)
|
||||
ft_putchar('\n');
|
||||
i++;
|
||||
}
|
||||
}
|
37
src/to_letters.c
Normal file
37
src/to_letters.c
Normal file
|
@ -0,0 +1,37 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* to_letters.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/12/14 17:21:37 by gtertysh #+# #+# */
|
||||
/* Updated: 2016/12/14 17:21:39 by gtertysh ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../inc/fillit.h"
|
||||
|
||||
// convert "#" symbols to letters
|
||||
// rewrite for new method with structures
|
||||
void to_letters(char **ttr)
|
||||
{
|
||||
char ch;
|
||||
int i;
|
||||
int j;
|
||||
|
||||
i = 0;
|
||||
ch = 'A';
|
||||
while(ttr[i])
|
||||
{
|
||||
j = 0;
|
||||
while(ttr[i][j])
|
||||
{
|
||||
if(ttr[i][j] == '#')
|
||||
ttr[i][j] = ch;
|
||||
j++;
|
||||
}
|
||||
i++;
|
||||
ch++;
|
||||
}
|
||||
}
|
42
tests/color_letters.c
Normal file
42
tests/color_letters.c
Normal file
|
@ -0,0 +1,42 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* color_letters.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: kyork <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/10/04 16:44:50 by kyork #+# #+# */
|
||||
/* Updated: 2016/10/05 15:41:53 by kyork ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#define CSI "\033["
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int g_colors[] = {1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14,
|
||||
16 + 5, 16 + 12, 16 + 23, 16 + 30, 52 + 0, 52 + 5, 52 + 6, 52 + 12, 52 + 20,
|
||||
88 + 1, 88 + 6, 88 + 12, 160 + 12, 196 + 30, 160 + 21};
|
||||
|
||||
int main(void)
|
||||
{
|
||||
char c;
|
||||
ssize_t read_size;
|
||||
|
||||
while (1)
|
||||
{
|
||||
read_size = read(0, &c, 1);
|
||||
if (read_size == 0)
|
||||
break ;
|
||||
if ('A' <= c && c <= 'Z')
|
||||
{
|
||||
printf("%s48;5;%dm%c", CSI, g_colors[c - 'A'], c);
|
||||
}
|
||||
else if (c == '.')
|
||||
printf("%sm%c", CSI, c);
|
||||
else if (c == '\n')
|
||||
printf("%sm%c", CSI, c);
|
||||
else
|
||||
printf("%c", c);
|
||||
}
|
||||
}
|
46
tests/rand_test.py
Executable file
46
tests/rand_test.py
Executable file
|
@ -0,0 +1,46 @@
|
|||
#!/usr/bin/env python
|
||||
from __future__ import print_function
|
||||
|
||||
tet_shapes = [
|
||||
'####\n....\n....\n....\n',
|
||||
'#...\n#...\n#...\n#...\n',
|
||||
'#...\n###.\n....\n....\n',
|
||||
'##..\n#...\n#...\n....\n',
|
||||
'###.\n..#.\n....\n....\n',
|
||||
'.#..\n.#..\n##..\n....\n',
|
||||
'..#.\n###.\n....\n....\n',
|
||||
'#...\n#...\n##..\n....\n',
|
||||
'###.\n#...\n....\n....\n',
|
||||
'##..\n.#..\n.#..\n....\n',
|
||||
'##..\n##..\n....\n....\n',
|
||||
'.##.\n##..\n....\n....\n',
|
||||
'#...\n##..\n.#..\n....\n',
|
||||
'.#..\n###.\n....\n....\n',
|
||||
'#...\n##..\n#...\n....\n',
|
||||
'###.\n.#..\n....\n....\n',
|
||||
'.#..\n##..\n.#..\n....\n',
|
||||
'##..\n.##.\n....\n....\n',
|
||||
'.#..\n##..\n#...\n....\n',
|
||||
]
|
||||
|
||||
import argparse
|
||||
import random
|
||||
import os
|
||||
|
||||
parser = argparse.ArgumentParser(description="Generate random fillit problems")
|
||||
parser.add_argument('count', metavar="count", type=int, default=10, nargs='?',
|
||||
help="number of tetrominoes to output")
|
||||
parser.add_argument('--seed', type=int, default=None,
|
||||
help="mt_rand seed (to reproduce problems)")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
seed = args.seed
|
||||
if seed is None:
|
||||
seed = random.SystemRandom().randint(0, 2**19937-1)
|
||||
|
||||
random.seed(seed)
|
||||
|
||||
tets = [tet_shapes[random.randrange(len(tet_shapes))] for x in range(args.count)]
|
||||
|
||||
[print(x, end=("" if i == len(tets) - 1 else "\n")) for i, x in enumerate(tets)]
|
21
tests/sample.fillit
Normal file
21
tests/sample.fillit
Normal file
|
@ -0,0 +1,21 @@
|
|||
....
|
||||
##..
|
||||
.#..
|
||||
.#..
|
||||
|
||||
....
|
||||
####
|
||||
....
|
||||
....
|
||||
|
||||
#...
|
||||
###.
|
||||
....
|
||||
....
|
||||
|
||||
....
|
||||
##..
|
||||
.##.
|
||||
....
|
||||
|
||||
|
19
tests/sample1.fillit
Normal file
19
tests/sample1.fillit
Normal file
|
@ -0,0 +1,19 @@
|
|||
....
|
||||
##..
|
||||
.#..
|
||||
.#..
|
||||
|
||||
..#.
|
||||
###.
|
||||
....
|
||||
....
|
||||
|
||||
....
|
||||
##..
|
||||
##..
|
||||
....
|
||||
|
||||
####
|
||||
....
|
||||
....
|
||||
....
|
34
tests/sample2.fillit
Normal file
34
tests/sample2.fillit
Normal file
|
@ -0,0 +1,34 @@
|
|||
####
|
||||
....
|
||||
....
|
||||
....
|
||||
|
||||
####
|
||||
....
|
||||
....
|
||||
....
|
||||
|
||||
####
|
||||
....
|
||||
....
|
||||
....
|
||||
|
||||
####
|
||||
....
|
||||
....
|
||||
....
|
||||
|
||||
####
|
||||
....
|
||||
....
|
||||
....
|
||||
|
||||
####
|
||||
....
|
||||
....
|
||||
....
|
||||
|
||||
####
|
||||
....
|
||||
....
|
||||
....
|
19
tests/sample3.fillit
Normal file
19
tests/sample3.fillit
Normal file
|
@ -0,0 +1,19 @@
|
|||
....
|
||||
##..
|
||||
.#..
|
||||
.#..
|
||||
|
||||
....
|
||||
####
|
||||
....
|
||||
....
|
||||
|
||||
#...
|
||||
###.
|
||||
....
|
||||
....
|
||||
|
||||
....
|
||||
##..
|
||||
.##.
|
||||
....
|
39
tests/sample4.fillit
Normal file
39
tests/sample4.fillit
Normal file
|
@ -0,0 +1,39 @@
|
|||
...#
|
||||
...#
|
||||
...#
|
||||
...#
|
||||
|
||||
....
|
||||
....
|
||||
....
|
||||
####
|
||||
|
||||
.###
|
||||
...#
|
||||
....
|
||||
....
|
||||
|
||||
....
|
||||
..##
|
||||
.##.
|
||||
....
|
||||
|
||||
....
|
||||
.##.
|
||||
.##.
|
||||
....
|
||||
|
||||
....
|
||||
....
|
||||
##..
|
||||
.##.
|
||||
|
||||
##..
|
||||
.#..
|
||||
.#..
|
||||
....
|
||||
|
||||
....
|
||||
###.
|
||||
.#..
|
||||
....
|
4
tests/sample5.fillit
Normal file
4
tests/sample5.fillit
Normal file
|
@ -0,0 +1,4 @@
|
|||
....
|
||||
..##
|
||||
.##.
|
||||
....
|
119
tests/sample6.fillit
Normal file
119
tests/sample6.fillit
Normal file
|
@ -0,0 +1,119 @@
|
|||
...#
|
||||
...#
|
||||
...#
|
||||
...#
|
||||
|
||||
....
|
||||
....
|
||||
....
|
||||
####
|
||||
|
||||
.###
|
||||
...#
|
||||
....
|
||||
....
|
||||
|
||||
....
|
||||
..##
|
||||
.##.
|
||||
....
|
||||
|
||||
....
|
||||
.##.
|
||||
.##.
|
||||
....
|
||||
|
||||
....
|
||||
....
|
||||
##..
|
||||
.##.
|
||||
|
||||
##..
|
||||
.#..
|
||||
.#..
|
||||
....
|
||||
|
||||
....
|
||||
###.
|
||||
.#..
|
||||
....
|
||||
|
||||
...#
|
||||
...#
|
||||
...#
|
||||
...#
|
||||
|
||||
....
|
||||
....
|
||||
....
|
||||
####
|
||||
|
||||
.###
|
||||
...#
|
||||
....
|
||||
....
|
||||
|
||||
....
|
||||
..##
|
||||
.##.
|
||||
....
|
||||
|
||||
....
|
||||
.##.
|
||||
.##.
|
||||
....
|
||||
|
||||
....
|
||||
....
|
||||
##..
|
||||
.##.
|
||||
|
||||
##..
|
||||
.#..
|
||||
.#..
|
||||
....
|
||||
|
||||
....
|
||||
###.
|
||||
.#..
|
||||
....
|
||||
|
||||
...#
|
||||
...#
|
||||
...#
|
||||
...#
|
||||
|
||||
....
|
||||
....
|
||||
....
|
||||
####
|
||||
|
||||
.###
|
||||
...#
|
||||
....
|
||||
....
|
||||
|
||||
....
|
||||
..##
|
||||
.##.
|
||||
....
|
||||
|
||||
....
|
||||
.##.
|
||||
.##.
|
||||
....
|
||||
|
||||
....
|
||||
....
|
||||
##..
|
||||
.##.
|
||||
|
||||
##..
|
||||
.#..
|
||||
.#..
|
||||
....
|
||||
|
||||
....
|
||||
###.
|
||||
.#..
|
||||
....
|
Loading…
Reference in a new issue