SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
tcpipUnitTests.cpp
Go to the documentation of this file.
1 /*
2  * This file provides test cases for the tcpip package, that can be executed by MiniCppUnit
3  *
4  * Author: Axel Wegener
5  */
6 
7 #ifdef UNITTESTS
8 
9 #include "MiniCppUnit.hxx"
10 #include "storage.h"
11 //#include "socket.h"
12 #include <math.h>
13 
14 
15 class tcpipUnitTests : public TestFixture<tcpipUnitTests>
16 {
17 public:
18  TEST_FIXTURE( tcpipUnitTests )
19  {
20  TEST_CASE( testStorageChar );
21  TEST_CASE( testStorageByte );
22  TEST_CASE( testStorageString );
23  TEST_CASE( testStorageShort );
24  TEST_CASE( testStorageInt );
25  TEST_CASE( testStorageFloat );
26  TEST_CASE( testStorageDouble );
27  TEST_CASE( testStorageMixed );
28  TEST_CASE( testStorageReset );
29  TEST_CASE( testStorageValidPos );
30  TEST_CASE( testStorageLoadCharArray );
31  TEST_CASE( testStorageCharToInt );
32  TEST_CASE( testStorageByteShortInt );
33  }
34 
35  void testStorageChar()
36  {
37  tcpip::Storage s1;
38 
39  s1.writeChar('\0');
40  s1.writeChar('Ü');
41  s1.writeChar('\n');
42 
43  ASSERT_EQUALS( true, s1.valid_pos() );
44  ASSERT( s1.readChar() == '\0' );
45  ASSERT( (char) s1.readChar() == 'Ü' );
46  ASSERT( s1.readChar() == '\n' );
47  ASSERT_EQUALS( false, s1.valid_pos() );
48  }
49 
50  void testStorageByte()
51  {
52  tcpip::Storage s1;
53 
54  s1.writeByte(0);
55  s1.writeByte(-128);
56  s1.writeByte(127);
57 /*
58  bool err = false;
59  try
60  {
61  s1.writeByte(128);
62  }
63  catch (std::invalid_argument e)
64  {
65  err = true;
66  }
67  catch ( ... ) {}
68  if (!err) FAIL("Storage::writeByte allowed an input value of 128");
69 
70  err = false;
71  try
72  {
73  s1.writeByte(-129);
74  }
75  catch (std::invalid_argument e)
76  {
77  err = true;
78  }
79  if (!err) FAIL("Storage::writeByte allowed an input value of -129");
80 */
81  ASSERT_EQUALS( true, s1.valid_pos() );
82  ASSERT_EQUALS( 0, s1.readByte() );
83  ASSERT_EQUALS( -128, s1.readByte() );
84  ASSERT_EQUALS( 127, s1.readByte() );
85  ASSERT_EQUALS( false, s1.valid_pos() );
86  }
87 
88  void testStorageString()
89  {
90  tcpip::Storage s1;
91 
92  s1.writeString("Dies ist ein TestString");
93  s1.writeString("");
94  s1.writeString("2. Text mit Sonderzeichen ü ö ß \n\0");
95 
96  ASSERT_EQUALS( true, s1.valid_pos() );
97  ASSERT_EQUALS( "Dies ist ein TestString", s1.readString() );
98  ASSERT_EQUALS( "", s1.readString() );
99  ASSERT_EQUALS( "2. Text mit Sonderzeichen ü ö ß \n\0", s1.readString() );
100  ASSERT_EQUALS( false, s1.valid_pos() );
101  }
102 
103  void testStorageShort()
104  {
105  tcpip::Storage s1;
106 
107  s1.writeShort(0);
108  s1.writeShort(32767);
109  s1.writeShort(-32768);
110 
111  ASSERT_EQUALS( true, s1.valid_pos() );
112  ASSERT_EQUALS( 0, s1.readShort() );
113  ASSERT_EQUALS( 32767, s1.readShort() );
114  ASSERT_EQUALS( -32768, s1.readShort() );
115  ASSERT_EQUALS( false, s1.valid_pos() );
116  }
117 
118  void testStorageInt()
119  {
120  tcpip::Storage s1;
121 
122  s1.writeInt(0);
123  s1.writeInt(-32768);
124  s1.writeInt(32767);
125  s1.writeInt(INT_MIN);
126  s1.writeInt(INT_MAX);
127 
128  ASSERT_EQUALS( true, s1.valid_pos() );
129  ASSERT_EQUALS( 0, s1.readInt() );
130  ASSERT_EQUALS( -32768, s1.readInt() );
131  ASSERT_EQUALS( 32767, s1.readInt() );
132  ASSERT_EQUALS( INT_MIN, s1.readInt() );
133  ASSERT_EQUALS( INT_MAX, s1.readInt() );
134  ASSERT_EQUALS( false, s1.valid_pos() );
135  }
136 
137  void testStorageFloat()
138  {
139  tcpip::Storage s1;
140 
141  float f1 = (float) 0.000002;
142  float f2 = (float) 0.000001;
143 
144  s1.writeFloat(0.0);
145  s1.writeFloat(f1);
146  s1.writeFloat(f2);
147 
148  ASSERT_EQUALS( true, s1.valid_pos() );
149  ASSERT_EQUALS( (float) 0.0, s1.readFloat() );
150  ASSERT_EQUALS( f1, s1.readFloat() );
151  ASSERT_EQUALS( f2, s1.readFloat() );
152  ASSERT_EQUALS( false, s1.valid_pos() );
153  }
154 
155  void testStorageDouble()
156  {
157  tcpip::Storage s1;
158 
159  double d1 = 0.000002;
160  double d2 = 0.000001;
161 
162  s1.writeDouble(0.0);
163  s1.writeDouble(d1);
164  s1.writeDouble(d2);
165 
166  ASSERT_EQUALS( true, s1.valid_pos() );
167  ASSERT_EQUALS( 0.0, s1.readDouble() );
168  ASSERT_EQUALS( d1, s1.readDouble() );
169  ASSERT_EQUALS( d2, s1.readDouble() );
170  ASSERT_EQUALS( false, s1.valid_pos() );
171  }
172 
173  void testStorageMixed()
174  {
175  tcpip::Storage s1;
176 
177  double d1 = 0.000002;
178 
179  s1.writeFloat(0.0);
180  s1.writeDouble(d1);
181  s1.writeString("\0");
182  s1.writeShort(42);
183 
184  ASSERT_EQUALS( true, s1.valid_pos() );
185  ASSERT_EQUALS( (float) 0.0, s1.readFloat() );
186  ASSERT_EQUALS( d1, s1.readDouble() );
187  ASSERT_EQUALS( "\0", s1.readString() );
188  ASSERT_EQUALS( 42, s1.readShort() );
189  ASSERT_EQUALS( false, s1.valid_pos() );
190  }
191 
192  void testStorageReset()
193  {
194  tcpip::Storage s1;
195 
196  double d1 = 0.000002;
197 
198  s1.reset();
199  ASSERT_EQUALS( false, s1.valid_pos() );
200 
201  s1.writeFloat(0.0);
202  s1.writeDouble(d1);
203  s1.writeString("\0");
204  s1.writeShort(42);
205 
206  ASSERT_EQUALS( true, s1.valid_pos() );
207  s1.reset();
208  ASSERT_EQUALS( false, s1.valid_pos() );
209 
210  s1.writeString("Test");
211 
212  ASSERT_EQUALS( true, s1.valid_pos() );
213  ASSERT_EQUALS( "Test", s1.readString() );
214  ASSERT_EQUALS( false, s1.valid_pos() );
215 
216  s1.reset();
217  ASSERT( 0 == s1.size() );
218  }
219 
220  void testSocketConnect()
221  {
222 
223  }
224 
225  void testStorageValidPos()
226  {
227  tcpip::Storage s1;
228  ASSERT_EQUALS( false, s1.valid_pos() );
229 
230  tcpip::Storage s2;
231  s2.writeFloat(1.0);
232  ASSERT_EQUALS( true, s2.valid_pos() );
233 
234  s2.reset();
235  ASSERT_EQUALS( false, s2.valid_pos() );
236  }
237 
238  void testStorageLoadCharArray()
239  {
240  tcpip::Storage sHallo;
241  sHallo.writeString("Hallo du!");
242 
243  unsigned char cBuffer[100];
244  unsigned int i=0;
245  while ( sHallo.valid_pos() && i < sizeof(cBuffer) )
246  {
247  cBuffer[i] = sHallo.readChar();
248  i++;
249  }
250 
251  tcpip::Storage s1(cBuffer, i);
252 
253  ASSERT_EQUALS( "Hallo du!", s1.readString() );
254 
255  }
256  void testStorageCharToInt()
257  {
258  tcpip::Storage s;
259 
260  ASSERT_EQUALS(0, (int)s.position());
261  ASSERT_EQUALS(0, (int)s.size());
262 
263  s.writeChar(0);
264  ASSERT_EQUALS(0, (int)s.position());
265  ASSERT_EQUALS(1, (int)s.size());
266 
267  s.writeChar(0);
268  ASSERT_EQUALS(0, (int)s.position());
269  ASSERT_EQUALS(2, (int)s.size());
270 
271  s.writeChar(0);
272  ASSERT_EQUALS(0, (int)s.position());
273  ASSERT_EQUALS(3, (int)s.size());
274 
275  s.writeChar(4);
276  ASSERT_EQUALS(0, (int)s.position());
277  ASSERT_EQUALS(4, (int)s.size());
278 
279  int n = s.readInt();
280 
281  ASSERT_EQUALS(4, (int)s.position());
282  ASSERT_EQUALS(4, (int)s.size());
283  ASSERT_EQUALS(4, n);
284 
285  s.reset();
286 
287  ASSERT_EQUALS(0, (int)s.position());
288  ASSERT_EQUALS(0, (int)s.size());
289 
290  s.writeChar(0);
291  ASSERT_EQUALS(0, (int)s.position());
292  ASSERT_EQUALS(1, (int)s.size());
293 
294  s.writeChar(0);
295  ASSERT_EQUALS(0, (int)s.position());
296  ASSERT_EQUALS(2, (int)s.size());
297 
298  s.writeChar(0);
299  ASSERT_EQUALS(0, (int)s.position());
300  ASSERT_EQUALS(3, (int)s.size());
301 
302  s.writeChar(4);
303  ASSERT_EQUALS(0, (int)s.position());
304  ASSERT_EQUALS(4, (int)s.size());
305 
306  n = s.readInt();
307 
308  ASSERT_EQUALS(4, (int)s.position());
309  ASSERT_EQUALS(4, (int)s.size());
310  ASSERT_EQUALS(4, n);
311 
312  }
313 
314  void testStorageByteShortInt()
315  {
316  tcpip::Storage s;
317  return;
318  try {
319 // s.writeByte(-128);
320  s.writeByte(127);
321 
322 // ASSERT_EQUALS(-128, s.readByte());
323  ASSERT_EQUALS(127, s.readByte());
324 
325  }
326  catch (std::string s)
327  {
328  std::cerr << s << std::endl;
329  }
330 
331  /* int max = 255;
332  int min = 0;
333 
334  byte b;
335  int i;
336 
337  b = (byte) min;
338  i = b;
339  ASSERT_EQUALS(0, i);
340 
341  b = (byte) max;
342  i = b;
343  ASSERT_EQUALS(255, i);
344  */
345  }
346 };
347 
348 REGISTER_FIXTURE( tcpipUnitTests );
349 
350 #endif
virtual int readShort()
virtual unsigned int position() const
virtual double readDouble()
StorageType::size_type size() const
Definition: storage.h:115
virtual bool valid_pos()
virtual unsigned char readChar()
virtual void writeInt(int)
virtual void writeChar(unsigned char)
virtual int readInt()
#define ASSERT
Definition: RTree.h:12
virtual void writeByte(int)
virtual void writeShort(int)
virtual std::string readString()
virtual void writeFloat(float)
virtual void writeString(const std::string &s)
virtual float readFloat()
virtual void writeDouble(double)
virtual int readByte()