bug 6484
Allan CORNET [Wed, 27 Jan 2010 14:03:22 +0000 (15:03 +0100)]
scilab/CHANGES_5.3.X
scilab/modules/fileio/includes/filesmanagement.h
scilab/modules/fileio/src/c/filesmanagement.c
scilab/modules/fileio/tests/nonreg_tests/bug_6484.dia.ref [new file with mode: 0644]
scilab/modules/fileio/tests/nonreg_tests/bug_6484.tst [new file with mode: 0644]
scilab/modules/io/sci_gateway/c/sci_file.c
scilab/modules/io/tests/unit_tests/file.dia.ref [new file with mode: 0644]
scilab/modules/io/tests/unit_tests/file.tst [new file with mode: 0644]

index 10939ce..84d0f88 100644 (file)
@@ -25,3 +25,6 @@ Bug fixes:
 ==========
 
 * bug 6419 fixed - gstacksize() There was no way to retrieve minimum from scilab.
+
+* bug 6484 fixed - file did not return filenale of a opened fortran file.
+
index d5ffab0..9d427b4 100644 (file)
@@ -101,6 +101,14 @@ FILEIO_IMPEXP void SetFileModeOpenedInScilab(int Id,int mode);
 */
 FILEIO_IMPEXP int GetFileTypeOpenedInScilab(int Id);
 
+
+/**
+* Get the type of file Id
+* @param Id
+* @return Type 'C' or 'F' (Fortran,C) (to free)
+*/
+FILEIO_IMPEXP char *GetFileTypeOpenedInScilabAsString(int Id);
+
 /**
 * Set the mode of file Id
 * @param Id
@@ -156,11 +164,59 @@ FILEIO_IMPEXP BOOL IsAlreadyOpenedInScilab(char *filename);
 
 /**
 * Get ID of a filename opened in scilab
-* @param[in] filen name
+* @param[in] filename
 * @return file ID or FILE_ID_NOT_DEFINED
 */
 FILEIO_IMPEXP int GetIdFromFilename(char *filename);
 
+/**
+* Get Ids opened in Scilab
+* @param[out] size of returned array
+* @return Array of Id
+*/
+FILEIO_IMPEXP int *GetFilesIdUsed(int *sizeArrayReturned);
+
+/**
+* Get Ids opened in Scilab
+* @param[out] size of returned array
+* @return Array of Id
+*/
+FILEIO_IMPEXP int *GetSwapsUsed(int *sizeArrayReturned);
+
+/**
+* Get Modes used in Scilab
+* @param[out] size of returned array
+* @return Modes associated to Id
+*/
+FILEIO_IMPEXP int *GetModesUsed(int *sizeArrayReturned);
+
+/**
+* Get Types used in Scilab
+* @param[out] size of returned array
+* @return Types associated to Id
+*/
+FILEIO_IMPEXP int *GetTypesUsed(int *sizeArrayReturned);
+
+/**
+* Get Types used in Scilab
+* @param[out] size of returned array
+* @return Types associated to Id as Strings (user reading)
+*/
+FILEIO_IMPEXP char **GetTypesUsedAsString(int *sizeArrayReturned);
+
+/**
+* Get filenames used in Scilab
+* @param[out] size of returned array
+* @return filenames
+*/
+FILEIO_IMPEXP char **GetFilenamesUsed(int *sizeArrayReturned);
+
+/**
+* Get number of Ids Used in Scilab
+* @return number of Ids
+*/
+FILEIO_IMPEXP int GetNumberOfIdsUsed(void);
+
 #endif /* __FILESMANAGEMENT_H__ */
 /*--------------------------------------------------------------------------*/
 
index a1c7729..b4794e1 100644 (file)
@@ -100,7 +100,32 @@ void SetFileModeOpenedInScilab(int Id,int mode)
 /*--------------------------------------------------------------------------*/
 int GetFileTypeOpenedInScilab(int Id)
 {
-       return ScilabFileList[Id].fttype;
+       if ( (Id > 0) && (Id < GetMaximumFileOpenedInScilab()) )
+       {
+               return ScilabFileList[Id].fttype;
+       }
+       else
+       {
+               return 0;
+       }
+}
+/*--------------------------------------------------------------------------*/
+char *GetFileTypeOpenedInScilabAsString(int Id)
+{
+       char *ret = NULL;
+       switch (GetFileTypeOpenedInScilab(Id))
+       {
+               case 1:
+                       ret = strdup("F");
+                       break;
+               case 2:
+                       ret = strdup("C");
+                       break;
+               case 0: default:
+                       ret = strdup("Error");
+                       break;
+       }
+       return ret;
 }
 /*--------------------------------------------------------------------------*/
 void SetFileTypeOpenedInScilab(int Id,int Type)
@@ -110,7 +135,19 @@ void SetFileTypeOpenedInScilab(int Id,int Type)
 /*--------------------------------------------------------------------------*/
 char* GetFileNameOpenedInScilab(int Id)
 {
-       if (GetFileOpenedInScilab(Id) != NULL) return ScilabFileList[Id].ftname;
+       if (GetFileTypeOpenedInScilab(Id) == 1) // Fortran file
+       {
+               /* A exception for Id 5 and 6 */ 
+               /* no name */
+               if ((Id != 5) && (Id != 6))
+               {
+                       return ScilabFileList[Id].ftname;
+               }
+       }
+       else
+       {
+               if (GetFileOpenedInScilab(Id) != NULL) return ScilabFileList[Id].ftname;
+       }
        return NULL;
 }
 /*--------------------------------------------------------------------------*/
@@ -271,3 +308,180 @@ int GetIdFromFilename(char *filename)
        return FILE_ID_NOT_DEFINED;
 }
 /*--------------------------------------------------------------------------*/
+int *GetFilesIdUsed(int *sizeArrayReturned)
+{
+       int i = 0, j = 0;
+       int* ArrayIdUsed = NULL;
+       *sizeArrayReturned = GetNumberOfIdsUsed();
+
+       ArrayIdUsed = (int*)MALLOC(sizeof(int)*(*sizeArrayReturned));
+       if (ArrayIdUsed == NULL)
+       {
+               *sizeArrayReturned = 0;
+               return NULL;
+       }
+
+       j = 0;
+       for (i = 0; i < GetMaximumFileOpenedInScilab(); i++)
+       {
+               if (GetFileTypeOpenedInScilab(i) != 0)
+               {
+                       ArrayIdUsed[j] = i;
+                       j++;
+               }
+       }
+       return ArrayIdUsed;
+}
+/*--------------------------------------------------------------------------*/
+int *GetSwapsUsed(int *sizeArrayReturned)
+{
+       int *ArraySwapUsed = NULL;
+       int i = 0, j = 0;
+
+       *sizeArrayReturned = GetNumberOfIdsUsed();
+
+       ArraySwapUsed = (int*)MALLOC(sizeof(int)*(*sizeArrayReturned));
+       if (ArraySwapUsed == NULL)
+       {
+               *sizeArrayReturned = 0;
+               return NULL;
+       }
+
+       j = 0;
+       for (i = 0; i < GetMaximumFileOpenedInScilab(); i++)
+       {
+               if (GetFileTypeOpenedInScilab(i) != 0)
+               {
+                       ArraySwapUsed[j] = GetSwapStatus(i);
+                       j++;
+               }
+       }
+       return ArraySwapUsed;
+}
+/*--------------------------------------------------------------------------*/
+int *GetModesUsed(int *sizeArrayReturned)
+{
+       int *ArrayModeUsed = NULL;
+       int i = 0, j = 0;
+
+       *sizeArrayReturned = GetNumberOfIdsUsed();
+
+       ArrayModeUsed = (int*)MALLOC(sizeof(int)*(*sizeArrayReturned));
+       if (ArrayModeUsed == NULL)
+       {
+               *sizeArrayReturned = 0;
+               return NULL;
+       }
+
+       j = 0;
+       for (i = 0; i < GetMaximumFileOpenedInScilab(); i++)
+       {
+               if (GetFileTypeOpenedInScilab(i) != 0)
+               {
+                       ArrayModeUsed[j] = GetFileModeOpenedInScilab(i);
+                       j++;
+               }
+       }
+       return ArrayModeUsed;
+}
+/*--------------------------------------------------------------------------*/
+int *GetTypesUsed(int *sizeArrayReturned)
+{
+       int *ArrayTypeUsed = NULL;
+       int i = 0, j = 0;
+
+       *sizeArrayReturned = GetNumberOfIdsUsed();
+
+       ArrayTypeUsed = (int*)MALLOC(sizeof(int)*(*sizeArrayReturned));
+       if (ArrayTypeUsed == NULL)
+       {
+               *sizeArrayReturned = 0;
+               return NULL;
+       }
+
+       j = 0;
+       for (i = 0; i < GetMaximumFileOpenedInScilab(); i++)
+       {
+               if (GetFileTypeOpenedInScilab(i) != 0)
+               {
+                       ArrayTypeUsed[j] = GetFileTypeOpenedInScilab(i);
+                       j++;
+               }
+       }
+       return ArrayTypeUsed;
+}
+/*--------------------------------------------------------------------------*/
+char **GetTypesUsedAsString(int *sizeArrayReturned)
+{
+       char **ArrayTypeUsedAsString = NULL;
+       int i = 0, j = 0;
+
+       *sizeArrayReturned = GetNumberOfIdsUsed();
+
+       ArrayTypeUsedAsString = (char**)MALLOC(sizeof(char*) * (*sizeArrayReturned));
+       if (ArrayTypeUsedAsString == NULL)
+       {
+               *sizeArrayReturned = 0;
+               return NULL;
+       }
+
+       j = 0;
+       for (i = 0; i < GetMaximumFileOpenedInScilab(); i++)
+       {
+               if (GetFileTypeOpenedInScilab(i) != 0)
+               {
+                       ArrayTypeUsedAsString[j] = GetFileTypeOpenedInScilabAsString(i);
+                       j++;
+               }
+       }
+       return ArrayTypeUsedAsString;
+}
+/*--------------------------------------------------------------------------*/
+char **GetFilenamesUsed(int *sizeArrayReturned)
+{
+       char **FilenamesArray = NULL;
+       int i = 0, j = 0;
+
+       *sizeArrayReturned = GetNumberOfIdsUsed();
+
+       FilenamesArray = (char**)MALLOC(sizeof(char*) * (*sizeArrayReturned));
+       if (FilenamesArray == NULL)
+       {
+               *sizeArrayReturned = 0;
+               return NULL;
+       }
+
+       j = 0;
+       for (i = 0; i < GetMaximumFileOpenedInScilab(); i++)
+       {
+               if (GetFileTypeOpenedInScilab(i) != 0)
+               {
+                       if (GetFileNameOpenedInScilab(i))
+                       {
+                               FilenamesArray[j] = strdup(GetFileNameOpenedInScilab(i));
+                       }
+                       else
+                       {
+                               FilenamesArray[j] = strdup("");
+                       }
+                       j++;
+               }
+       }
+       return FilenamesArray;
+}
+/*--------------------------------------------------------------------------*/
+int GetNumberOfIdsUsed(void)
+{
+       int i = 0;
+       int numberOfIds = 0;
+       
+       for (i = 0; i < GetMaximumFileOpenedInScilab(); i++)
+       {
+               if (GetFileTypeOpenedInScilab(i) != 0)
+               {
+                       numberOfIds++;
+               }
+       }
+       return numberOfIds;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/scilab/modules/fileio/tests/nonreg_tests/bug_6484.dia.ref b/scilab/modules/fileio/tests/nonreg_tests/bug_6484.dia.ref
new file mode 100644 (file)
index 0000000..bc7804e
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 6484 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6484
+//
+// <-- Short Description -->
+// 'file' did not return filename of a opened fortran file
+u = file('open',TMPDIR+'/foo.txt','unknown');
+[a,b,c,d,e] = file(u);
+if a <> u then bugmes();quit;end
+if b <> 'F' then bugmes();quit;end
+if c == '' then bugmes();quit;end
+if c <> pathconvert(TMPDIR + '/foo.txt',%f,%t) then bugmes();quit;end
+if d <> 3 then bugmes();quit;end
+if e <> 0 then bugmes();quit;end
+file('close', u);
diff --git a/scilab/modules/fileio/tests/nonreg_tests/bug_6484.tst b/scilab/modules/fileio/tests/nonreg_tests/bug_6484.tst
new file mode 100644 (file)
index 0000000..d5752ed
--- /dev/null
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 6484 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6484
+//
+// <-- Short Description -->
+// 'file' did not return filename of a opened fortran file
+
+u = file('open',TMPDIR+'/foo.txt','unknown');
+[a,b,c,d,e] = file(u);
+if a <> u then pause,end
+if b <> 'F' then pause,end
+if c == '' then pause,end
+if c <> pathconvert(TMPDIR + '/foo.txt',%f,%t) then pause,end
+if d <> 3 then pause,end
+if e <> 0 then pause,end
+file('close', u);
index 99c8853..0c3b27a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2006 - INRIA - Allan CORNET
- * Copyright (C) 2009 - DIGITEO - Allan CORNET
+ * Copyright (C) 2009-2010 - DIGITEO - Allan CORNET
  * 
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
@@ -12,6 +12,7 @@
  */
 
 /*--------------------------------------------------------------------------*/
+#include <string.h>
 #include "gw_io.h"
 #include "stack-c.h"
 #include "api_scilab.h"
 #include "Scierror.h"
 #include "localization.h"
 #include "charEncoding.h"
+#include "filesmanagement.h"
+#include "freeArrayOfString.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
 /*--------------------------------------------------------------------------*/
 #define FILE_OPEN_STR "open"
 #define FILE_OLD_STR "old"
 /*--------------------------------------------------------------------------*/
+static int sci_file_no_rhs(char *fname);
+static int sci_file_one_rhs(char *fname);
+/*--------------------------------------------------------------------------*/
 int C2F(sci_file)(char *fname,unsigned long fname_len)
 {
+       if (Rhs == 0)
+       {
+               return sci_file_no_rhs(fname);
+       }
+
+       if (Rhs == 1)
+       {
+               return sci_file_one_rhs(fname);
+       }
+
        if (Rhs >= 3)
        {
                SciErr sciErr;
@@ -270,3 +289,317 @@ int C2F(sci_file)(char *fname,unsigned long fname_len)
        return 0;
 }
 /*--------------------------------------------------------------------------*/
+static int sci_file_no_rhs(char *fname)
+{
+       SciErr sciErr;
+       int m_out = 0, n_out = 0;
+
+       int sizeArray = 0;
+       int *IdUsed = NULL;
+
+       CheckLhs(0,5);
+
+       /* Lhs == 0 IDs*/
+       IdUsed = GetFilesIdUsed(&sizeArray);
+
+       if (IdUsed)
+       {
+               m_out = 1;
+               n_out = sizeArray;
+               sciErr = createMatrixOfInteger32(pvApiCtx, Rhs + 1, m_out, n_out, IdUsed);
+               FREE(IdUsed);
+               IdUsed = NULL;
+
+               if(sciErr.iErr)
+               {
+                       printError(&sciErr, 0);
+                       return 0;
+               }
+
+               LhsVar(1) = Rhs + 1; 
+       }
+
+       if (Lhs > 1) /* Types */
+       {
+               char **TypeIdsAsString = GetTypesUsedAsString(&sizeArray);
+               if (TypeIdsAsString)
+               {
+                       m_out = 1;
+                       n_out = sizeArray;
+                       sciErr = createMatrixOfString(pvApiCtx, Rhs + 2, m_out, n_out, TypeIdsAsString);
+                       freeArrayOfString(TypeIdsAsString, sizeArray);
+
+                       if(sciErr.iErr)
+                       {
+                               printError(&sciErr, 0);
+                               return 0;
+                       }
+
+                       LhsVar(2) = Rhs + 2; 
+               }
+       }
+
+       if (Lhs > 2) /* names */
+       {
+               char **Filenames = GetFilenamesUsed(&sizeArray);
+               if (Filenames)
+               {
+                       m_out = 1;
+                       n_out = sizeArray;
+                       sciErr = createMatrixOfString(pvApiCtx, Rhs + 3, m_out, n_out, Filenames);
+                       freeArrayOfString(Filenames, sizeArray);
+
+                       if(sciErr.iErr)
+                       {
+                               printError(&sciErr, 0);
+                               return 0;
+                       }
+
+                       LhsVar(3) = Rhs + 3; 
+               }
+       }
+
+       if (Lhs > 3) /* mod */
+       {
+               int *Modes = GetModesUsed(&sizeArray);
+               if (Modes)
+               {
+                       m_out = 1;
+                       n_out = sizeArray;
+                       sciErr = createMatrixOfInteger32(pvApiCtx, Rhs + 4, m_out, n_out, Modes);
+                       FREE(Modes);
+                       Modes = NULL;
+                       if(sciErr.iErr)
+                       {
+                               printError(&sciErr, 0);
+                               return 0;
+                       }
+
+                       LhsVar(4) = Rhs + 4; 
+               }
+       }
+
+       if (Lhs > 4) /* swap */
+       {
+               int *SwapId = GetSwapsUsed(&sizeArray);
+               if (SwapId)
+               {
+                       m_out = 1;
+                       n_out = sizeArray;
+                       sciErr = createMatrixOfInteger32(pvApiCtx, Rhs + 5, m_out, n_out, SwapId);
+                       FREE(SwapId);
+                       SwapId = NULL;
+
+                       if(sciErr.iErr)
+                       {
+                               printError(&sciErr, 0);
+                               return 0;
+                       }
+
+                       LhsVar(5) = Rhs + 5; 
+               }
+       }
+
+       C2F(putlhsvar)();
+       return 0;
+}
+/*--------------------------------------------------------------------------*/
+static int sci_file_one_rhs(char *fname)
+{
+       SciErr sciErr;
+
+       int iID = 0;
+       int m1 = 0, n1 = 0;
+       int iType = 0;
+       int *piAddressVarOne = NULL;
+       double *pdVarOne = NULL;
+
+       int m_out = 0;
+       int n_out = 0;
+       
+       /* get Address of inputs */
+       sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
+       if(sciErr.iErr)
+       {
+               printError(&sciErr, 0);
+               return 0;
+       }
+
+       sciErr = getVarType(pvApiCtx, piAddressVarOne, &iType);
+       if(sciErr.iErr)
+       {
+               printError(&sciErr, 0);
+               return 0;
+       }
+
+       /* check input type */
+       if ( iType != sci_matrix )
+       {
+               Scierror(201,_("%s: Wrong type for input argument #%d: A scalar expected.\n"),fname,1);
+               return 0;
+       }
+
+       sciErr = getMatrixOfDouble(pvApiCtx, piAddressVarOne,&m1,&n1,&pdVarOne);
+       if(sciErr.iErr)
+       {
+               printError(&sciErr, 0);
+               return 0;
+       }
+
+       if( n1 != 1 || m1 != 1)
+       {
+               Scierror(999,_("%s: Wrong size for input argument #%d: A scalar expected.\n"),fname,1);
+               return 0;
+       }
+
+       iID = (int) *pdVarOne;
+
+       if (*pdVarOne != (double)iID)
+       {
+               Scierror(999,_("%s: Wrong value for input argument #%d: A integer expected.\n"),fname,1);
+               return 0;
+       }
+
+       /* Lhs = 0 ID */
+       if (GetFileTypeOpenedInScilab(iID) != 0)
+       {
+               m_out = 1;
+               n_out = 1;
+               sciErr = createMatrixOfInteger32(pvApiCtx, Rhs + 1, m_out, n_out, &iID);
+       }
+       else
+       {
+               /* returns [] */
+               m_out = 0;
+               n_out = 0;
+               sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 1, m_out, n_out, NULL);
+       }
+
+       if(sciErr.iErr)
+       {
+               printError(&sciErr, 0);
+               return 0;
+       }
+
+       LhsVar(1) = Rhs + 1; 
+
+       if (Lhs > 1) /* Type */
+       {
+               if (GetFileTypeOpenedInScilab(iID) != 0)
+               {
+                       char *TypeIdAsString = GetFileTypeOpenedInScilabAsString(iID);
+                       m_out = 1;
+                       n_out = 1;
+                       sciErr = createMatrixOfString(pvApiCtx, Rhs + 2, m_out, n_out, &TypeIdAsString);
+                       FREE(TypeIdAsString);
+                       TypeIdAsString = NULL;
+               }
+               else
+               {
+                       /* returns [] */
+                       m_out = 0;
+                       n_out = 0;
+                       sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 2, m_out, n_out, NULL);
+               }
+
+               if(sciErr.iErr)
+               {
+                       printError(&sciErr, 0);
+                       return 0;
+               }
+
+               LhsVar(2) = Rhs + 2; 
+       }
+
+       if (Lhs > 2) /* name */
+       {
+               if (GetFileTypeOpenedInScilab(iID) != 0)
+               {
+                       char *filename = NULL;
+                       m_out = 1;
+                       n_out = 1;
+                       if (GetFileNameOpenedInScilab(iID) == NULL)
+                       {
+                               filename = strdup("");
+                       }
+                       else
+                       {
+                               filename = strdup(GetFileNameOpenedInScilab(iID));
+                       }
+
+                       sciErr = createMatrixOfString(pvApiCtx, Rhs + 3, m_out, n_out, &filename);
+                       FREE(filename);
+                       filename = NULL;
+               }
+               else
+               {
+                       /* returns [] */
+                       m_out = 0;
+                       n_out = 0;
+                       sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 3, m_out, n_out, NULL);
+               }
+
+               if(sciErr.iErr)
+               {
+                       printError(&sciErr, 0);
+                       return 0;
+               }
+
+               LhsVar(3) = Rhs + 3; 
+       }
+
+       if (Lhs > 3)  /* mod */
+       {
+               if (GetFileTypeOpenedInScilab(iID) != 0)
+               {
+                       int ModeId = GetFileModeOpenedInScilab(iID);
+                       m_out = 1;
+                       n_out = 1;
+                       sciErr = createMatrixOfInteger32(pvApiCtx, Rhs + 4, m_out, n_out, &ModeId);
+               }
+               else
+               {
+                       /* returns [] */
+                       m_out = 0;
+                       n_out = 0;
+                       sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 4, m_out, n_out, NULL);
+               }
+
+               if(sciErr.iErr)
+               {
+                       printError(&sciErr, 0);
+                       return 0;
+               }
+
+               LhsVar(4) = Rhs + 4; 
+       }
+
+       if (Lhs > 4) /* swap */
+       {
+               if (GetFileTypeOpenedInScilab(iID) != 0)
+               {
+                       int SwapId = GetSwapStatus(iID);
+                       m_out = 1;
+                       n_out = 1;
+                       sciErr = createMatrixOfInteger32(pvApiCtx, Rhs + 5, m_out, n_out, &SwapId);
+               }
+               else
+               {
+                       /* returns [] */
+                       m_out = 0;
+                       n_out = 0;
+                       sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 5, m_out, n_out, NULL);
+               }
+
+               if(sciErr.iErr)
+               {
+                       printError(&sciErr, 0);
+                       return 0;
+               }
+               LhsVar(5) = Rhs + 5; 
+       }
+
+       C2F(putlhsvar)();
+       return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/scilab/modules/io/tests/unit_tests/file.dia.ref b/scilab/modules/io/tests/unit_tests/file.dia.ref
new file mode 100644 (file)
index 0000000..d6ba3e6
--- /dev/null
@@ -0,0 +1,47 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+[a,b,c,d,e] = file(500);
+if a <> [] then bugmes();quit;end;
+if b <> [] then bugmes();quit;end;
+if c <> [] then bugmes();quit;end;
+if d <> [] then bugmes();quit;end;
+if e <> [] then bugmes();quit;end;
+clear a b c d e
+// =============================================================================
+[a,b,c,d] = file(500);
+if a <> [] then bugmes();quit;end;
+if b <> [] then bugmes();quit;end;
+if c <> [] then bugmes();quit;end;
+if d <> [] then bugmes();quit;end;
+clear a b c d 
+// =============================================================================
+[a,b,c] = file(500);
+if a <> [] then bugmes();quit;end;
+if b <> [] then bugmes();quit;end;
+if c <> [] then bugmes();quit;end;
+clear a b c
+// =============================================================================
+[a,b] = file(500);
+if a <> [] then bugmes();quit;end;
+if b <> [] then bugmes();quit;end;
+clear a b
+// =============================================================================
+[a] = file(500);
+if a <> [] then bugmes();quit;end;
+clear a
+// =============================================================================
+file(500);
+// =============================================================================
+ierr = execstr("file(''toto'')","errcatch");
+if (ierr <> 201) then bugmes();quit;end
+// =============================================================================
diff --git a/scilab/modules/io/tests/unit_tests/file.tst b/scilab/modules/io/tests/unit_tests/file.tst
new file mode 100644 (file)
index 0000000..2c367c0
--- /dev/null
@@ -0,0 +1,48 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+[a,b,c,d,e] = file(500);
+if a <> [] then pause,end;
+if b <> [] then pause,end;
+if c <> [] then pause,end;
+if d <> [] then pause,end;
+if e <> [] then pause,end;
+clear a b c d e
+// =============================================================================
+[a,b,c,d] = file(500);
+if a <> [] then pause,end;
+if b <> [] then pause,end;
+if c <> [] then pause,end;
+if d <> [] then pause,end;
+clear a b c d 
+// =============================================================================
+[a,b,c] = file(500);
+if a <> [] then pause,end;
+if b <> [] then pause,end;
+if c <> [] then pause,end;
+clear a b c
+// =============================================================================
+[a,b] = file(500);
+if a <> [] then pause,end;
+if b <> [] then pause,end;
+clear a b
+// =============================================================================
+[a] = file(500);
+if a <> [] then pause,end;
+clear a
+// =============================================================================
+file(500);
+// =============================================================================
+ierr = execstr("file(''toto'')","errcatch");
+if (ierr <> 201) then pause,end
+// =============================================================================
+