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; }
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); }
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); }
void allTests() { environment(); if (close_console) { test_Close(); close(0); close(1); close(2); } }
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(); }
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; }
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(); }
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; }
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(); } }
/** @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(); }
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; }
/** @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); } }
/** @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; }
/** @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(); }