Develop and Download Open Source Software

Browse Subversion Repository

Contents of /simulator/TestStructUpdate.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 279 - (show annotations) (download) (as text)
Wed Mar 12 05:28:19 2008 UTC (16 years, 2 months ago) by satofumi
File MIME type: text/x-c++src
File size: 2656 byte(s)
adjust tab index
1 /*!
2 \file
3 \brief structUpdate のテスト
4
5 \author Satofumi KAMIMURA
6
7 $Id$
8 */
9
10 #include "TestStructUpdate.h"
11 #include "structUpdate.h"
12
13 CPPUNIT_TEST_SUITE_REGISTRATION(StructUpdateTest);
14 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(StructUpdateTest, "StructUpdateTest");
15
16 /*!
17 \brief アクセステスト用構造体
18 */
19 typedef struct {
20 char ch;
21 short sh;
22 long lo;
23 } sample_t;
24
25
26 void StructUpdateTest::writeTest(void) {
27
28 sample_t data;
29
30 // char 型の場合
31 data.ch = 0;
32 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(data.ch));
33
34 writeStruct((unsigned char*)&data,
35 (unsigned char*)"\x00\x01\x00\x00\x00\x01\x01");
36 CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(data.ch));
37
38 // short 型の場合
39 data.sh = 0;
40 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(data.sh));
41
42 writeStruct((unsigned char*)&data,
43 (unsigned char*)"\x00\x01\x00\x00\x02\x02\x01\x00");
44 CPPUNIT_ASSERT_EQUAL(1 << 8, static_cast<int>(data.sh));
45
46 // long 型の場合
47 data.lo = 0;
48 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(data.lo));
49
50 writeStruct((unsigned char*)&data,
51 (unsigned char*)"\x00\x01\x00\x00\x04\x04\x00\x01\x00\x00");
52 CPPUNIT_ASSERT_EQUAL(1 << 16, static_cast<int>(data.lo));
53 }
54
55
56 void StructUpdateTest::readTest(void) {
57
58 sample_t data;
59
60 // char 型の場合
61 char ch_buffer[] = "\x00\x01\x00\x00\x00\x01\x00";
62 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(ch_buffer[6]));
63
64 data.ch = 1;
65 readStruct((unsigned char*)&data, (unsigned char*)ch_buffer);
66 CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(ch_buffer[6]));
67
68 // short 型の場合
69 char sh_buffer[] = "\x00\x01\x00\x00\x02\x02\x00\x00";
70 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>((sh_buffer[6] << 8) |
71 sh_buffer[7]));
72
73 data.sh = 1 << 8;
74 readStruct((unsigned char*)&data, (unsigned char*)sh_buffer);
75 CPPUNIT_ASSERT_EQUAL(1 << 8, static_cast<int>((sh_buffer[6] << 8) |
76 sh_buffer[7]));
77
78 // long 型の場合
79 char lo_buffer[] = "\x00\x01\x00\x00\x04\x04\x00\x00\x00\x00";
80 CPPUNIT_ASSERT_EQUAL(0, static_cast<int>((lo_buffer[6] << 24) |
81 (lo_buffer[7] << 16) |
82 (lo_buffer[8] << 8) |
83 lo_buffer[9]));
84
85 data.lo = 1 << 16;
86 readStruct((unsigned char*)&data, (unsigned char*)lo_buffer);
87 CPPUNIT_ASSERT_EQUAL(1 << 16, static_cast<int>((lo_buffer[6] << 24) |
88 (lo_buffer[7] << 16) |
89 (lo_buffer[8] << 8) |
90 lo_buffer[9]));
91 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26