示例#1
0
int main()
	{
	void* client;
	int err;

	test_Title("Misc MSystemInterface functions");

	allTests();

	test_Next("Do it again using the CPosixServer (for them, not me)");
	close_console=1;

	start_posix_server();	/* calls SpawnPosixServer from C++ code */


	client=create_thread(allTests, "TMISC2 tests");
	test(client!=0);
	start_thread(client);
	err=wait_for_thread(client);
	test(err==0);

	test_Close();

	return 0;
	}
示例#2
0
void
TestFSFH_Run_IMP(TestFSFileHandle *self, TestBatchRunner *runner) {
    TestBatchRunner_Plan(runner, (TestBatch*)self, 46);
    test_open(runner);
    test_Read_Write(runner);
    test_Close(runner);
    test_Window(runner);
}
示例#3
0
void
TestInStream_Run_IMP(TestInStream *self, TestBatchRunner *runner) {
    TestBatchRunner_Plan(runner, (TestBatch*)self, 37);
    test_refill(runner);
    test_Clone_and_Reopen(runner);
    test_Close(runner);
    test_Seek_and_Tell(runner);
}
示例#4
0
void allTests()
	{
	environment();

	if (close_console)
		{
		test_Close();
		close(0);
		close(1);
		close(2);
		}
	}
示例#5
0
void
TestCFReader_Run_IMP(TestCompoundFileReader *self, TestBatchRunner *runner) {
    TestBatchRunner_Plan(runner, (TestBatch*)self, 48);
    S_init_strings();
    test_open(runner);
    test_Local_MkDir_and_Find_Folder(runner);
    test_Local_Delete_and_Exists(runner);
    test_Local_Open_Dir(runner);
    test_Local_Open_FileHandle(runner);
    test_Local_Open_In(runner);
    test_Close(runner);
    S_destroy_strings();
}
示例#6
0
int main()
	{
	int err;
	test_Title("AF_INET Streams");

	err=CommInit(0);	/* ensure a workable comms environment */
	test(err==0);
	IN_SET_LOOPBACK_ADDR(&testaddr);

	testSimple();

	test_Close();
	return 0;
	}
示例#7
0
void
TestRAMFolder_run(TestRAMFolder *self, TestBatchRunner *runner) {
    TestBatchRunner_Plan(runner, (TestBatch*)self, 98);
    S_init_strings();
    test_Initialize_and_Check(runner);
    test_Local_Exists(runner);
    test_Local_Is_Directory(runner);
    test_Local_Find_Folder(runner);
    test_Local_MkDir(runner);
    test_Local_Open_Dir(runner);
    test_Local_Open_FileHandle(runner);
    test_Local_Delete(runner);
    test_Rename(runner);
    test_Hard_Link(runner);
    test_Close(runner);
    S_destroy_strings();
}
示例#8
0
int main()
	{
	void* client;
	int err;

	test_Title("Directory Handling");

	allTests();

	test_Next("Do it again using the CPosixServer (for them, not me)");
	close_console=1;

	start_posix_server();	/* calls SpawnPosixServer from C++ code */

	client=create_thread(allTests, "TDIRS tests");
	test(client!=0);
	start_thread(client);
	err=wait_for_thread(client);
	test(err==0);

	CloseSTDLIB();
	test_Close();
	return 0;
	}
示例#9
0
void allTests()
	{
	int err=chdir("C:\\");
	test(err==0);

	make_tree();
	create_files();
	renaming();
	directory();
	attributes();
	searching();
	deletion();
	temporary_files();

	if (close_console)
		{
		test_Close();
		close(0);
		close(1);
		close(2);

		CloseSTDLIB();
		}
	}
示例#10
0
/**
@SYMTestCaseID          SYSLIB-STDLIB-CT-1081
@SYMTestCaseDesc	    Tests for multibyte to wide character conversions
@SYMTestPriority 	    High
@SYMTestActions  	    Tests for conversions from multibyte to wide character and wide character to multibyte
@SYMTestExpectedResults Test must not fail
@SYMREQ                 REQ0000
*/		
int main()
{


    int      i,x;
    char    *pmbc    = (char *)malloc(MB_CUR_MAX);
    wchar_t  wc      = L'a';
    wchar_t *pwcnull = NULL;
    wchar_t *pwc     = (wchar_t *)malloc( sizeof( wchar_t ) );

	char * narrowstring = (char*)malloc(50);
	wchar_t * pwcstring = (wchar_t *)malloc(sizeof(wchar_t)*50);

	wchar_t greek[] = {0x03a3, 0x03bf, 0x03bc, 0x03b4, 0x03b5, 0x0345, 0x03a9, 0x0392, 0x0395, 0x03a1, 0};
	

	
	test_Title("Wide/Multibyte character conversions.");
	
	test_Next("Convert a NULL wide character to multibyte character");
    i = wctomb( pmbc, L'\0');
    test(1==i);
    test(*pmbc=='\0');


	test_Next("Convert a wide character to multibyte character:");
    i = wctomb(pmbc, wc);
    test(i==1);
    test(*pmbc=='a');

    test_Next("Convert multibyte character back to a wide character");
    i = mbtowc(pwc, pmbc, 20);
    test(i==1);
    test(*pwc==L'a');

    //check this
	test_Next("Attempt to convert when target is NULL");
    i = mbtowc(pwcnull, pmbc, MB_CUR_MAX);
    test(i==1);

    test_Next( "Attempt to convert a NULL pointer to a wide character");
    pmbc = NULL;
    i = mbtowc( pwc, pmbc, MB_CUR_MAX );
    test(i==0);

	test_Next("Convert narrow string to unicode");
	strcpy(narrowstring, TELLME);
	i = mbstowcs(pwcstring, narrowstring, 50);
	test(i==(int)strlen(TELLME));		//should be same
	
	test_Next("Convert unicode string back to UTF8");
	i = wcstombs(narrowstring, pwcstring, 50);
	test(i==(int)strlen(TELLME));		//should be same
	test(strcmp(narrowstring, TELLME) == 0);	

	test_Next("Get length of dest string");
	i = wcstombs(NULL, pwcstring, 50);
//	test(i==strlen(TELLME));		//should be same
//	test(strcmp(narrowstring, TELLME) == 0);	

	
	test_Next("Convert first 10 wide characters");
	strcpy(narrowstring,"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
	i = wcstombs(narrowstring, pwcstring, 10);
	test(i==10);
	test(memcmp(narrowstring,TELLME,10)==0);


	test_Next("Convert greek characters to unicode and back");
	i = wcstombs(narrowstring, &greek[0], 50);
	x = i;
	i = mbstowcs(pwcstring, narrowstring, 50);
	test(2*i==x);
	test(0==memcmp(pwcstring, greek, sizeof(greek)));

	test_Next("onto mblen");
	i = mblen("abc",3);
	test(i==1);

	test_Next("length of a greek character");
	i = mblen(narrowstring,6);
	test (i==2);

	test_Next("test an empty string");
	i = mblen("",2);
	test(i==0);

	test_Next("test a null pointer");
	i = mblen(NULL,2);
	test(i==0);

	test_Next("test a failure");
	i = mblen(narrowstring,1);
	test(i==-1);
	
	
	free(pmbc);
	free(pwc);
	free(pwcstring);
	free(narrowstring);

	test_Close();
}
示例#11
0
int test_waitpid()
	{
	test_Data;
	void* proc;
	void* proc2;
	int ret;
	int status=-1;
	test_Title("WAITPID");
	test_Next("waitpid");
	proc = create_process(doafunc, "A", "rw", fids);
	if (proc)
		start_process(proc);
	else
		perror("Failed to start process A: ");
	
	// test return values of calls to waitpid with different options and pid's
	
	if (proc)
		{
		// test with option WNOHANG and a correct pid on an active process
		ret = wait_for_process_id(proc,get_proc_id(proc),WNOHANG,&status);
		test(ret==0);
		// test with an invalid pid 
		ret = wait_for_process_id(proc,99,0,&status);
		test(errno==ECHILD&&ret==-1);
		// test with invalid options
		ret = wait_for_process_id(proc,99,17,&status);
		test(errno==EINVAL&&ret==-1);
		ret = wait_for_process_id(proc,99,18,&status);
		test(errno==EINVAL&&ret==-1);
		// process is still active keep waiting until it dies
		do 
			{
			ret = wait_for_process_id(proc,get_proc_id(proc),WNOHANG,&status);
			}
		while(!WIFEXITED(status)&&ret==0);
		test(ret==get_proc_id(proc));
   		printf("child exited, status=%d\n", WEXITSTATUS(status));
		}

	// create another process and test waitpid with pid -1 and options 0
	// this is the same as calling wait
	proc2 = create_process(doafunc, "B", "rw", fids);
	if (proc2)
		start_process(proc2);
	else
		perror("Failed to start process B: ");
	if (proc2)
		{
		//wait for proc2 to finish
		do
			{
        	ret = wait_for_process_id(proc2,-1,0,&status);
    		}
    	while (!WIFEXITED(status));
		test(ret==get_proc_id(proc2));
    	printf("child exited, status=%d\n", WEXITSTATUS(status));
		}
		
	fflush(stdout);
	fclose(stdout);
	test_Close();
	return 0;
	}
示例#12
0
/**
@SYMTestCaseID          SYSLIB-STDLIB-CT-1073
@SYMTestCaseDesc	    Tests for ARPA net functions
@SYMTestPriority 	    High
@SYMTestActions  	    Tests for get host by name and host by address functions
@SYMTestExpectedResults Test must not fail
@SYMREQ                 REQ0000
*/
void testNetDB()
	{
	char hostname[128];
	struct in_addr addr, *addrp;
	int err, i;
	struct hostent *hp;

	test_Next("Get Host Name");

	err=gethostname(hostname,sizeof(hostname));
	test(err==0);
	printf("  hostname = >%s<\n", hostname);

	test_Next("Get Host By Name");

	for (i=0; i<N_NAMES; i++)
		{
		hp=gethostbyname(names[i][0]);
		test_ok(hp!=0);
		addrp=(struct in_addr*)(hp->h_addr_list[0]);
		printf("  %-30s => address %-15s\n", hp->h_name, inet_ntoa(*addrp));
		test(strcasecmp(hp->h_name,names[i][0])==0);
		test(addrp->s_addr==inet_addr(names[i][1]));
		}

	hp=gethostbyname("nosuchname.symbian.com");
	test_errno(hp==0,ENOENT);
	test(errno==HOST_NOT_FOUND);

	test_Next("Get Address of \"\"");
	hp=gethostbyname("");
	test_ok(hp!=0);
	addrp=(struct in_addr*)(hp->h_addr_list[0]);
	printf("  %-30s => address %-15s\n", hp->h_name, inet_ntoa(*addrp));

	test_Next("Get Host By Addr");

	for (i=0; i<N_NAMES; i++)
		{
		addr.s_addr=inet_addr(names[i][1]);
		hp=gethostbyaddr((const char *)&addr,sizeof(addr),AF_INET);
		test_ok(hp!=0);
		addrp=(struct in_addr*)(hp->h_addr_list[0]);
		printf("  address %-15s => %s\n", inet_ntoa(*addrp), hp->h_name);
		test(addrp->s_addr==addr.s_addr);
		test(strcasecmp(hp->h_name,names[i][2])==0);
		}

	addr.s_addr=inet_addr("10.11.199.255");
	hp=gethostbyaddr((const char *)&addr,sizeof(addr),AF_INET);
	test_errno(hp==0,ENOENT);
	test(errno==HOST_NOT_FOUND);
	
/*
	struct sockaddr_in testaddr;
	int fd;
	test_Next("Connect to the Imperial College Echo server");

	fd=socket(AF_INET, SOCK_STREAM, 0);
	test_ok(fd>=0);
	testaddr.sin_family=AF_INET;
	testaddr.sin_addr.s_addr=inet_addr("193.63.255.1");
	testaddr.sin_port=htons(7);	// echo
	err=connect(fd,(struct sockaddr*)&testaddr, sizeof(testaddr));
	test(err==0);
	close(fd);
*/

	test_Next("Get Address of roundrobin.test.intra which has multiple address");
	hp=gethostbyname("roundrobin.test.intra");	
	test_ok(hp!=0);

	if (hp)
		{
		if (hp->h_addr_list)
			{
			int Index = 0;
			while (hp->h_addr_list[Index])
				{
				addrp = (struct in_addr*)(hp->h_addr_list[Index]);
				printf("  %-30s => address %-15s\n", hp->h_name, inet_ntoa(*addrp));
				Index++;
				}
			}
		}

	test_Next("Get Host name of 192.168.255.4 which has multiple host name");
	addr.s_addr=inet_addr("192.168.255.4");
	hp=gethostbyaddr((const char *)&addr,sizeof(addr),AF_INET);
	test_ok(hp!=0);

	if (hp)
		{
		addrp=(struct in_addr*)(hp->h_addr_list[0]);
		printf("  address %-15s => %s\n", inet_ntoa(*addrp), hp->h_name);

		if (hp->h_aliases)
			{
			int Index = 0;
			while (hp->h_aliases[Index])
				{
				printf("  address %-15s => %s\n", inet_ntoa(*addrp), hp->h_aliases[Index]);
				Index++;
				}
			}
		}

	if (close_console)
		{
		test_Close();
		close(0);
		close(1);
		close(2);
		}
	}
示例#13
0
/**
@SYMTestCaseID          SYSLIB-STDLIB-CT-1092
@SYMTestCaseDesc	    Tests for operations on pipes
@SYMTestPriority 	    High
@SYMTestActions  	    Tests for command line arguments,directory operations,environment variables.
@SYMTestExpectedResults Test must not fail
@SYMREQ                 REQ0000
*/
int do_main(int argc, wchar_t* argv[])
{
    test_Data;
    int i;
    wchar_t* var;
    wchar_t* varname;
    wchar_t cwd[MAXPATHLEN];
    char buf[200];
    char buf1[200];

    test_Title("PIPE");

    test_Next("Command line arguments");
    test(argc>0);
    test(argv!=0);
    printf("  argc=%d\r\n", argc);
    for (i=0; i<argc; i++)
    {
        test(argv[i]!=0);
        test(-1 != wcstombs(buf, argv[i], sizeof(buf)));
        printf("  argv[%d]=\"%s\" length %d\r\n", i, buf, strlen(buf));
    }
    printf("\r\n");

    test_Next("Current working directory");
    var=wgetcwd(cwd,sizeof(cwd)/2);
    test(var==cwd);
    test(-1 != wcstombs(buf, cwd, sizeof(buf)));
    printf("  %s\r\n\n", buf);

    test_Next("Change directory");
    i=wchdir((wchar_t*)L"z:/system");
    test(i==0);
    var=wgetcwd(cwd,sizeof(cwd)/2);
    test(var==cwd);
    test(-1 != wcstombs(buf, cwd, sizeof(buf)));
    printf("  %s\r\n\n", buf);

    test_Next("Environment variables");

    varname=(wchar_t*)L"CLASSPATH";
    var=wgetenv(varname);
    test(var!=0);
    test(-1 != wcstombs(buf, var, sizeof(buf)));
    test(-1 != wcstombs(buf1, varname, sizeof(buf1)));
    printf("  %s=%s\r\n", buf1, buf);

    varname=(wchar_t*)"VARIABLE2";
    var=wgetenv(varname);
    if (var!=0)
    {
        test(-1 != wcstombs(buf, var, sizeof(buf)));
        test(-1 != wcstombs(buf1, varname, sizeof(buf1)));
        printf("  %s=%s\r\n", buf1, buf);
        wunsetenv((wchar_t*)"VARIABLE2");
    }

    varname=(wchar_t*)L"USER";
    var=wgetenv(varname);
    test(var!=0);
    test(-1 != wcstombs(buf, var, sizeof(buf)));
    test(-1 != wcstombs(buf1, varname, sizeof(buf1)));
    printf("  %s=%s\r\n", buf1, buf);

    sleep(5);

    test_Close();
    return 0;
}
示例#14
0
/**
@SYMTestCaseID          SYSLIB-STDLIB-CT-1094
@SYMTestCaseDesc	    Tests for pipe file descriptors
@SYMTestPriority 	    High
@SYMTestActions  	    Tests for writing to the pipe file descriptors
@SYMTestExpectedResults Test must not fail
@SYMREQ                 REQ0000
*/
void do_piping()
{
    test_Data;
    char* s;
    char buf[180];

    test_Title("PIPE");

    test_Next("Pipe file descriptors");
    printf("  fids= %d, %d, %d\n", fids[0], fids[1], fids[2]);

    if (fids[0]>=0)
    {
        int nbytes;
        int remainder;
        int mask, err;
        const char* buf="test data 18 bytes";

        test_Next("E32IOSELECT(READ) on Child STDIN");
        mask=E32SELECT_READ;
        err=ioctl(fids[0],E32IOSELECT,(void*)&mask);
        test(err==0);
        test(mask==0);
        test_Next("E32IOSELECT(WRITE) on Child STDIN");
        mask=E32SELECT_READ+E32SELECT_WRITE;
        err=ioctl(fids[0],E32IOSELECT,(void*)&mask);
        test(err==0);
        test(mask==E32SELECT_WRITE);

        test_Next("Child STDIN");
        remainder=strlen(buf);
        while (remainder>0)
        {
            int length=(remainder<7)?remainder:7;
            nbytes=write(fids[0],buf,length);
            printf("  >%.*s<",nbytes,buf);
            buf+=nbytes;
            remainder-=nbytes;
            test(nbytes>0);
            test(nbytes<=length);
        }
        printf("\n");
        close(fids[0]);
        sleep(5);
    }
    if (fids[1]>=0)
    {
        FILE* cout;
        int mask, err;
        int firstread=1;

        test_Next("Child STDOUT");
        cout=wfdopen(fids[1],(wchar_t*)L"r");
        test(cout!=0);

        do
        {
            s=fgets(buf,sizeof(buf),cout);
            if (s!=0)
            {
                printf("  >%s", s);
                if (firstread)
                {
                    test_Next("\nE32IOSELECT(WRITE) on Child STDOUT");
                    mask=E32SELECT_WRITE;
                    err=ioctl(fids[1],E32IOSELECT,(void*)&mask);
                    test(err==0);
                    test(mask==0);
                    test_Next("E32IOSELECT(READ) on Child STDOUT");
                    mask=E32SELECT_READ+E32SELECT_WRITE;
                    err=ioctl(fids[1],E32IOSELECT,(void*)&mask);
                    test(err==0);
                    test(mask==E32SELECT_READ);
                    firstread=0;
                }
            }
        }
        while (s!=0);
        fclose(cout);
    }

    test_Close();
}