970d10edb03c1d2146de78de9cb1da2b2c0fa941
[vlc.git] / src / test / test_block.c
1 /*****************************************************************************
2  * block.c: Test for block_t stuff
3  *****************************************************************************
4  * Copyright (C) 2008 RĂ©mi Denis-Courmont
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19  *****************************************************************************/
20
21 #ifdef HAVE_CONFIG_H
22 # include "config.h"
23 #endif
24
25 #include <stdio.h>
26 #include <string.h>
27 #undef NDEBUG
28 #include <assert.h>
29
30 #include <vlc_common.h>
31 #include <vlc_block.h>
32
33 static const char text[] =
34     "This is a test!\n"
35     "This file can be deleted safely!\n";
36
37 static void test_block_File (void)
38 {
39     FILE *stream;
40     int res;
41
42     stream = fopen ("testfile.txt", "wb+");
43     assert (stream != NULL);
44
45     res = fputs (text, stream);
46     assert (res != EOF);
47     res = fflush (stream);
48     assert (res != EOF);
49
50     block_t *block = block_File (fileno (stream));
51     fclose (stream);
52
53     assert (block != NULL);
54     assert (block->i_buffer == strlen (text));
55     assert (!memcmp (block->p_buffer, text, block->i_buffer));
56     block_Release (block);
57
58     remove ("testfile.txt");
59 }
60
61 static void test_block (void)
62 {
63     block_t *block = block_Alloc (sizeof (text));
64     assert (block != NULL);
65
66     strcpy (block->p_buffer, text);
67     block = block_Realloc (block, -10, sizeof (text));
68     assert (block != NULL);
69     assert (!strcmp (block->p_buffer, text + 10));
70     assert (block->i_buffer == sizeof (text));
71
72     block = block_Realloc (block, 10, sizeof (text));
73     assert (block != NULL);
74     assert (!strcmp (block->p_buffer + 10, text + 10));
75     assert (block->i_buffer == sizeof (text));
76     block_Release (block);
77
78     block = block_Alloc (SIZE_MAX);
79     assert (block == NULL);
80 }
81
82 int main (void)
83 {
84     test_block_File ();
85     return 0;
86 }
87