drc: implement cycle reload on read
[pcsx_rearmed.git] / deps / libretro-common / samples / file / nbio / nbio_test.c
1 #include <stdio.h>
2 #include <string.h>
3
4 #include <file/nbio.h>
5
6 static 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
33 static 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
65 int main(void)
66 {
67    nbio_write_test();
68    nbio_read_test();
69 }