2011-07-01 02:17:37 +04:00
|
|
|
/**
|
|
|
|
* FreeRDP: A Remote Desktop Protocol Client
|
|
|
|
* FreeRDP Unit Tests
|
|
|
|
*
|
|
|
|
* Copyright 2010 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
2011-07-05 01:05:58 +04:00
|
|
|
#include <CUnit/Basic.h>
|
2011-07-01 02:17:37 +04:00
|
|
|
|
2011-07-05 01:05:58 +04:00
|
|
|
#include "test_per.h"
|
|
|
|
#include "test_ber.h"
|
2011-07-05 03:13:01 +04:00
|
|
|
#include "test_gcc.h"
|
2011-07-07 23:51:23 +04:00
|
|
|
#include "test_mcs.h"
|
2011-07-01 02:17:37 +04:00
|
|
|
#include "test_color.h"
|
2011-07-10 08:24:09 +04:00
|
|
|
#include "test_bitmap.h"
|
2011-07-01 02:17:37 +04:00
|
|
|
#include "test_libgdi.h"
|
2011-07-07 20:51:24 +04:00
|
|
|
#include "test_list.h"
|
2011-07-02 21:58:23 +04:00
|
|
|
#include "test_stream.h"
|
2011-07-08 07:26:38 +04:00
|
|
|
#include "test_utils.h"
|
2011-08-04 03:15:37 +04:00
|
|
|
#include "test_orders.h"
|
2011-07-13 19:40:19 +04:00
|
|
|
#include "test_license.h"
|
2011-10-16 22:57:15 +04:00
|
|
|
#include "test_channels.h"
|
2011-07-12 13:06:14 +04:00
|
|
|
#include "test_cliprdr.h"
|
2011-07-19 10:07:15 +04:00
|
|
|
#include "test_drdynvc.h"
|
2011-08-10 11:13:39 +04:00
|
|
|
#include "test_librfx.h"
|
2011-07-01 02:17:37 +04:00
|
|
|
#include "test_freerdp.h"
|
2011-08-21 05:15:30 +04:00
|
|
|
#include "test_rail.h"
|
2011-08-27 02:36:35 +04:00
|
|
|
#include "test_pcap.h"
|
2011-09-02 08:20:08 +04:00
|
|
|
#include "test_mppc.h"
|
2011-07-01 02:17:37 +04:00
|
|
|
|
|
|
|
void dump_data(unsigned char * p, int len, int width, char* name)
|
|
|
|
{
|
|
|
|
unsigned char *line = p;
|
|
|
|
int i, thisline, offset = 0;
|
|
|
|
|
|
|
|
printf("\n%s[%d][%d]:\n", name, len / width, width);
|
|
|
|
while (offset < len)
|
|
|
|
{
|
|
|
|
printf("%04x ", offset);
|
|
|
|
thisline = len - offset;
|
|
|
|
if (thisline > width)
|
|
|
|
thisline = width;
|
|
|
|
|
|
|
|
for (i = 0; i < thisline; i++)
|
|
|
|
printf("%02x ", line[i]);
|
|
|
|
|
|
|
|
for (; i < width; i++)
|
|
|
|
printf(" ");
|
|
|
|
|
|
|
|
printf("\n");
|
|
|
|
offset += thisline;
|
|
|
|
line += thisline;
|
|
|
|
}
|
|
|
|
printf("\n");
|
|
|
|
}
|
|
|
|
|
2011-07-05 01:05:58 +04:00
|
|
|
void assert_stream(STREAM* s, uint8* data, int length, const char* func, int line)
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
int actual_length;
|
|
|
|
uint8* actual_data;
|
|
|
|
|
2011-07-06 07:18:00 +04:00
|
|
|
actual_data = s->data;
|
2011-07-05 01:05:58 +04:00
|
|
|
actual_length = stream_get_length(s);
|
|
|
|
|
|
|
|
if (actual_length != length)
|
|
|
|
{
|
2011-07-05 03:13:01 +04:00
|
|
|
printf("\n %s (%d): length mismatch, actual:%d, expected:%d\n", func, line, actual_length, length);
|
|
|
|
|
|
|
|
printf("\nActual:\n");
|
|
|
|
freerdp_hexdump(actual_data, actual_length);
|
|
|
|
|
|
|
|
printf("Expected:\n");
|
|
|
|
freerdp_hexdump(data, length);
|
|
|
|
|
2011-07-05 01:05:58 +04:00
|
|
|
CU_FAIL("assert_stream, length mismatch");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (i = 0; i < length; i++)
|
|
|
|
{
|
|
|
|
if (actual_data[i] != data[i])
|
|
|
|
{
|
|
|
|
printf("\n %s (%d): buffer mismatch:\n", func, line);
|
|
|
|
|
|
|
|
printf("\nActual:\n");
|
|
|
|
freerdp_hexdump(actual_data, length);
|
|
|
|
|
|
|
|
printf("Expected:\n");
|
|
|
|
freerdp_hexdump(data, length);
|
|
|
|
|
|
|
|
CU_FAIL("assert_stream, buffer mismatch");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-07-01 02:17:37 +04:00
|
|
|
int main(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
int index = 1;
|
|
|
|
int *pindex = &index;
|
2011-07-26 05:50:07 +04:00
|
|
|
int ret = 0;
|
2011-07-01 02:17:37 +04:00
|
|
|
|
|
|
|
if (CU_initialize_registry() != CUE_SUCCESS)
|
|
|
|
return CU_get_error();
|
|
|
|
|
|
|
|
if (argc < *pindex + 1)
|
|
|
|
{
|
2011-07-05 01:05:58 +04:00
|
|
|
add_per_suite();
|
|
|
|
add_ber_suite();
|
2011-07-07 23:51:23 +04:00
|
|
|
add_gcc_suite();
|
|
|
|
add_mcs_suite();
|
2011-07-01 02:17:37 +04:00
|
|
|
add_color_suite();
|
2011-07-10 08:24:09 +04:00
|
|
|
add_bitmap_suite();
|
2011-07-01 02:17:37 +04:00
|
|
|
add_libgdi_suite();
|
2011-07-07 20:51:24 +04:00
|
|
|
add_list_suite();
|
2011-08-04 03:15:37 +04:00
|
|
|
add_orders_suite();
|
2011-07-13 19:40:19 +04:00
|
|
|
add_license_suite();
|
2011-07-02 21:58:23 +04:00
|
|
|
add_stream_suite();
|
2011-09-02 08:20:08 +04:00
|
|
|
add_mppc_suite();
|
2011-07-01 02:17:37 +04:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
while (*pindex < argc)
|
|
|
|
{
|
2011-08-21 05:15:30 +04:00
|
|
|
if (strcmp("rail", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_rail_suite();
|
|
|
|
}
|
2011-07-01 02:17:37 +04:00
|
|
|
if (strcmp("color", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_color_suite();
|
|
|
|
}
|
2011-07-10 08:24:09 +04:00
|
|
|
if (strcmp("bitmap", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_bitmap_suite();
|
|
|
|
}
|
2011-07-01 02:17:37 +04:00
|
|
|
else if (strcmp("libgdi", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_libgdi_suite();
|
|
|
|
}
|
2011-07-07 20:51:24 +04:00
|
|
|
else if (strcmp("list", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_list_suite();
|
|
|
|
}
|
2011-08-04 03:15:37 +04:00
|
|
|
else if (strcmp("orders", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_orders_suite();
|
|
|
|
}
|
2011-07-13 19:40:19 +04:00
|
|
|
else if (strcmp("license", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_license_suite();
|
|
|
|
}
|
2011-07-02 21:58:23 +04:00
|
|
|
else if (strcmp("stream", argv[*pindex]) == 0)
|
2011-07-02 19:39:35 +04:00
|
|
|
{
|
2011-07-02 21:58:23 +04:00
|
|
|
add_stream_suite();
|
2011-07-02 19:39:35 +04:00
|
|
|
}
|
2011-07-08 07:26:38 +04:00
|
|
|
else if (strcmp("utils", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_utils_suite();
|
|
|
|
}
|
2011-07-08 17:57:01 +04:00
|
|
|
else if (strcmp("chanman", argv[*pindex]) == 0)
|
|
|
|
{
|
2011-07-28 19:09:51 +04:00
|
|
|
add_chanman_suite();
|
2011-07-08 17:57:01 +04:00
|
|
|
}
|
2011-07-12 13:06:14 +04:00
|
|
|
else if (strcmp("cliprdr", argv[*pindex]) == 0)
|
|
|
|
{
|
2011-07-28 19:09:51 +04:00
|
|
|
add_cliprdr_suite();
|
2011-07-12 13:06:14 +04:00
|
|
|
}
|
2011-07-19 10:07:15 +04:00
|
|
|
else if (strcmp("drdynvc", argv[*pindex]) == 0)
|
|
|
|
{
|
2011-07-28 19:09:51 +04:00
|
|
|
add_drdynvc_suite();
|
2011-07-19 10:07:15 +04:00
|
|
|
}
|
2011-08-10 11:13:39 +04:00
|
|
|
else if (strcmp("librfx", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_librfx_suite();
|
|
|
|
}
|
2011-07-05 01:05:58 +04:00
|
|
|
else if (strcmp("per", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_per_suite();
|
|
|
|
}
|
2011-08-27 02:36:35 +04:00
|
|
|
else if (strcmp("pcap", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_pcap_suite();
|
|
|
|
}
|
2011-07-05 01:05:58 +04:00
|
|
|
else if (strcmp("ber", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_ber_suite();
|
|
|
|
}
|
2011-07-05 03:13:01 +04:00
|
|
|
else if (strcmp("gcc", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_gcc_suite();
|
|
|
|
}
|
2011-07-07 23:51:23 +04:00
|
|
|
else if (strcmp("mcs", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_mcs_suite();
|
|
|
|
}
|
2011-09-02 08:20:08 +04:00
|
|
|
else if (strcmp("mppc", argv[*pindex]) == 0)
|
|
|
|
{
|
|
|
|
add_mppc_suite();
|
|
|
|
}
|
2011-07-01 02:17:37 +04:00
|
|
|
|
|
|
|
*pindex = *pindex + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
CU_basic_set_mode(CU_BRM_VERBOSE);
|
|
|
|
CU_basic_run_tests();
|
2011-07-26 05:50:07 +04:00
|
|
|
ret = CU_get_number_of_failure_records();
|
2011-07-01 02:17:37 +04:00
|
|
|
CU_cleanup_registry();
|
|
|
|
|
2011-07-26 05:50:07 +04:00
|
|
|
return ret;
|
2011-07-01 02:17:37 +04:00
|
|
|
}
|
|
|
|
|