view resources/tests/UdpClientUdpServerTest.cpp @ 44:f5b5c648cd5d ultra-staging

- added (unused) simple c++ classes for udp datagrams\n- added tests for the new classes
author Giulio Moro <giuliomoro@yahoo.it>
date Wed, 20 May 2015 18:07:16 +0100
parents
children 6907e2177eb8
line wrap: on
line source
#include "../../include/UdpServer.h"
#include "../../include/UdpClient.h"
#include <unistd.h>

int test1(UdpServer *server, UdpClient *client){
	int buffer;
	int tot=100;
	int errors=0;
	for(int n=0; n<tot; n++)
		client->send(&n,sizeof(int));
	for(int n=0; n<tot; n++){
		server->read(&buffer,sizeof(int));
		if(n!=buffer){
			printf("error: %d!=%d\n",n,buffer);
			errors++;
		}
	}
	int n=server->emptySocket();
	if(n!=0)
		printf("Error: the socket had %d bytes",n);
	return errors;
}
int compareStrings(char * str1, char * str2){
	if(strlen(str1)!=strlen(str2))
		return -1;
	for(int n=0; n<strlen(str1); n++){
		if(str1[n]!=str2[n])
			return -1;
	}
	return 0;
}

int test2(UdpServer *server, UdpClient *client){
	char buffer[1000];
	int tot=100;
	int errors=0;
	for(int n=0; n<tot; n++){
		int num=sprintf(buffer,"%08.8f",n/1000.0);
		client->send(&buffer,sizeof(char)*(num+1));
	}
	char auxBuffer[100];
	for(int n=0; n<tot; n++){
		int num=sprintf(auxBuffer,"%08.8f",n/1000.0);
		server->read(&buffer,num*sizeof(char));
		if(compareStrings(auxBuffer,buffer)==-1){
			printf("error: %s!=%s\n",auxBuffer,buffer);
			errors++;
		}
	}

	return errors;
}

int test3(UdpServer *server, UdpClient *client){
	char buffer[1000];
	int tot=100;
	int errors=0;
    int totNum=0;
	for(int n=0; n<tot; n++){
		int num=sprintf(buffer,"%.8f",n/1000.0);
		client->send(&buffer,sizeof(char)*(num+1));
        totNum+=1+num;
	}
    int n=server->emptySocket();
    if(n!=totNum){
        errors=1;
        printf("retrieved bytes differs from sent bytes: %d!=%d\n",n,totNum);
    }
	return errors;
}


int main(){
    int port=1234;
	UdpServer server(port);
	UdpClient client(port,"127.0.0.1");
	int errors=0;
	int ret;
	ret=test1(&server,&client);
	errors+=ret;
	if(ret)
		printf("test1 failed with %d errors\n", ret);
	else
		printf("test1 passed\n");

	ret=test2(&server,&client);
	errors+=ret;
	if(ret)
		printf("test2 failed with %d errors\n", ret);
	else
		printf("test2 passed\n");

	ret=test3(&server,&client);
	errors+=ret;
	if(ret)
		printf("test3 failed with %d errors\n", ret);
	else
		printf("test3 passed\n");

	return errors;
}