summaryrefslogtreecommitdiff
path: root/tests/CDR_Test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/CDR_Test.cpp')
-rw-r--r--tests/CDR_Test.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/CDR_Test.cpp b/tests/CDR_Test.cpp
index 60e404b4775..e4242dc3967 100644
--- a/tests/CDR_Test.cpp
+++ b/tests/CDR_Test.cpp
@@ -37,6 +37,7 @@ struct CDR_Test_Types
ACE_CDR::Short s;
ACE_CDR::Long l;
const ACE_CDR::Char *str;
+ const ACE_CDR::WChar *wstr;
ACE_CDR::Double d;
int test_put (ACE_OutputCDR& cdr);
@@ -55,6 +56,7 @@ CDR_Test_Types::CDR_Test_Types (void)
s (2),
l (4),
str ("abc"),
+ wstr (0),
d (8)
{
for (int i = 0;
@@ -76,6 +78,8 @@ short_stream (void)
ACE_CDR::Char ch = 'A';
ACE_CDR::Char wchtmp[] = {"\xF3"};
ACE_CDR::WChar wch = *wchtmp;
+ ACE_CDR::WChar wchar2[] = {'\x00'}; // empty wide string
+ ACE_CDR::WChar *wstr = wchar2;
ACE_CString str ("Test String");
ACE_CDR::Short s = -123;
ACE_CDR::UShort us = 123;
@@ -95,6 +99,7 @@ short_stream (void)
ACE_OutputCDR::from_wchar fwc (wch);
os << fwc;
os << str;
+ os << wstr;
os << s;
os << us;
os << l;
@@ -135,6 +140,7 @@ short_stream (void)
// Basic types for input
ACE_CDR::Char ch1 = '\0';
ACE_CDR::WChar wch1 = '\x00';
+ ACE_CDR::WChar *wstr1 = 0;
ACE_CString str1;
ACE_CDR::Short s1 = 0;
ACE_CDR::UShort us1 = 0;
@@ -157,6 +163,7 @@ short_stream (void)
ACE_InputCDR::to_wchar twc (wch1);
is >> twc;
is >> str1;
+ is >> wstr1;
is >> s1;
is >> us1;
is >> l1;
@@ -186,6 +193,13 @@ short_stream (void)
ACE_TEXT ("string transfer error")),
1);
+ if (ACE_OS::wscmp(wstr1, wstr))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("wide string transfer error")),
+ 1);
+
+
if (s1 != s)
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT ("%p\n"),
@@ -290,6 +304,12 @@ CDR_Test_Types::test_put (ACE_OutputCDR &cdr)
i),
1);
+ if (cdr.write_wstring (this->wstr) == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("write_wstring[%d] failed\n"),
+ i),
+ 1);
+
}
return 0;
@@ -366,6 +386,20 @@ CDR_Test_Types::test_get (ACE_InputCDR &cdr) const
ACE_TEXT ("string[%d] differs\n"),
i),
1);
+
+ ACE_CDR::WChar *wstr1;
+ if (cdr.read_wstring (wstr1) == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("read_wstring2[%d] failed\n"),
+ i),
+ 1);
+ // zero length
+ ACE_Auto_Basic_Array_Ptr<ACE_CDR::WChar> auto_xwstr (wstr1);
+ if (ACE_OS::wslen(auto_xwstr.get () ))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("wstring[%d] differs\n"),
+ i),
+ 1);
}
return 0;
}