]> git.sur5r.net Git - cc65/blob - test/val/lib_common_memmove.c
Removed workaround.
[cc65] / test / val / lib_common_memmove.c
1 #include <string.h>
2 #include "unittest.h"
3
4 #define BufferSize 384               // test correct page passing (>256, multiple of 128 here)
5
6 static char Buffer[BufferSize+3];    // +1 to move up (and down)
7
8
9 TEST
10 {
11     unsigned i, v;
12     char*    p;
13     
14     for (i=0; i < BufferSize; ++i)
15       Buffer[i+1] = (i%128);
16
17     Buffer[0] = 255;                  // to check if start position is untouched
18     Buffer[BufferSize+2] = 255;       // to check if end position is untouched
19
20     // copy upwards
21     p = memmove(Buffer+2, Buffer+1, BufferSize);
22
23     // check buffer consistency before target
24     ASSERT_AreEqual(255, (unsigned)Buffer[0], "%u", "Unexpected value before range!");
25
26     // check buffer consistency at starting point
27     ASSERT_AreEqual(0, (unsigned)Buffer[1], "%u", "Unexpected value at range start!");
28
29     // check buffer consistency after range
30     ASSERT_AreEqual(255, (unsigned)Buffer[BufferSize+2], "%u", "Unexpected value after range!");
31
32     // check buffer values
33     for (i=0; i < BufferSize; ++i)
34     {
35         ASSERT_AreEqual(i%128, (unsigned)Buffer[i+2], "%u", "Unexpected value in buffer at position %u!" COMMA i+2);
36     }
37
38     v = Buffer[BufferSize+1];   // rember value of first untouched end-byte 
39
40     // copy downwards
41     p = memmove(Buffer+1, Buffer+2, BufferSize);
42
43     // check buffer consistency before target
44     ASSERT_AreEqual(255, (unsigned)Buffer[0], "%u", "Unexpected value before range!");
45
46     // check buffer consistency at end point
47     ASSERT_AreEqual(v, (unsigned)Buffer[BufferSize+1], "%u", "Unexpected value at range end!");
48
49     // check buffer consistency after range
50     ASSERT_AreEqual(255, (unsigned)Buffer[BufferSize+2], "%u", "Unexpected value after range!");
51
52     // check buffer values
53     for (i=0; i < BufferSize; ++i)
54     {
55         ASSERT_AreEqual(i%128, (unsigned)Buffer[i+1], "%u", "Unexpected value in buffer at position %u!" COMMA i+1);
56     }
57 }
58 ENDTEST