1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
//=============================================================================
/**
* @file Codecs_Test.cpp
*
* $Id: Codecs_Test.cpp 93638 2011-03-24 13:16:05Z johnnyw $
*
* Checks the functionality of the ACE Codecs class.
*
*
* @author Krishnakumar B <kitty@cs.wustl.edu>
*/
//=============================================================================
#include "test_config.h"
#include "ace/Codecs.h"
#include "ace/Auto_Ptr.h"
#include "ace/ACE.h"
// Don't change the strings thinking that they are typos
const ACE_Byte normal_stream[] = "This is a sample test stream, to test simple Base64 encoding";
const ACE_Byte one_padded_stream[] = "This stream is different from the above in that, it results in one padding character to be adde";
const ACE_Byte two_padded_stream[] = "This stream is different from the above in that, it results in two padding characters to be addedddd";
int
encode_decode_stream (const ACE_Byte* stream, size_t length)
{
size_t encode_len = 0;
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("Input stream = %C\n"),
stream));
ACE_Byte* encodeBuf = ACE_Base64::encode (stream, length,
&encode_len);
if (encodeBuf == 0)
{
ACE_ERROR ((LM_ERROR, ACE_TEXT ("Error in encoding stream\n")));
return -1;
}
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("Base64 encoded stream = %C\n"),
encodeBuf));
ACE_Auto_Basic_Array_Ptr<ACE_Byte> cleanup_encodeBuf (encodeBuf);
size_t decode_len = 0;
ACE_Byte* decodeBuf = ACE_Base64::decode (encodeBuf, &decode_len);
if (decodeBuf == 0)
{
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("Error in decoding encoded stream\n")));
return -1;
}
ACE_Auto_Basic_Array_Ptr<ACE_Byte> cleanup_decodeBuf (decodeBuf);
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("Decoded Base64 encoded stream = %C\n"),
decodeBuf));
for (size_t i = 0; i < length; ++i)
if (decodeBuf[i] != stream[i])
{
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("Encoded->Decoded stream differs from original stream\n")));
return -1;
}
return 0;
}
int
run_main (int argc, ACE_TCHAR *argv[])
{
ACE_UNUSED_ARG (argc);
ACE_UNUSED_ARG (argv);
ACE_START_TEST (ACE_TEXT ("Codecs_Test"));
int status = 0;
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("This is ACE Version %u.%u.%u\n\n"),
ACE::major_version (),
ACE::minor_version(),
ACE::beta_version()));
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("Testing ACE Base64 - normal stream\n\n")));
status = encode_decode_stream (normal_stream, sizeof (normal_stream) - 1);
if (status == 0) {
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("Testing ACE Base64 - one padded stream\n\n")));
status = encode_decode_stream (one_padded_stream,
sizeof (one_padded_stream) - 1);
}
if (status == 0) {
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("Testing ACE Base64 - two padded stream\n\n")));
status = encode_decode_stream (two_padded_stream,
sizeof (two_padded_stream) - 1);
}
ACE_END_TEST;
return status;
}
|