genericopenlibs/openenvcore/libc/test/testwideapis/src/twideapisblocks.cpp
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericopenlibs/openenvcore/libc/test/testwideapis/src/twideapisblocks.cpp	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,846 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Name        : twideapisBlocks.cpp
+// This material, including documentation and any related 
+// computer programs, is protected by copyright controlled by 
+// Nokia Corporation. All rights are reserved. Copying, 
+// including reproducing, storing,  adapting or translating, any 
+// or all of this material requires the prior written consent of 
+// Nokia Corporation. This material also contains confidential 
+// information which may not be disclosed to others without the 
+// prior written consent of Nokia Corporation.
+//
+
+
+
+// INCLUDE FILES
+#include "twideapis.h"
+
+// -----------------------------------------------------------------------------
+//Function Name : wfdopen_ivalm
+//API Tested : wfdopen
+//TestCase Description: testing the behaviour of wfdopen for invalid modes 
+// initialized to NULL.
+// -----------------------------------------------------------------------------  
+
+TInt CTestWideApi::wfdopen_ivalm()
+	{
+	TPtrC nameRead;
+	_LIT( KString, "Parameter1" );	    	
+	TBool res = GetStringFromConfig(ConfigSection(), KString, nameRead);
+	if(!res)
+		{
+		_LIT(Kerr , "Failed to read string") ;
+		INFO_PRINTF1(Kerr) ;
+		return KErrGeneral ;
+		}	
+	int ret_wmkdir = wmkdir(L"C:\\ggg" , S_IWUSR);
+	if((errno == EEXIST) || (!ret_wmkdir))
+		{
+		TBuf8<100> buf;
+	
+		int wfd;
+		buf.Copy(nameRead);
+		char* filemode = (char*) buf.Ptr();
+		filemode[buf.Length()]='\0';
+		wchar_t *dmode = (wchar_t *)malloc(30*sizeof(wchar_t));
+		if(dmode==NULL)
+			{
+			wrmdir(L"C:\\ggg");        								
+			return KErrNoMemory;							
+			}						
+		size_t siz = mbstowcs(dmode, filemode, 30);
+		wunlink(L"C:\\ggg\\lll.txt");
+		if((wfd=wopen(L"C:\\ggg\\lll.txt", O_WRONLY | O_CREAT | O_TRUNC, 0777))<0)
+	        {
+        	_LIT(Kopen,"Failed to open file");
+			INFO_PRINTF1(Kopen);
+			wrmdir(L"C:\\ggg");      
+			free(dmode) ;
+			return KErrGeneral;
+	        }
+        else
+	        {
+	         FILE *fp =wfdopen(wfd ,dmode);
+        	 if(NULL == fp)    	
+        	 	{
+	    	 	_LIT(Kopen,"wfdopen failed");
+				INFO_PRINTF1(Kopen);
+				close(wfd);
+				wunlink(L"C:\\ggg\\lll.txt");
+				wrmdir(L"C:\\ggg"); 
+				free(dmode) ;     		
+				return KErrNone;
+        	 	}
+        	 else
+        	    { 
+    	    	wunlink(L"C:\\ggg\\lll.txt");
+   				wrmdir(L"C:\\ggg");
+   				free(dmode) ;
+    	    	return KErrGeneral;
+        	    }        	 	
+    	    }      
+      	}
+	else
+		{
+	  	_LIT(Kerr , "Failed to make dir") ;
+		INFO_PRINTF1(Kerr) ;
+		wunlink(L"C:\\ggg\\lll.txt");
+   		wrmdir(L"C:\\ggg");
+		return KErrGeneral ;
+		}
+	}
+	
+	
+// -----------------------------------------------------------------------------
+//Function Name : wfdopen_val
+//API Tested : wfdopen
+//TestCase Description: testing the behaviour of wfdopen for valid arguments
+// initialized to NULL.
+// -----------------------------------------------------------------------------  
+TInt CTestWideApi::wfdopen_val()
+	{
+	TPtrC nameRead;
+	wchar_t *pathName = NULL;
+	_LIT( KString, "Parameter1" );	    	
+	TBool res = GetStringFromConfig(ConfigSection(), KString, nameRead);
+	if(!res)
+		{
+		_LIT(Kerr , "Failed to read string") ;
+		INFO_PRINTF1(Kerr) ;
+		return KErrGeneral ;
+		}		
+	int ret_wmkdir = wmkdir(L"C:\\ggg" , S_IWUSR);
+	if((errno == EEXIST) || (!ret_wmkdir))
+		{
+		TBuf8<100> buf;	
+		int wfd;
+		FILE *fp;
+		buf.Copy(nameRead);
+		char* filename = (char*) buf.Ptr();
+		filename[buf.Length()]='\0';
+		pathName = (wchar_t *)malloc(30*sizeof(wchar_t));
+		if(pathName==NULL)
+			{
+			wrmdir(L"C:\\ggg");        								
+			return KErrNoMemory;							
+			}						
+		size_t siz = mbstowcs(pathName, filename, 30);
+		wunlink(pathName) ;
+        if((wfd=wopen(pathName, O_WRONLY | O_CREAT | O_TRUNC, 0666))<0)
+	        {
+        	_LIT(Kopen,"Failed to open file");
+			INFO_PRINTF1(Kopen);
+			wrmdir(L"C:\\ggg"); 
+			free(pathName);       		
+			return KErrGeneral;
+	        }
+        else
+	        {
+        	 if(NULL == (fp =wfdopen(wfd ,L"w")))    	
+        	 	{
+        	 	_LIT(Kopen,"wfdopen failed");
+				INFO_PRINTF1(Kopen);
+				wrmdir(L"C:\\ggg"); 
+				free(pathName);       		
+				return KErrGeneral;
+        	 	}
+        	 char *buffer="Writing to the file";
+        	 size_t size=strlen(buffer);        	 
+        	 if(size!=(fwrite(buffer,1,size,fp)))
+        	 	{
+        	 	_LIT(Kopen,"fwrite failed");
+				INFO_PRINTF1(Kopen);
+				wrmdir(L"C:\\ggg");    
+				free(pathName);    		
+				return KErrGeneral;
+        	 	}        	 	
+    	    }
+       fclose(fp);
+       wunlink(pathName);
+       wrmdir(L"C:\\ggg");
+       free(pathName);        		
+	   return KErrNone;
+	    }
+	else
+		{
+	  	_LIT(Kerr , "Failed to make dir") ;
+		INFO_PRINTF1(Kerr) ;
+		wrmdir(L"C:\\ggg");
+		return KErrGeneral ;
+		}
+	}
+	
+TInt CTestWideApi::wfdopen_ivalm1()
+	{
+	int wfd;
+	int ret_wmkdir = wmkdir(L"C:\\ggg" , S_IWUSR);
+	if(ret_wmkdir)
+		{
+	  	_LIT(Kerr , "Failed to make dir") ;
+		INFO_PRINTF1(Kerr) ;
+		return KErrGeneral ;		
+		}				
+	if((wfd=wopen(L"C:\\ggg\\lll.txt", O_WRONLY | O_CREAT | O_TRUNC, 0777))<0)
+		{
+	   	_LIT(Kopen,"Failed to open file");
+		INFO_PRINTF1(Kopen);
+		wrmdir(L"C:\\ggg");        		
+		return KErrGeneral;
+	    }
+    FILE *fp =wfdopen(wfd ,NULL);
+    if(NULL != fp)    	   
+	    {
+	 	wunlink(L"C:\\ggg\\lll.txt");
+	   	wrmdir(L"C:\\ggg");
+	   	return KErrGeneral;    	
+	    }
+	close(wfd);
+    wunlink(L"C:\\ggg\\lll.txt");
+	wrmdir(L"C:\\ggg");
+    return KErrNone;  
+	}
+
+
+// -----------------------------------------------------------------------------
+//Function Name : wfreopen_valm
+//API Tested : wfreopen
+//TestCase Description: testing the behaviour of wfreopen for different modes
+// initialized to NULL.
+// -----------------------------------------------------------------------------  
+TInt CTestWideApi::wfreopen_valm() 
+	{
+	TPtrC nameRead;
+	_LIT( KString, "Parameter1" );	    	
+	TBool res = GetStringFromConfig(ConfigSection(), KString, nameRead);
+	if(!res)
+		{
+		_LIT(Kerr , "Failed to read string") ;
+		INFO_PRINTF1(Kerr) ;
+		return KErrGeneral ;
+		}
+   int ret_wmkdir = wmkdir(L"C:\\ggg" , S_IWUSR);
+   if((errno == EEXIST) || (!ret_wmkdir))
+		{
+		TBuf8<100> buf;
+	
+		FILE *fp;
+		buf.Copy(nameRead);
+		char* filename = (char*) buf.Ptr();
+		filename[buf.Length()]='\0';
+		wchar_t *pathName = (wchar_t *)malloc(30*sizeof(wchar_t));
+		if(pathName==NULL)
+			{
+			wrmdir(L"C:\\ggg");        								
+			return KErrNoMemory;							
+			}						
+		size_t siz = mbstowcs(pathName, filename, 30);
+		wunlink(pathName) ;       
+        if((fp=wfreopen(pathName ,L"w+",stdout))==NULL) 
+			{
+			_LIT(Kropen , " Failed to reopen file " ) ;
+			INFO_PRINTF1(Kropen) ;
+			wrmdir(L"C:\\ggg");
+			free(pathName);     		
+			return KErrGeneral;
+			}
+        else
+        	{
+           int j=printf("Output Redirected to file now");
+           long i=ftell(fp);
+           if(i!=j)
+        	  	{
+        	 	fclose(fp);	 			        	 
+        	 	wunlink(pathName);
+        	 	wrmdir(L"C:\\ggg");
+        	 	free(pathName);     	 			        	 	 			        	 	
+    	     	return KErrGeneral;	 			        	 
+        	 	}
+        	 fclose(fp);	 			        	 
+        	 wunlink(pathName);
+        	 wrmdir(L"C:\\ggg"); 
+        	 free(pathName);    	 			        	 	 			        	 	       		
+        	 return KErrNone;
+        	}
+		}
+	else
+		{
+	  	_LIT(Kerr , "Failed to make dir") ;
+		INFO_PRINTF1(Kerr) ;
+		return KErrGeneral ;
+		}
+	}
+
+// -----------------------------------------------------------------------------
+//Function Name : wfreopen_val
+//API Tested : wfreopen
+//TestCase Description: testing the behaviour of wfreopen for valid arguments
+// initialized to NULL.
+// -----------------------------------------------------------------------------    
+    
+TInt CTestWideApi::wfreopen_val()
+	{
+	TPtrC nameRead;
+	_LIT( KString, "Parameter1" );
+	TBool res = GetStringFromConfig(ConfigSection(), KString, nameRead);
+	if(!res)
+		{
+		_LIT(Kerr , "Failed to read string") ;
+		INFO_PRINTF1(Kerr) ;
+		return KErrGeneral ;
+		}
+    int ret_wmkdir = wmkdir(L"C:\\ggg" , S_IWUSR);
+	if((errno == EEXIST) || (!ret_wmkdir))
+		{
+		TBuf8<100> buf;	
+		int wfd;
+		FILE *fp;
+		buf.Copy(nameRead);
+		char c = 'z';
+		char* filename = (char*) buf.Ptr();
+		filename[buf.Length()]='\0';
+		wchar_t *pathName = (wchar_t *)malloc(30*sizeof(wchar_t));
+		if(pathName==NULL)
+			{
+			wrmdir(L"C:\\ggg");        								
+			return KErrNoMemory;							
+			}							
+		size_t siz = mbstowcs(pathName, filename, 30);
+		wunlink(pathName) ;
+        if((wfd=wopen(pathName, O_WRONLY | O_CREAT | O_TRUNC, 0666))<0)
+        	{
+        	_LIT(Kopen,"Failed to open file");
+			INFO_PRINTF1(Kopen);
+			wrmdir(L"C:\\ggg");  
+			free(pathName);      		
+			return KErrGeneral;
+        	}
+        else
+        	{
+             write(wfd,&c,1); 	
+        	}
+        close(wfd);
+        if((fp=wfreopen(pathName ,L"r",stdin))==NULL) 
+			{
+			_LIT(Kropen , " Failed to reopen file " ) ;
+			INFO_PRINTF1(Kropen) ;
+			wrmdir(L"C:\\ggg");  
+			free(pathName);       		
+			return KErrGeneral;
+			}
+     	char * filen="C:\\tem.txt";
+     	unlink(filen);
+     	int fd=open(filen, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+		if(fd<0)
+			{
+			_LIT(Kopen,"Failed to open file");
+			INFO_PRINTF1(Kopen);
+			wrmdir(L"C:\\ggg");        		
+			free(pathName); 
+			return KErrGeneral  ;
+			}
+		else
+			{
+		   	write(fd,&c,1);
+			}
+		close(fd); 
+	    fclose(fp); 
+	    unlink(filen);
+		wunlink(pathName);	
+		wrmdir(L"C:\\ggg");  
+		free(pathName);       		
+        return KErrNone ;
+	    }
+	else
+		{
+	  	_LIT(Kerr , "Failed to make dir") ;
+		INFO_PRINTF1(Kerr) ;
+		return KErrGeneral ;
+		}
+	}
+	
+
+
+// -----------------------------------------------------------------------------
+//Function Name : wfreopen_valinv
+//API Tested : wfreopen
+//TestCase Description: testing the behaviour of wfreopen for invalid filename
+// initialized to NULL.
+// -----------------------------------------------------------------------------  
+
+
+TInt CTestWideApi::wfreopen_valinv()
+	{
+	TPtrC nameRead;	
+	_LIT( KString, "Parameter1" );	    	
+	TBool res = GetStringFromConfig(ConfigSection(), KString, nameRead);
+	if(!res)
+		{
+		_LIT(Kerr , "Failed to read string") ;
+		INFO_PRINTF1(Kerr) ;
+		return KErrGeneral ;
+		}	
+	int ret_wmkdir = wmkdir(L"C:\\ggg" , S_IWUSR);
+	if((errno == EEXIST) || (!ret_wmkdir))
+		{
+		TBuf8<100> buf;	   				
+		buf.Copy(nameRead);
+		char* filename = (char*) buf.Ptr();
+		filename[buf.Length()]='\0';
+		wchar_t *pathName = (wchar_t *)malloc(30*sizeof(wchar_t));
+		if(pathName==NULL)
+			{
+			wrmdir(L"C:\\ggg");        								
+			return KErrNoMemory;							
+			}						
+		size_t siz = mbstowcs(pathName, filename, 30);
+		wunlink(pathName) ;
+        FILE *fp = wfreopen(pathName ,L"w",stdout);
+        if(fp == NULL) 
+			{
+			_LIT(Kropen , " Failed to reopen file " ) ;
+			INFO_PRINTF1(Kropen) ;
+			wrmdir(L"C:\\ggg");        		
+			free(pathName);
+			return KErrNone;
+			}
+        else
+        	{
+    		wrmdir(L"C:\\ggg");  
+    		free(pathName);
+    		return KErrGeneral;
+        	}
+		}
+	else
+		{
+	  	_LIT(Kerr , "Failed to make dir") ;
+		INFO_PRINTF1(Kerr) ;
+		return KErrGeneral ;
+		}
+	}
+
+//-----------------------------------------------------------------------------
+//Function Name :wremoveTest1
+//API Tested :wremove
+//TestCase Description: creates a directory and 2 files inside the dir and tries
+// to delete the files using wremove API, it should return 0 on successful 
+// deletion of the files and then the directory and -1 on failure.
+//-----------------------------------------------------------------------------
+
+TInt CTestWideApi::wremove_val1()
+	{
+	wchar_t *dirName = L"C:\\wremoveDir"; 
+	wchar_t *fileName1 = L"C:\\wremoveDir\\file1.txt"; 
+	wchar_t *fileName2 = L"C:\\wremoveDir\\file2.txt"; 	
+    TInt ret = -1;    
+    errno = 0;
+    if(wmkdir(dirName ,S_IWUSR)  < 0) 
+	    {
+    	INFO_PRINTF1(_L("Failed to create the parent directory"));
+    	return KErrGeneral ;
+	    }    
+    FILE *fp = wfopen(fileName1, (wchar_t *)"w");    
+    if(fp == NULL) 
+	    {
+    	INFO_PRINTF1(_L("Failed to create the child directory"));
+    	return KErrGeneral ;
+	    }
+    fclose(fp);        
+    
+    fp = wfopen(fileName2, (wchar_t *)"w");    
+    if(fp == NULL) 
+	    {
+    	INFO_PRINTF1(_L("Failed to create the child directory"));
+    	return KErrGeneral ;
+	    }
+    fclose(fp);    
+    ret = wremove(fileName1);
+    if(ret != 0) 
+	    {
+    	INFO_PRINTF1(_L("wremove failed"));
+    	wunlink(fileName1);
+    	return KErrGeneral;
+	    }    
+    ret = wremove(fileName2);
+    if(ret != 0) 
+	    {
+    	INFO_PRINTF1(_L("wremove failed"));
+    	wunlink(fileName2);    	
+    	return KErrGeneral;
+	    }    
+    ret = wremove(dirName);
+    if(ret != 0)
+		{
+		INFO_PRINTF1(_L("wremove failed"));
+		return KErrGeneral;
+		}    
+    return KErrNone ;        
+	}
+
+
+//-----------------------------------------------------------------------------
+//Function Name :wremoveTest2
+//API Tested :wremove
+//TestCase Description: creates a directory and tries to delete the file that 
+// doesnot exist in the dir using wremove API, it should return -1 and set the
+// error number correspondingly.
+//-----------------------------------------------------------------------------
+
+TInt CTestWideApi :: wremove_val2()
+	{
+	wchar_t *dirName = L"C:\\wremoveDir1"; 
+	wchar_t *fileName1 = L"C:\\wremoveDir1\\file1.txt"; //file doesnot exist
+	TInt ret = -1;    
+    errno = 0;
+    if(wmkdir(dirName ,S_IWUSR)  < 0) 
+    	{
+    	INFO_PRINTF1(_L("Failed to create the parent directory"));
+    	return KErrGeneral ;
+    	}    
+    ret = wremove(fileName1);
+    if(ret != -1 && errno == 0) 
+    	{
+    	INFO_PRINTF1(_L("wremove failed"));
+    	return KErrGeneral;
+    	}       
+    ret = wremove(dirName);
+    if(ret != 0)
+    	{
+    	INFO_PRINTF1(_L("wremove failed"));
+    	return KErrGeneral;
+    	}    
+    return KErrNone ;
+	}
+
+
+//-----------------------------------------------------------------------------
+//Function Name :wremoveTest3
+//API Tested :wremove
+//TestCase Description: creates a directory and tries to delete the dir using 
+// wremove API, it should return -1 and set the error number correspondingly.
+//-----------------------------------------------------------------------------
+
+TInt CTestWideApi::wremove_val3() 
+	{
+	TInt nameRead;
+	TInt retnVal;
+	int retn = KErrGeneral;		
+   _LIT( Klen, "Parameter1" );
+   
+   TBool res = GetIntFromConfig(ConfigSection(), Klen, nameRead);
+   if(!res)
+		{
+	 	_LIT(Kerr , "Failed to read the value") ;
+	 	INFO_PRINTF1(Kerr) ;
+	 	return KErrGeneral ;
+		}
+   _LIT( Klen2, "Parameter2" );   
+   res = GetIntFromConfig(ConfigSection(), Klen2, retnVal);
+   if(!res)
+		{
+	 	_LIT(Kerr , "Failed to read the value") ;
+	 	INFO_PRINTF1(Kerr) ;
+	 	return KErrGeneral ;
+		}	
+	wchar_t* dirName = L"C:\\wremoveDir3";
+	int ret1 = wmkdir(dirName, S_IWUSR);
+	if(!ret1)
+		{
+		int ret = wremove(dirName);		
+		if(!ret && !retnVal)
+			{
+			INFO_PRINTF1(  _L("Passed..."));
+			retn = KErrNone;
+			}
+		else if(ret && retnVal)
+			{
+			INFO_PRINTF1( _L("Passed..."));
+			retn = KErrNone;
+			}			
+		else
+			{
+			INFO_PRINTF1( _L("Failed..."));	
+			}
+		}
+	else
+		{
+		if(retnVal)
+			{
+			INFO_PRINTF1(  _L("Passed..."));
+			retn = KErrNone;
+			}
+		else
+			{
+			INFO_PRINTF1( _L("Failed..."));	
+			}
+		}
+    return retn;
+	}
+
+
+//-----------------------------------------------------------------------------
+//Function Name :wremove_null
+//API Tested :wremove
+//TestCase Description: tests the behaviour of wremove with NULL as the argument.
+//-----------------------------------------------------------------------------
+
+TInt CTestWideApi :: wremove_null()
+	{
+	int ret = wremove(NULL);
+	if(ret < 0)
+		{
+		return KErrNone ;
+		}
+	return KErrGeneral;
+	}
+
+
+/*
+-------------------------------------------------------------------------------
+Function Name		: CTestWideApi::getws_val
+API Tested			: getws
+TestCase Description: The test case takes a wide character string from standard 
+					  input.
+-------------------------------------------------------------------------------
+*/
+TInt CTestWideApi::getws_val()
+	{
+	FILE* stdop = freopen("c:\\stdop","w+",stdout);
+	FILE* stdip = freopen("c:\\stdip","w+",stdin);
+	wchar_t* buf = (wchar_t*)malloc(sizeof(wchar_t)*50);
+	if(buf==NULL)
+		{
+    	fclose(stdin);
+    	fclose(stdop);
+		remove("c:\\stdop");
+		remove("c:\\stdip");	
+		return KErrNoMemory;	
+		}		
+	wchar_t s[100]; 
+	TInt ret = KErrNone;
+	size_t size = fwrite("sushma\n", 1, 6, stdip);
+	fclose(stdip);
+	stdip = freopen("c:\\stdip","r", stdin);
+	getws(s);  // read a line (from stdin)
+	putws(s);
+    fclose(stdop);
+    stdop = freopen("c:\\stdop","r", stdout);
+    //size = fread(buf, 1, 6, stdop);
+    fgetws(buf,7,stdop);
+    if(wcsncmp(s, buf,6))
+    	{
+    	ret = KErrGeneral;
+    	}    
+    fclose(stdin);
+    fclose(stdop);
+	remove("c:\\stdop");
+	remove("c:\\stdip");
+	free(buf);
+	return ret;
+	}
+
+/*
+-------------------------------------------------------------------------------
+Function Name		: CTestWideApi::getws_null
+API Tested			: getws
+TestCase Description: The test case to test getws for NULL argument
+-------------------------------------------------------------------------------
+*/
+TInt CTestWideApi::getws_null()
+	{
+	INFO_PRINTF1(_L("getws_nullL"));	
+	wchar_t* ret = getws(NULL);  // read a line (from stdin)	
+	if(!ret)
+		{		
+		return KErrNone;
+		}	
+	else 
+		{
+		return KErrGeneral;
+		}
+	}
+    
+/*
+-------------------------------------------------------------------------------
+Function Name		: CTestWideApi::putws_val1
+API Tested			: putws
+TestCase Description: The testcase funtion will write a fixed lenth wide char string 
+					  to the stdout.
+-------------------------------------------------------------------------------
+*/
+TInt CTestWideApi::putws_val1()
+	{
+	INFO_PRINTF1(_L("putws"));
+	wchar_t buf[12];	
+	FILE* stdop = freopen("c:\\stdop","w+",stdout);
+	FILE* op;
+	putws(L"Hello World");
+	fclose(stdop);	
+	op = freopen("c:\\stdop","r",stdout);	
+	fgetws(buf, 12, op);	
+	fclose(stdop);	
+	remove("c:\\stdop");
+    if(!(wcsncmp(L"Hello World", buf, 11)))
+		{			
+		return KErrNone;
+		}	
+	else 
+		{
+		return KErrGeneral;
+		}
+	}
+
+/*
+-------------------------------------------------------------------------------
+Function Name		: CTestWideApi::putws_val2L
+API Tested			: putws
+TestCase Description: The testcase function will write a wide string to the screen
+					  which has a null terminator in the middle of the string.
+-------------------------------------------------------------------------------
+*/
+TInt CTestWideApi::putws_val2()
+	{
+	INFO_PRINTF1(_L("putws2"));
+	wchar_t buf[10];
+	FILE* stdop = freopen("c:\\stdop","w+",stdout);	
+	putws(L"Hel\0lo World");
+	fclose(stdop);
+	stdop = freopen("c:\\stdop","r",stdout);	
+	fgetws(buf, 4, stdop);
+	fclose(stdop);
+	remove("c:\\stdop");	
+    if(!wcsncmp(L"Hel", buf, 4))
+		{		
+		return KErrNone;
+		}	
+	else 
+		{
+		return KErrGeneral;
+		}	
+	}
+
+/*
+-------------------------------------------------------------------------------
+Function Name		: CTestWideApi::putws_nullL
+API Tested			: putws
+TestCase Description: The testcase funtion tests the behaviour of putws for NULL
+					  argument.
+-------------------------------------------------------------------------------
+*/
+TInt CTestWideApi::putws_null()
+	{
+	INFO_PRINTF1(_L("putws1"));
+	int ret = putws(NULL);
+    if(ret>0)
+		{			
+		return KErrGeneral;
+		}	
+	else 
+		{
+		return KErrNone;
+		}
+	}
+
+
+//-----------------------------------------------------------------------------
+//Function Name :wpopen_1L
+//API Tested :wpopen
+//TestCase Description: tests the behaviour of wpopen with NULL as the command.
+//-----------------------------------------------------------------------------
+
+TInt CTestWideApi :: wpopen_1()
+	{
+    FILE *fp;
+    fp=wpopen(NULL,L"r");
+	if  (fp == NULL && errno == ENOENT) 
+		{        
+		INFO_PRINTF1(_L("wpopen success"));
+        return KErrNone;
+		}
+	return KErrGeneral;
+	}
+
+
+
+TInt CTestWideApi::wfreopen1()
+	{
+	char* filename = "c:\\ggg1.txt";
+	wchar_t *pathName = (wchar_t *)malloc(30*sizeof(wchar_t));
+	if(pathName==NULL)
+		{
+		return KErrNoMemory;							
+		}						
+	size_t siz = mbstowcs(pathName, filename, 30);
+	FILE *fp = wfreopen(pathName ,NULL,stdout);
+	free(pathName) ;
+	if(fp == NULL)
+		{        
+		INFO_PRINTF1(_L("wfreopen success"));
+        return KErrNone;
+		}
+		
+	return KErrGeneral;
+	}
+TInt CTestWideApi::wfreopen2()
+	{
+	char* filename = "c:\\ggg.txt";
+	wchar_t *pathName = (wchar_t *)malloc(30*sizeof(wchar_t));
+	if(pathName==NULL)
+		{
+		return KErrNoMemory;							
+		}						
+	size_t siz = mbstowcs(pathName, filename, 30);
+	FILE *fp = wfreopen(pathName ,L"x",stdout);
+	free(pathName) ;
+	if(fp == NULL)
+		{        
+		INFO_PRINTF1(_L("wfreopen success"));
+        return KErrNone;
+		}
+		
+	return KErrGeneral;
+	}
+TInt CTestWideApi::wfreopen3()
+	{
+	
+	FILE *fp1 = wfreopen(NULL ,L"w",stdout);
+	if(fp1 == NULL)
+		{        
+		INFO_PRINTF1(_L("wfreopen success"));
+        return KErrNone;
+		}
+		
+	return KErrGeneral;
+	}
+TInt CTestWideApi::wfreopen4()
+	{
+	
+	wchar_t *fileName1 = L"C:\\myfile1.txt"; 
+	FILE *fp = wfopen(fileName1, (wchar_t *)"w");    
+    if(fp == NULL) 
+	    {
+    	INFO_PRINTF1(_L("Failed to create the child directory"));
+    	return KErrGeneral ;
+	    }
+
+	FILE *fp1 = wfreopen(NULL ,L"w",fp);
+	if(fp1 != NULL)
+		{        
+		INFO_PRINTF1(_L("wfreopen success"));
+        return KErrNone;
+		}
+		
+	return KErrGeneral;
+	}
+//  End of File