#include <kcpp_unittest.hpp> #include <cstring> #include <kc_memory_dump.h> using namespace kcpp; using namespace kcpp::Assert; using namespace kc; /** * KcMemoryDump 単体テスト。 */ class UtKcMemoryDump: public TestCase { public: UtKcMemoryDump() : entry() { /* NOP */ } ~UtKcMemoryDump() {/* NOP */ } void setUp() { static char data_buff[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; entry.file = "file"; entry.func = "func"; entry.line = 123; entry.size = 52; entry.data = data_buff; snprintf(expected_info , sizeof(expected_info) , "file:123 (10 bytes) [func=func]"); snprintf(expected_binary, sizeof(expected_binary), " | 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F"); } void testSample1() { int buff_size = 81;//sizeof(test_buff); int bytes = 60; bool binary = true; bool ascii = true; int column = 80; kc_memory_dump(test_buff, buff_size, &entry, bytes, binary, ascii, column); // カラム数が合致するか確認 printf(" 10 20 30 40 50 60 70 80 90\n"); printf("----+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----|\n"); printf("%s[EOL]\n", test_buff); } void testSample2() { } void run() { RUN_TEST(testSample1, "sample1"); } private: KcMemoryEntry entry; char test_buff[4096]; char expected_info[4096]; char expected_binary[4096]; char expected_ascii[4096]; }; #if 0 #ifndef UNITTEST int main() #else int dummy() #endif { char buff[1024]; KcMemoryEntry entry = { .file = "file", .func = "func", .line = 123, .size = 10, .data = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" }; TestInfo testInfoList[] = { { .buff_size = 100, .bytes = 16, .binary = true, .ascii = false, .max_column = 80 }, { .buff_size = 100, .bytes = 16, .binary = true, .ascii = true, .max_column = 80 }, { .buff_size = 100, .bytes = 16, .binary = true, .ascii = true, .max_column = 79 }, /* 番兵 */ { .buff_size = -1, .bytes = -1, .binary = false, .ascii = false, .max_column = -1 } }; for (TestInfo* testInfo = &testInfoList[0]; testInfo->buff_size >= 0; testInfo++) { kc_memory_dump(buff, testInfo->buff_size, &entry, testInfo->bytes, testInfo->binary, testInfo->ascii, testInfo->max_column); printf("####################################################\n"); printf("buff_size = %d\n", testInfo->buff_size); printf("bytes = %d\n", testInfo->bytes); printf("max_column= %d\n", testInfo->max_column); printf(" 10 20 30 40 50 60 70 80 90 \n"); printf("----+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----|\n"); printf("%s[END]\n", buff); } return 0; } #endif