source: tags/arb-7.0/AWT/AWT_hexdump.cxx

Last change on this file was 12438, checked in by westram, 10 years ago
  • activate errors on missing test-source location
    • publish all missing tests
    • missing location apparently only occurs
      • in dynamic libraries and
      • for last test of a module Note: the reverse is not true!
File size: 4.8 KB
Line 
1// ================================================================= //
2//                                                                   //
3//   File      : AWT_hexdump.cxx                                     //
4//   Purpose   :                                                     //
5//                                                                   //
6//   Coded by Ralf Westram (coder@reallysoft.de) in September 2011   //
7//   Institute of Microbiology (Technical University Munich)         //
8//   http://www.arb-home.de/                                         //
9//                                                                   //
10// ================================================================= //
11
12#include "awt_hexdump.hxx"
13
14#ifdef UNIT_TESTS
15#ifndef TEST_UNIT_H
16#include <test_unit.h>
17#endif
18
19#define DO_HEXDUMP(off,hex,ascii,width,gap,space)       \
20    str.erase();                                        \
21    MemDump(off, hex, ascii, width, gap,space)          \
22        .dump_to(str, buf, len)
23
24#define TEST_HEXDUMP_EQUAL(width,gap,off,hex,ascii,space,expected) do { \
25        DO_HEXDUMP(off,hex,ascii,width,gap,space);                      \
26        TEST_EXPECT_EQUAL(str.get_data(), expected);                    \
27    } while(0)
28
29#define TEST_HEXDUMP_EQUAL__BROKEN(width,gap,off,hex,ascii,space,expected) do { \
30        DO_HEXDUMP(off,hex,ascii,width,gap,space);                              \
31        TEST_EXPECT_EQUAL__BROKEN(str.get_data(), expected);                    \
32    } while(0)
33
34void TEST_hexdump() {
35    GBS_strstruct str(200);
36    {
37        char buf[] = { 0x11, 0x47, 0, 0};
38        int len = 4;
39
40        TEST_HEXDUMP_EQUAL(0, 0, false, true,  false, true,  "11 47 00 00\n");        // unwrapped hexdump
41        TEST_HEXDUMP_EQUAL(0, 0, false, true,  false, false, "11470000\n");           // unwrapped hexdump (unspaced)
42        TEST_HEXDUMP_EQUAL(0, 0, false, false, true,  true,  ".G..\n");               // unwrapped ascii
43        TEST_HEXDUMP_EQUAL(0, 0, false, true,  true,  true,  "11 47 00 00 | .G..\n"); // unwrapped hex+ascii
44
45        TEST_HEXDUMP_EQUAL(0, 0, true, false, true,  true, "0000 | .G..\n");               // unwrapped ascii
46        TEST_HEXDUMP_EQUAL(0, 0, true, true,  false, true, "0000 | 11 47 00 00\n");        // unwrapped hex
47        TEST_HEXDUMP_EQUAL(0, 0, true, true,  true,  true, "0000 | 11 47 00 00 | .G..\n"); // unwrapped hex+ascii
48
49        TEST_HEXDUMP_EQUAL(4, 0, false, true,  false, true, "11 47 00 00\n");
50        TEST_HEXDUMP_EQUAL(4, 0, true,  true,  false, true, "0000 | 11 47 00 00\n");
51        TEST_HEXDUMP_EQUAL(4, 0, true,  true,  true,  true, "0000 | 11 47 00 00 | .G..\n");
52
53        TEST_HEXDUMP_EQUAL(3, 0, false, true,  false, true, "11 47 00\n00\n");
54        TEST_HEXDUMP_EQUAL(3, 0, true,  true,  false, true, "0000 | 11 47 00\n0003 | 00\n");
55        TEST_HEXDUMP_EQUAL(3, 0, true,  true,  true,  true, "0000 | 11 47 00 | .G.\n0003 | 00       | .\n");
56
57        TEST_HEXDUMP_EQUAL(2, 0, false, true,  false, true, "11 47\n00 00\n");
58        TEST_HEXDUMP_EQUAL(2, 0, true,  true,  false, true, "0000 | 11 47\n0002 | 00 00\n");
59        TEST_HEXDUMP_EQUAL(2, 0, true,  true,  true,  true, "0000 | 11 47 | .G\n0002 | 00 00 | ..\n");
60
61        TEST_HEXDUMP_EQUAL(1, 0, false, true,  false, true, "11\n47\n00\n00\n");
62        TEST_HEXDUMP_EQUAL(1, 0, true,  true,  false, true, "0000 | 11\n0001 | 47\n0002 | 00\n0003 | 00\n");
63        TEST_HEXDUMP_EQUAL(1, 0, true,  true,  true,  true, "0000 | 11 | .\n0001 | 47 | G\n0002 | 00 | .\n0003 | 00 | .\n");
64    }
65
66    {
67        char buf[] = "\1Smarkerline\1Sposvar_full_all\1Sp";
68        int len    = strlen(buf);
69        TEST_HEXDUMP_EQUAL(16, 0, true, true, true, true, 
70                           "0000 | 01 53 6D 61 72 6B 65 72 6C 69 6E 65 01 53 70 6F | .Smarkerline.Spo\n"
71                           "0010 | 73 76 61 72 5F 66 75 6C 6C 5F 61 6C 6C 01 53 70 | svar_full_all.Sp\n");
72        TEST_HEXDUMP_EQUAL(16, 4, true, true, true, true, 
73                           "0000 | 01 53 6D 61  72 6B 65 72  6C 69 6E 65  01 53 70 6F | .Sma rker line .Spo\n"
74                           "0010 | 73 76 61 72  5F 66 75 6C  6C 5F 61 6C  6C 01 53 70 | svar _ful l_al l.Sp\n");
75        TEST_HEXDUMP_EQUAL(13, 4, true, true, true, true, 
76                           "0000 | 01 53 6D 61  72 6B 65 72  6C 69 6E 65  01 | .Sma rker line .\n"
77                           "000D | 53 70 6F 73  76 61 72 5F  66 75 6C 6C  5F | Spos var_ full _\n"
78                           "001A | 61 6C 6C 01  53 70                        | all. Sp\n"
79                           );
80        TEST_HEXDUMP_EQUAL(13, 4, true, false, true, true, 
81                           "0000 | .Sma rker line .\n"
82                           "000D | Spos var_ full _\n"
83                           "001A | all. Sp\n"
84                           );
85    }
86}
87TEST_PUBLISH(TEST_hexdump);
88
89#endif // UNIT_TESTS
90
91
92
Note: See TracBrowser for help on using the repository browser.