drc: implement cycle reload on read
[pcsx_rearmed.git] / deps / libretro-common / samples / file / nbio / nbio_test.c
CommitLineData
3719602c
PC
1#include <stdio.h>
2#include <string.h>
3
4#include <file/nbio.h>
5
6static void nbio_write_test(void)
7{
8 size_t size;
9 bool looped = false;
10 void* ptr = NULL;
11 struct nbio_t* write = nbio_open("test.bin", NBIO_WRITE);
12 if (!write)
13 puts("[ERROR]: nbio_open failed (1)");
14
15 nbio_resize(write, 1024*1024);
16
17 ptr = nbio_get_ptr(write, &size);
18 if (size != 1024*1024)
19 puts("[ERROR]: wrong size (1)");
20
21 memset(ptr, 0x42, 1024*1024);
22 nbio_begin_write(write);
23
24 while (!nbio_iterate(write))
25 looped=true;
26
27 if (!looped)
28 puts("[SUCCESS]: Write finished immediately.");
29
30 nbio_free(write);
31}
32
33static void nbio_read_test(void)
34{
35 size_t size;
36 bool looped = false;
37 struct nbio_t* read = nbio_open("test.bin", NBIO_READ);
38 void* ptr = nbio_get_ptr(read, &size);
39 if (!read)
40 puts("[ERROR]: nbio_open failed (2)");
41
42 if (size != 1024*1024)
43 puts("[ERROR]: wrong size (2)");
44 if (ptr)
45 puts("[SUCCESS]: Read pointer is available before iterating.");
46
47 nbio_begin_read(read);
48
49 while (!nbio_iterate(read))
50 looped=true;
51
52 if (!looped)
53 puts("[SUCCESS]: Read finished immediately.");
54
55 ptr = nbio_get_ptr(read, &size);
56
57 if (size != 1024*1024)
58 puts("[ERROR]: wrong size (3)");
59 if (*(char*)ptr != 0x42 || memcmp(ptr, (char*)ptr+1, 1024*1024-1))
60 puts("[ERROR]: wrong data");
61
62 nbio_free(read);
63}
64
65int main(void)
66{
67 nbio_write_test();
68 nbio_read_test();
69}