1 // temporarily disable optimizations altogether until a fine grain control
2 // is implemented on Makefile level only disabling the compiler option -Os
8 #define BufferSize 384 // test correct page passing (>256, multiple of 128 here)
10 static char Buffer[BufferSize+3]; // +1 to move up (and down)
19 for (i=0; i < BufferSize; ++i)
20 Buffer[i+1] = (i%128);
22 Buffer[0] = 255; // to check if start position is untouched
23 Buffer[BufferSize+2] = 255; // to check if end position is untouched
26 p = memmove(Buffer+2, Buffer+1, BufferSize);
28 // check buffer consistency before target
29 ASSERT_AreEqual(255, (unsigned)Buffer[0], "%u", "Unexpected value before range!");
31 // check buffer consistency at starting point
32 ASSERT_AreEqual(0, (unsigned)Buffer[1], "%u", "Unexpected value at range start!");
34 // check buffer consistency after range
35 ASSERT_AreEqual(255, (unsigned)Buffer[BufferSize+2], "%u", "Unexpected value after range!");
37 // check buffer values
38 for (i=0; i < BufferSize; ++i)
40 ASSERT_AreEqual(i%128, (unsigned)Buffer[i+2], "%u", "Unexpected value in buffer at position %u!" COMMA i+2);
43 v = Buffer[BufferSize+1]; // rember value of first untouched end-byte
46 p = memmove(Buffer+1, Buffer+2, BufferSize);
48 // check buffer consistency before target
49 ASSERT_AreEqual(255, (unsigned)Buffer[0], "%u", "Unexpected value before range!");
51 // check buffer consistency at end point
52 ASSERT_AreEqual(v, (unsigned)Buffer[BufferSize+1], "%u", "Unexpected value at range end!");
54 // check buffer consistency after range
55 ASSERT_AreEqual(255, (unsigned)Buffer[BufferSize+2], "%u", "Unexpected value after range!");
57 // check buffer values
58 for (i=0; i < BufferSize; ++i)
60 ASSERT_AreEqual(i%128, (unsigned)Buffer[i+1], "%u", "Unexpected value in buffer at position %u!" COMMA i+1);