2 //=============================================================================
6 * Checks the functionality of the ACE CDR streams.
8 * @author Istvan Buki <istvan.buki@euronet.be> and Jeff Parsons <parsons@cs.wustl.edu> and Carlos O'Ryan <coryan@cs.wustl.edu>
10 //=============================================================================
13 #include "test_config.h"
14 #include "ace/Get_Opt.h"
15 #include "ace/Auto_Ptr.h"
16 #include "ace/CDR_Stream.h"
17 #include "ace/CDR_Size.h"
18 #include "ace/SString.h"
20 #include "ace/OS_NS_stdlib.h"
21 #include "ace/OS_NS_string.h"
22 #include "ace/OS_NS_wchar.h"
27 static int nloops
= 100;
36 const ACE_CDR::Char
*str
;
37 const ACE_CDR::WChar
*wstr
;
38 const std::string std_str
;
39 #if !defined(ACE_LACKS_STD_WSTRING)
40 const std::wstring std_wstr
;
44 ACE_CDR::UShort repus
;
47 ACE_CDR::Boolean repb
;
48 const ACE_CDR::Char repc
;
49 ACE_CDR::LongLong repll
;
50 ACE_CDR::ULongLong repull
;
55 int test_put (ACE_OutputCDR
& cdr
);
56 int test_get (ACE_InputCDR
& cdr
) const;
57 int test_put_placeholder (ACE_OutputCDR
& cdr
);
58 int test_get_placeholder (ACE_InputCDR
& cdr
) const;
65 ACE_CDR::Short a
[ARRAY_SIZE
];
68 CDR_Test_Types::CDR_Test_Types ()
75 #if !defined(ACE_LACKS_STD_WSTRING)
85 repll (-5000000000LL),
86 repull (5000000000LL),
92 i
< CDR_Test_Types::ARRAY_SIZE
;
103 // Build an output stream
107 // Basic types for output
108 ACE_CDR::Char ch
= 'A';
109 ACE_CDR::Char wchtmp
[] = {'\xF3'};
110 ACE_CDR::WChar wch
= *wchtmp
;
111 ACE_CDR::WChar wchar2
[] = {'\x00'}; // empty wide string
112 ACE_CDR::WChar
*wstr
= wchar2
;
113 ACE_CString
str ("Test String");
114 std::string
std_str ("std string");
115 #if !defined(ACE_LACKS_STD_WSTRING)
116 std::wstring
std_wstr (L
"std wstring");
118 ACE_CDR::Short s
= -123;
119 ACE_CDR::UShort us
= 123;
120 ACE_CDR::Long l
= -65800L;
121 ACE_CDR::ULong ul
= 65800UL;
122 ACE_CDR::Float f
= 1.23f
;
123 ACE_CDR::Double d
= 123.456789;
124 ACE_CDR::Fixed fx
= ACE_CDR::Fixed::from_string ("8158901571290874");
127 ACE_CDR::Short s_array
[3] = { -1, 0, 1 };
128 ACE_CDR::Long l_array
[3] = { -345678, 0, 345678 };
129 ACE_CDR::Float f_array
[3] = { -1.23f
, 0.0f
, 1.23f
};
130 ACE_CDR::Double d_array
[3] = { -123.456789, 0.0, 123.456789 };
131 ACE_CDR::Boolean b_array
[3] = { false, true, false };
133 ACE_OutputCDR::from_char
fc (ch
);
134 ACE_OutputCDR::from_wchar
fwc (wch
);
140 #if !defined(ACE_LACKS_STD_WSTRING)
150 os
.write_short_array (s_array
, 3);
151 os
.write_long_array (l_array
, 3);
152 os
.write_float_array (f_array
, 3);
153 os
.write_double_array (d_array
, 3);
154 os
.write_boolean_array (b_array
, 3);
156 // Do the same for size stream.
162 #if !defined(ACE_LACKS_STD_WSTRING)
172 ss
.write_short_array (s_array
, 3);
173 ss
.write_long_array (l_array
, 3);
174 ss
.write_float_array (f_array
, 3);
175 ss
.write_double_array (d_array
, 3);
176 ss
.write_boolean_array (b_array
, 3);
179 if (ss
.total_length () != os
.total_length ())
180 ACE_ERROR_RETURN ((LM_ERROR
,
182 ACE_TEXT ("representation length does not match")),
185 const ACE_Message_Block
*out_mb
= os
.begin ();
186 size_t len
= out_mb
->length ();
188 // Create an input stream (copy constructor)
189 ACE_InputCDR
is (os
);
190 const ACE_Message_Block
*in_mb
= is
.start ();
192 if (in_mb
->length () != len
)
193 ACE_ERROR_RETURN ((LM_ERROR
,
195 ACE_TEXT ("buffer length not preserved")),
198 for (i
= 0; i
< len
; i
++)
200 unsigned long const in_chunk
=
201 static_cast<unsigned long> (* (in_mb
->rd_ptr () + i
));
203 unsigned long const out_chunk
=
204 static_cast<unsigned long> (* (out_mb
->rd_ptr () + i
));
206 if (in_chunk
!= out_chunk
)
207 ACE_ERROR_RETURN ((LM_ERROR
,
209 ACE_TEXT ("buffer contents not preserved")),
213 // Basic types for input
214 ACE_CDR::Char ch1
= '\0';
215 ACE_CDR::WChar wch1
= '\x00';
216 ACE_CDR::WChar
*wstr1
= 0;
218 std::string std_str1
;
219 #if !defined(ACE_LACKS_STD_WSTRING)
220 std::wstring std_wstr1
;
222 ACE_CDR::Short s1
= 0;
223 ACE_CDR::UShort us1
= 0;
224 ACE_CDR::Long l1
= 0L;
225 ACE_CDR::ULong ul1
= 0UL;
226 ACE_CDR::Float f1
= 0.0f
;
227 ACE_CDR::Double d1
= 0.0;
228 ACE_CDR::Fixed fx1
= ACE_CDR::Fixed::from_string ("0");
231 ACE_CDR::Short s_array1
[3];
232 ACE_CDR::Long l_array1
[3];
233 ACE_CDR::Float f_array1
[3];
234 ACE_CDR::Double d_array1
[3];
236 ACE_DEBUG ((LM_DEBUG
,
237 ACE_TEXT ("Checking operators and arrays\n\n")));
239 ACE_InputCDR::to_char
tc (ch1
);
241 ACE_InputCDR::to_wchar
twc (wch1
);
244 ACE_InputCDR::to_wstring
twstr (wstr1
, 0);
246 // @todo Lose the ACE_Auto_Array_Ptr. We should be using a
247 // std::string, or the like.
248 ACE_Auto_Array_Ptr
<ACE_CDR::WChar
> safe_wstr (wstr1
);
250 #if !defined(ACE_LACKS_STD_WSTRING)
260 is
.read_short_array (s_array1
, 3);
261 is
.read_long_array (l_array1
, 3);
262 is
.read_float_array (f_array1
, 3);
263 is
.read_double_array (d_array1
, 3);
266 ACE_ERROR_RETURN ((LM_ERROR
,
268 ACE_TEXT ("char transfer error")),
272 ACE_ERROR_RETURN ((LM_ERROR
,
274 ACE_TEXT ("wchar transfer error")),
278 ACE_ERROR_RETURN ((LM_ERROR
,
280 ACE_TEXT ("string transfer error")),
283 if (ACE_OS::wscmp (wstr1
, wstr
))
284 ACE_ERROR_RETURN ((LM_ERROR
,
286 ACE_TEXT ("wide string transfer error")),
289 if (std_str1
!= std_str
)
290 ACE_ERROR_RETURN ((LM_ERROR
,
292 ACE_TEXT ("std::string transfer error")),
295 #if !defined(ACE_LACKS_STD_WSTRING)
296 if (std_wstr1
!= std_wstr
)
297 ACE_ERROR_RETURN ((LM_ERROR
,
299 ACE_TEXT ("std::wstring transfer error")),
304 ACE_ERROR_RETURN ((LM_ERROR
,
306 ACE_TEXT ("short transfer error")),
310 ACE_ERROR_RETURN ((LM_ERROR
,
312 ACE_TEXT ("ushort transfer error")),
316 ACE_ERROR_RETURN ((LM_ERROR
,
318 ACE_TEXT ("long transfer error")),
322 ACE_ERROR_RETURN ((LM_ERROR
,
324 ACE_TEXT ("ulong transfer error")),
327 if (!ACE::is_equal (f1
, f
))
328 ACE_ERROR_RETURN ((LM_ERROR
,
330 ACE_TEXT ("float transfer error")),
333 if (!ACE::is_equal (d1
, d
))
334 ACE_ERROR_RETURN ((LM_ERROR
,
336 ACE_TEXT ("double transfer error")),
340 ACE_ERROR_RETURN ((LM_ERROR
,
342 ACE_TEXT ("fixed transfer error")),
345 for (i
= 0 ; i
< 3; i
++)
346 if (s_array1
[i
] != s_array
[i
])
347 ACE_ERROR_RETURN ((LM_ERROR
,
349 ACE_TEXT ("short array transfer error")),
352 for (i
= 0 ; i
< 3; i
++)
353 if (l_array1
[i
] != l_array
[i
])
354 ACE_ERROR_RETURN ((LM_ERROR
,
356 ACE_TEXT ("long array transfer error")),
359 for (i
= 0 ; i
< 3; i
++)
360 if (!ACE::is_equal (f_array1
[i
], f_array
[i
]))
361 ACE_ERROR_RETURN ((LM_ERROR
,
363 ACE_TEXT ("float array transfer error")),
366 for (i
= 0 ; i
< 3; i
++)
367 if (!ACE::is_equal (d_array1
[i
], d_array
[i
]))
368 ACE_ERROR_RETURN ((LM_ERROR
,
370 ACE_TEXT ("double array transfer error")),
377 CDR_Test_Types::test_put (ACE_OutputCDR
&cdr
)
379 for (int i
= 0; i
< n
; ++i
)
381 if (cdr
.write_octet (this->o
) == 0)
382 ACE_ERROR_RETURN ((LM_ERROR
,
383 ACE_TEXT ("write_octet[%d] failed\n"),
386 if (cdr
.write_short (this->s
) == 0)
387 ACE_ERROR_RETURN ((LM_ERROR
,
388 ACE_TEXT ("write_short[%d] failed\n"),
391 if (cdr
.write_octet (this->o
) == 0)
392 ACE_ERROR_RETURN ((LM_ERROR
,
393 ACE_TEXT ("write_octet-2[%d] failed\n"),
396 if (cdr
.write_long (this->l
) == 0)
397 ACE_ERROR_RETURN ((LM_ERROR
,
398 ACE_TEXT ("write_long[%d] failed\n"),
401 if (cdr
.write_long (this->l
) == 0)
402 ACE_ERROR_RETURN ((LM_ERROR
,
403 ACE_TEXT ("write_long-2[%d] failed\n"),
407 if (cdr
.write_string (this->str
) == 0)
408 ACE_ERROR_RETURN ((LM_ERROR
,
409 ACE_TEXT ("write_string[%d] failed\n"),
413 if (cdr
.write_wstring (this->wstr
) == 0)
414 ACE_ERROR_RETURN ((LM_ERROR
,
415 ACE_TEXT ("write_wstring[%d] failed\n"),
419 if (cdr
.write_string (this->std_str
) == 0)
420 ACE_ERROR_RETURN ((LM_ERROR
,
421 ACE_TEXT ("write_string(std)[%d] failed\n"),
425 #if !defined(ACE_LACKS_STD_WSTRING)
426 if (cdr
.write_wstring (this->std_wstr
) == 0)
427 ACE_ERROR_RETURN ((LM_ERROR
,
428 ACE_TEXT ("write_wstring(std)[%d] failed\n"),
438 CDR_Test_Types::test_get (ACE_InputCDR
&cdr
) const
444 for (int i
= 0; i
< n
; ++i
)
446 if (cdr
.read_octet (xo
) == 0)
447 ACE_ERROR_RETURN ((LM_ERROR
,
448 ACE_TEXT ("read_octet[%d] failed\n"),
452 ACE_ERROR_RETURN ((LM_ERROR
,
453 ACE_TEXT ("octet[%d] differs\n"),
456 if (cdr
.read_short (xs
) == 0)
457 ACE_ERROR_RETURN ((LM_ERROR
,
458 ACE_TEXT ("read_short[%d] failed\n"),
461 ACE_ERROR_RETURN ((LM_ERROR
,
462 ACE_TEXT ("short[%d] differs\n"),
465 if (cdr
.read_octet (xo
) == 0)
466 ACE_ERROR_RETURN ((LM_ERROR
,
467 ACE_TEXT ("read_octet-2[%d] failed\n"),
471 ACE_ERROR_RETURN ((LM_ERROR
,
472 ACE_TEXT ("octet-2[%d] differs\n"),
475 if (cdr
.read_long (xl
) == 0)
476 ACE_ERROR_RETURN ((LM_ERROR
,
477 ACE_TEXT ("read_long[%d] failed\n"),
481 ACE_ERROR_RETURN ((LM_ERROR
,
482 ACE_TEXT ("long[%d] differs\n"),
485 if (cdr
.read_long (xl
) == 0)
486 ACE_ERROR_RETURN ((LM_ERROR
,
487 ACE_TEXT ("read_long-2[%d] failed\n"),
491 ACE_ERROR_RETURN ((LM_ERROR
,
492 ACE_TEXT ("long-2[%d] differs\n"),
497 if (cdr
.read_string (xstr
) == 0)
498 ACE_ERROR_RETURN ((LM_ERROR
,
499 ACE_TEXT ("read_string2[%d] failed\n"),
502 ACE_Auto_Basic_Array_Ptr
<ACE_CDR::Char
> auto_xstr (xstr
);
503 if (ACE_OS::strcmp (auto_xstr
.get (), this->str
) != 0)
504 ACE_ERROR_RETURN ((LM_ERROR
,
505 ACE_TEXT ("string[%d] differs\n"),
509 ACE_CDR::WChar
*wstr1
;
510 if (cdr
.read_wstring (wstr1
) == 0)
511 ACE_ERROR_RETURN ((LM_ERROR
,
512 ACE_TEXT ("read_wstring2[%d] failed\n"),
516 ACE_Auto_Basic_Array_Ptr
<ACE_CDR::WChar
> auto_xwstr (wstr1
);
517 if (ACE_OS::wslen(auto_xwstr
.get () ))
518 ACE_ERROR_RETURN ((LM_ERROR
,
519 ACE_TEXT ("wstring[%d] differs\n"),
523 std::string std_xstr
;
524 if (cdr
.read_string (std_xstr
) == 0)
525 ACE_ERROR_RETURN ((LM_ERROR
,
526 ACE_TEXT ("read_string(std)[%d] failed\n"),
529 if (std_xstr
!= this->std_str
)
530 ACE_ERROR_RETURN ((LM_ERROR
,
531 ACE_TEXT ("std::string[%d] differs\n"),
535 #if !defined(ACE_LACKS_STD_WSTRING)
536 std::wstring std_xwstr
;
537 if (cdr
.read_wstring (std_xwstr
) == 0)
538 ACE_ERROR_RETURN ((LM_ERROR
,
539 ACE_TEXT ("read_wstring(std)[%d] failed\n"),
542 if (std_xwstr
!= this->std_wstr
)
543 ACE_ERROR_RETURN ((LM_ERROR
,
544 ACE_TEXT ("std::wstring[%d] differs\n"),
553 CDR_Test_Types::test_put_placeholder (ACE_OutputCDR
&cdr
)
555 // Write a placeholder then a bunch of other stuff, then replace.
557 char *pos
= cdr
.write_long_placeholder ();
558 if (test_put (cdr
) != 0)
559 ACE_ERROR_RETURN ((LM_ERROR
,
560 ACE_TEXT ("test_put (long placeholder) failed\n")),
562 if (!cdr
.replace (this->repl
, pos
))
563 ACE_ERROR_RETURN ((LM_ERROR
,
564 ACE_TEXT ("replace(long) failed\n")),
568 pos
= cdr
.write_long_placeholder ();
569 if (test_put (cdr
) != 0)
570 ACE_ERROR_RETURN ((LM_ERROR
,
571 ACE_TEXT ("test_put (long placeholder) failed\n")),
573 if (!cdr
.replace (this->repul
, pos
))
574 ACE_ERROR_RETURN ((LM_ERROR
,
575 ACE_TEXT ("replace(ulong) failed\n")),
579 pos
= cdr
.write_short_placeholder ();
580 if (test_put (cdr
) != 0)
581 ACE_ERROR_RETURN ((LM_ERROR
,
582 ACE_TEXT ("test_put (short placeholder) failed\n")),
584 if (!cdr
.replace (this->reps
, pos
))
585 ACE_ERROR_RETURN ((LM_ERROR
,
586 ACE_TEXT ("replace(short) failed\n")),
590 pos
= cdr
.write_short_placeholder ();
591 if (test_put (cdr
) != 0)
592 ACE_ERROR_RETURN ((LM_ERROR
,
593 ACE_TEXT ("test_put (short placeholder) failed\n")),
595 if (!cdr
.replace (this->repus
, pos
))
596 ACE_ERROR_RETURN ((LM_ERROR
,
597 ACE_TEXT ("replace(ushort) failed\n")),
601 pos
= cdr
.write_boolean_placeholder ();
602 if (test_put (cdr
) != 0)
603 ACE_ERROR_RETURN ((LM_ERROR
,
604 ACE_TEXT ("test_put (boolean placeholder) failed\n")),
606 if (!cdr
.replace (this->repb
, pos
))
607 ACE_ERROR_RETURN ((LM_ERROR
,
608 ACE_TEXT ("replace(boolean) failed\n")),
612 pos
= cdr
.write_char_placeholder ();
613 if (test_put (cdr
) != 0)
614 ACE_ERROR_RETURN ((LM_ERROR
,
615 ACE_TEXT ("test_put (char placeholder) failed\n")),
617 if (!cdr
.replace (this->repc
, pos
))
618 ACE_ERROR_RETURN ((LM_ERROR
,
619 ACE_TEXT ("replace(char) failed\n")),
623 pos
= cdr
.write_longlong_placeholder ();
624 if (test_put (cdr
) != 0)
625 ACE_ERROR_RETURN ((LM_ERROR
,
626 ACE_TEXT ("test_put (longlong placeholder) failed\n")),
628 if (!cdr
.replace (this->repll
, pos
))
629 ACE_ERROR_RETURN ((LM_ERROR
,
630 ACE_TEXT ("replace(longlong) failed\n")),
634 pos
= cdr
.write_longlong_placeholder ();
635 if (test_put (cdr
) != 0)
636 ACE_ERROR_RETURN ((LM_ERROR
,
637 ACE_TEXT ("test_put (longlong placeholder) failed\n")),
639 if (!cdr
.replace (this->repull
, pos
))
640 ACE_ERROR_RETURN ((LM_ERROR
,
641 ACE_TEXT ("replace(ulonglong) failed\n")),
645 pos
= cdr
.write_octet_placeholder ();
646 if (test_put (cdr
) != 0)
647 ACE_ERROR_RETURN ((LM_ERROR
,
648 ACE_TEXT ("test_put (octet placeholder) failed\n")),
650 if (!cdr
.replace (this->repo
, pos
))
651 ACE_ERROR_RETURN ((LM_ERROR
,
652 ACE_TEXT ("replace(octet) failed\n")),
656 pos
= cdr
.write_float_placeholder ();
657 if (test_put (cdr
) != 0)
658 ACE_ERROR_RETURN ((LM_ERROR
,
659 ACE_TEXT ("test_put (float placeholder) failed\n")),
661 if (!cdr
.replace (this->repf
, pos
))
662 ACE_ERROR_RETURN ((LM_ERROR
,
663 ACE_TEXT ("replace(float) failed\n")),
667 pos
= cdr
.write_double_placeholder ();
668 if (test_put (cdr
) != 0)
669 ACE_ERROR_RETURN ((LM_ERROR
,
670 ACE_TEXT ("test_put (double placeholder) failed\n")),
672 if (!cdr
.replace (this->repd
, pos
))
673 ACE_ERROR_RETURN ((LM_ERROR
,
674 ACE_TEXT ("replace(double) failed\n")),
681 CDR_Test_Types::test_get_placeholder (ACE_InputCDR
&cdr
) const
689 ACE_CDR::LongLong xll
;
690 ACE_CDR::ULongLong xull
;
695 if (cdr
.read_long (xl
) == 0)
696 ACE_ERROR_RETURN ((LM_ERROR
,
697 ACE_TEXT ("read_long failed\n")),
699 if (xl
!= this->repl
)
700 ACE_ERROR_RETURN ((LM_ERROR
,
701 ACE_TEXT ("replaced long differs\n")),
704 // The bunch of stuff written after the placeholder by test_put_placeholder
705 // should still be valid; check that it is.
706 if (test_get (cdr
) != 0)
707 ACE_ERROR_RETURN ((LM_ERROR
,
708 ACE_TEXT ("test_get (long) failed\n")),
711 if (cdr
.read_ulong (xul
) == 0)
712 ACE_ERROR_RETURN ((LM_ERROR
,
713 ACE_TEXT ("read_ulong failed\n")), 1);
714 if (xul
!= this->repul
)
715 ACE_ERROR_RETURN ((LM_ERROR
,
716 ACE_TEXT ("replaced ulong differs\n")),
719 if (test_get (cdr
) != 0)
720 ACE_ERROR_RETURN ((LM_ERROR
,
721 ACE_TEXT ("test_get (ulong) failed\n")),
724 if (cdr
.read_short (xs
) == 0)
725 ACE_ERROR_RETURN ((LM_ERROR
,
726 ACE_TEXT ("read_short failed\n")), 1);
727 if (xs
!= this->reps
)
728 ACE_ERROR_RETURN ((LM_ERROR
,
729 ACE_TEXT ("replaced short differs\n")),
732 if (test_get (cdr
) != 0)
733 ACE_ERROR_RETURN ((LM_ERROR
,
734 ACE_TEXT ("test_get (short) failed\n")),
737 if (cdr
.read_ushort (xus
) == 0)
738 ACE_ERROR_RETURN ((LM_ERROR
,
739 ACE_TEXT ("read_ushort failed\n")), 1);
740 if (xus
!= this->repus
)
741 ACE_ERROR_RETURN ((LM_ERROR
,
742 ACE_TEXT ("replaced ushort differs\n")),
745 if (test_get (cdr
) != 0)
746 ACE_ERROR_RETURN ((LM_ERROR
,
747 ACE_TEXT ("test_get (ushort) failed\n")),
750 if (cdr
.read_boolean (xb
) == 0)
751 ACE_ERROR_RETURN ((LM_ERROR
,
752 ACE_TEXT ("read_boolean failed\n")), 1);
753 if (xb
!= this->repb
)
754 ACE_ERROR_RETURN ((LM_ERROR
,
755 ACE_TEXT ("replaced boolean differs\n")),
758 if (test_get (cdr
) != 0)
759 ACE_ERROR_RETURN ((LM_ERROR
,
760 ACE_TEXT ("test_get (boolean) failed\n")),
763 if (cdr
.read_char (xc
) == 0)
764 ACE_ERROR_RETURN ((LM_ERROR
,
765 ACE_TEXT ("read_char failed\n")), 1);
766 if (xc
!= this->repc
)
767 ACE_ERROR_RETURN ((LM_ERROR
,
768 ACE_TEXT ("replaced char differs\n")),
771 if (test_get (cdr
) != 0)
772 ACE_ERROR_RETURN ((LM_ERROR
,
773 ACE_TEXT ("test_get (char) failed\n")),
777 if (cdr
.read_longlong (xll
) == 0)
778 ACE_ERROR_RETURN ((LM_ERROR
,
779 ACE_TEXT ("read_longlong failed\n")), 1);
780 if (xll
!= this->repll
)
781 ACE_ERROR_RETURN ((LM_ERROR
,
782 ACE_TEXT ("replaced longlong differs\n")),
785 if (test_get (cdr
) != 0)
786 ACE_ERROR_RETURN ((LM_ERROR
,
787 ACE_TEXT ("test_get (longlong) failed\n")),
790 if (cdr
.read_ulonglong (xull
) == 0)
791 ACE_ERROR_RETURN ((LM_ERROR
,
792 ACE_TEXT ("read_ulonglong failed\n")), 1);
793 if (xull
!= this->repull
)
794 ACE_ERROR_RETURN ((LM_ERROR
,
795 ACE_TEXT ("replaced ulonglong differs\n")),
798 if (test_get (cdr
) != 0)
799 ACE_ERROR_RETURN ((LM_ERROR
,
800 ACE_TEXT ("test_get (ulonglong) failed\n")),
803 if (cdr
.read_octet (xo
) == 0)
804 ACE_ERROR_RETURN ((LM_ERROR
,
805 ACE_TEXT ("read_octet failed\n")), 1);
806 if (xo
!= this->repo
)
807 ACE_ERROR_RETURN ((LM_ERROR
,
808 ACE_TEXT ("replaced octet differs\n")),
811 if (test_get (cdr
) != 0)
812 ACE_ERROR_RETURN ((LM_ERROR
,
813 ACE_TEXT ("test_get (octet) failed\n")),
816 if (cdr
.read_float (xf
) == 0)
817 ACE_ERROR_RETURN ((LM_ERROR
,
818 ACE_TEXT ("read_float failed\n")), 1);
819 if (xf
!= this->repf
)
820 ACE_ERROR_RETURN ((LM_ERROR
,
821 ACE_TEXT ("replaced float differs\n")),
824 if (test_get (cdr
) != 0)
825 ACE_ERROR_RETURN ((LM_ERROR
,
826 ACE_TEXT ("test_get (float) failed\n")),
829 if (cdr
.read_double (xd
) == 0)
830 ACE_ERROR_RETURN ((LM_ERROR
,
831 ACE_TEXT ("read_double failed\n")), 1);
832 if (xd
!= this->repd
)
833 ACE_ERROR_RETURN ((LM_ERROR
,
834 ACE_TEXT ("replaced double differs\n")),
837 if (test_get (cdr
) != 0)
838 ACE_ERROR_RETURN ((LM_ERROR
,
839 ACE_TEXT ("test_get (double) failed\n")),
847 run_main (int argc
, ACE_TCHAR
*argv
[])
849 ACE_START_TEST (ACE_TEXT ("CDR_Test"));
851 ACE_DEBUG ((LM_DEBUG
,
852 ACE_TEXT ("This is ACE Version %u.%u.%u\n\n"),
853 ACE::major_version (),
854 ACE::minor_version(),
855 ACE::micro_version()));
857 ACE_Get_Opt
get_opt (argc
, argv
, ACE_TEXT ("dn:l:"));
861 while ((opt
= get_opt ()) != EOF
)
869 n
= ACE_OS::atoi (get_opt
.opt_arg ());
872 nloops
= ACE_OS::atoi (get_opt
.opt_arg ());
876 ACE_DEBUG ((LM_DEBUG
,
877 ACE_TEXT ("Usage: %s ")
878 ACE_TEXT ("-d debug")
879 ACE_TEXT ("-n <num> ")
880 ACE_TEXT ("-l <loops> ")
882 ACE_TEXT ("CDR_Test")));
888 ACE_TEST_ASSERT (sizeof (ACE_CDR::Boolean
) >= 1);
889 ACE_TEST_ASSERT (sizeof (ACE_CDR::Octet
) == 1);
890 ACE_TEST_ASSERT (sizeof (ACE_CDR::WChar
) >= 2);
891 ACE_TEST_ASSERT (sizeof (ACE_CDR::Short
) == 2);
892 ACE_TEST_ASSERT (sizeof (ACE_CDR::Long
) == 4);
893 ACE_TEST_ASSERT (sizeof (ACE_CDR::LongLong
) == 8);
894 ACE_TEST_ASSERT (sizeof (ACE_CDR::Float
) == 4);
895 ACE_TEST_ASSERT (sizeof (ACE_CDR::Double
) == 8);
896 ACE_TEST_ASSERT (sizeof (ACE_CDR::LongDouble
) == 16);
898 ACE_DEBUG ((LM_DEBUG
,
899 ACE_TEXT ("Testing ACE CDR functions - short stream\n\n")));
901 if (short_stream () != 0 )
904 ACE_DEBUG ((LM_DEBUG
,
905 ACE_TEXT ("Short stream - no errors\n\n")
906 ACE_TEXT ("Testing basic types - long stream\n\n")));
908 for (int i
= 0; i
< nloops
; ++i
)
910 ACE_OutputCDR output
;
911 CDR_Test_Types test_types
;
913 if (test_types
.test_put (output
) != 0)
916 ACE_InputCDR
input (output
);
919 ACE_DEBUG ((LM_DEBUG
,
920 ACE_TEXT ("Output CDR:\n")));
921 ACE_HEX_DUMP ((LM_DEBUG
,
924 ACE_DEBUG ((LM_DEBUG
,
925 ACE_TEXT ("Input CDR:\n")));
926 ACE_HEX_DUMP ((LM_DEBUG
,
931 if (test_types
.test_get (input
) != 0)
935 ACE_DEBUG ((LM_DEBUG
,
936 ACE_TEXT ("Long stream - no errors\n\n")
937 ACE_TEXT ("Testing basic types - long stream[2]\n\n")));
939 for (int j
= 0; j
< nloops
; ++j
)
941 ACE_OutputCDR output
;
942 CDR_Test_Types test_types
;
944 if (test_types
.test_put (output
) != 0)
947 ACE_InputCDR
input (output
.begin ());
950 ACE_DEBUG ((LM_DEBUG
,
951 ACE_TEXT ("Output CDR:\n")));
952 ACE_HEX_DUMP ((LM_DEBUG
,
955 ACE_DEBUG ((LM_DEBUG
,
956 ACE_TEXT ("Input CDR:\n")));
957 ACE_HEX_DUMP ((LM_DEBUG
,
962 if (test_types
.test_get (input
) != 0)
966 ACE_DEBUG ((LM_DEBUG
,
967 ACE_TEXT ("Long stream[2] - no errors\n\n")
968 ACE_TEXT ("Testing consolidation\n\n")));
970 ACE_OutputCDR
output (30);
971 CDR_Test_Types test_types
;
973 if (test_types
.test_put (output
) != 0)
976 if (output
.begin () == output
.end ())
977 ACE_DEBUG ((LM_WARNING
,
978 ACE_TEXT ("Only one block needed; test no effective.\n")));
981 if (output
.consolidate () != 0)
982 ACE_ERROR ((LM_ERROR
, ACE_TEXT ("%p\n"), ACE_TEXT ("consolidate")));
985 ACE_InputCDR
input (output
);
988 ACE_DEBUG ((LM_DEBUG
,
989 ACE_TEXT ("Output CDR:\n")));
990 ACE_HEX_DUMP ((LM_DEBUG
,
993 ACE_DEBUG ((LM_DEBUG
,
994 ACE_TEXT ("Input CDR:\n")));
995 ACE_HEX_DUMP ((LM_DEBUG
,
1000 if (test_types
.test_get (input
) != 0)
1003 ACE_DEBUG ((LM_DEBUG
,
1004 ACE_TEXT ("Consolidation - no errors\n\n")
1005 ACE_TEXT ("Testing placeholder/replace\n\n")));
1008 if (test_types
.test_put_placeholder (output
) != 0)
1011 input
= ACE_InputCDR(output
);
1014 ACE_DEBUG ((LM_DEBUG
,
1015 ACE_TEXT ("Output CDR:\n")));
1016 ACE_HEX_DUMP ((LM_DEBUG
,
1019 ACE_DEBUG ((LM_DEBUG
,
1020 ACE_TEXT ("Input CDR:\n")));
1021 ACE_HEX_DUMP ((LM_DEBUG
,
1026 if (test_types
.test_get_placeholder (input
) != 0)
1029 ACE_DEBUG ((LM_DEBUG
,
1030 ACE_TEXT ("Placeholder/Replace - no errors\n\n")));