(file) Return to cabinet_fdi.c CVS log (file) (dir) Up to [RizwankCVS] / group3 / wine / dlls / cabinet / tests

Diff for /group3/wine/dlls/cabinet/tests/cabinet_fdi.c between version 1.8 and 2.0

version 1.8, 2005/02/11 09:56:01 version 2.0, 2005/02/11 10:54:42
Line 54 
Line 54 
 static int fakeFD = 22881; static int fakeFD = 22881;
  
 /* /*
    This hex data is the output of compress.exe (Windows Server 2003 Resource Kit)     This hex data is the output of makecab.exe (Windows Cabinet SDK/bin)
      ****** IS USING THE OUTPUT OF A NON LGPL program okay ******
  
    The cab file is mirrored in the file system as simple.cab    The cab file is mirrored in the file system as simple.cab
  
Line 75 
Line 76 
         0xD2,0x32,0x8B,0x33,0xF4,0xB8,0x00};         0xD2,0x32,0x8B,0x33,0xF4,0xB8,0x00};
 static int szcompressed_file = sizeof(compressed_file); static int szcompressed_file = sizeof(compressed_file);
  
   
  /*  /*
 static const char uncompressed_data[] = "This is a test file.";          Multiple File Cabs are included, as cabinet.dll supports multiple file archive types.
 static const DWORD uncompressed_data_size = sizeof(uncompressed_data) - 1;          The compressed file size had to be greater than 50k, cabarc restricts 'diskette spanning' to
             archives above 50k.
           The peculiar options were selected specifically to test cabinet.dll more throughly.
  
 static char *buf;          complex_lzw.cab         cabarc -m LZX:16 -pr -i 32356 N complex_lzw.cab amontillado.txt lgpl.txt gpl.txt midsummer\*
 */          complex_lzw2.cab        cabarc -m LZX:17 -d 50000 -pr -i 32356 N complex_lzw*.cab amontillado.txt + lgpl.txt gpl.txt midsummer\*
   
           complex_zip.cab         cabarc -m MSZIP -pr -i 32356 N complex_lzw.cab amontillado.txt lgpl.txt gpl.txt midsummer\*
           complex_zip2.cab        cabarc -m MSZIP -d 50000 -pr -i 32356 N complex_zip*.cab amontillado.txt + lgpl.txt gpl.txt midsummer\*
   
           complex_none.cab        cabarc -m NONE -pr -i 32356 N complex_none.cab amontillado.txt midsummer\act1*
  
 /* /*
         To do in FDI:                           -from wine/include/fdi.h         To do in FDI:                           -from wine/include/fdi.h
Line 95 
Line 102 
         FDIDestroy         FDIDestroy
 */ */
  
 /* Currently mostly dummy function pointers */  
   
 #ifndef DEBUG_ALLOC #ifndef DEBUG_ALLOC
 FNALLOC(final_alloc) { FNALLOC(final_alloc) {
         return malloc(cb);         return malloc(cb);
Line 119 
Line 124 
  
  
 /* /*
         It is not necessary for these functions to actually call _open etc.;  
         these functions could instead call fopen, fread, fwrite, fclose, and fseek,  
         or CreateFile, ReadFile, WriteFile, CloseHandle, and SetFilePointer, etc.  
         However, the parameters and return codes will have to be translated  
         appropriately (e.g. the file open mode passed in to pfnopen).  
   
         Match i/o specs of _open, _read, _write, _close, and _lseek.         Match i/o specs of _open, _read, _write, _close, and _lseek.
   
 */ */
  
 /* /*
Line 207 
Line 205 
 } }
  
  
   
   
   
 FNWRITE(dummy_write) { FNWRITE(dummy_write) {
         printf("   FNWRITE just called with %d, %d, %d\n",hf, pv, cb);         printf("   FNWRITE just called with %d, %d, %d\n",hf, pv, cb);
         return 0;         return 0;
Line 217 
Line 218 
         return 0;         return 0;
 } }
  
   
   
 HFDI hfdi_unknown_dummy, hfdi_unknown_fake,hfdi_unknown_real; HFDI hfdi_unknown_dummy, hfdi_unknown_fake,hfdi_unknown_real;
 /* yes its global and ugly */ /* yes its global and ugly */
  
   /* Is CPU386 or Unknown more commonly used? */
  
 static void TestCreate(void) { static void TestCreate(void) {
  
Line 300 
Line 304 
                 ok ( fdi_cabinfo_simple.cFiles == 1, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");                 ok ( fdi_cabinfo_simple.cFiles == 1, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");
                 ok ( fdi_cabinfo_simple.setID == 12345, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");                 ok ( fdi_cabinfo_simple.setID == 12345, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");
                 ok ( fdi_cabinfo_simple.iCabinet == 0, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");                 ok ( fdi_cabinfo_simple.iCabinet == 0, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");
                 ok ( fdi_cabinfo_simple.fReserve == 'b', "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");                  ok ( fdi_cabinfo_simple.fReserve == 0, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");
                 ok ( fdi_cabinfo_simple.hasprev == 117, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");                  ok ( fdi_cabinfo_simple.hasprev == 0, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");
                 ok ( fdi_cabinfo_simple.hasnext == 117, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");                  ok ( fdi_cabinfo_simple.hasnext == 0, "FDIIsCabinet,cabinfo (FakeFile = Cabinet) data did not match! Failed!\n");
   
   
           /* simply this with macros?
                  yes, make one macro with inputs (cabname, testname, [expected values] ) --- using lambda notation
              add checks for cabinfo data!
              Is it ok to reuse the same hfdi_unknown_real ? */
   
           /* TEST : Opened filehandle associated, corrupted cab loaded, should return FALSE */
           /* We can see that the Windows implementation only reads the first 36 bytes - what if we corrupted a CAB after 36 bytes?*/
   
           realfd = real_open( "broken.cab" , _O_BINARY | _O_RDONLY | _O_SEQUENTIAL, 0);
   
           ok ( FDIIsCabinet( hfdi_unknown_real, realfd, &fdi_cabinfo_complex) == FALSE,
                           "FDIIsCabinet (File = Bad-Cabinet) broken.cab failed!\n");
           real_close(realfd);
   
           realfd = real_open( "cabinet_fdi.c" , _O_BINARY | _O_RDONLY | _O_SEQUENTIAL, 0);
   
           ok ( FDIIsCabinet( hfdi_unknown_real, realfd, &fdi_cabinfo_complex) == FALSE,
                           "FDIIsCabinet (File = Non-Cabinet) cabinet_fdi.c failed!\n");
           real_close(realfd);
   
   
           /* TEST : Opened filehandle associated, valid cab loaded, should return TRUE */
           realfd = real_open( "complex_lzw.cab" , _O_BINARY | _O_RDONLY | _O_SEQUENTIAL, 0);
  
         realfd = real_open( "working.cab" , _O_BINARY | _O_RDONLY | _O_SEQUENTIAL, 0);  
         ok ( FDIIsCabinet( hfdi_unknown_real, realfd, &fdi_cabinfo_complex) == TRUE,         ok ( FDIIsCabinet( hfdi_unknown_real, realfd, &fdi_cabinfo_complex) == TRUE,
                         "FDIIsCabinet (File = Cabinet) failed!\n");                          "FDIIsCabinet (File = Cabinet) complex_lzw.cab failed!\n");
         real_close(realfd);         real_close(realfd);
  
         printf("Cabinet Data : cbC %d cF %d cFi %d si %d iC %d fr %b hp %d hn %d\n,",          printf("Cabinet Data : cbC %d cF %d cFi %d si %d iC %d fr %b hp %d hn %d\n",
                         fdi_cabinfo_complex.cbCabinet,                         fdi_cabinfo_complex.cbCabinet,
                         fdi_cabinfo_complex.cFolders ,                         fdi_cabinfo_complex.cFolders ,
                         fdi_cabinfo_complex.cFiles ,                         fdi_cabinfo_complex.cFiles ,
Line 319 
Line 347 
                         fdi_cabinfo_complex.hasprev ,                         fdi_cabinfo_complex.hasprev ,
                         fdi_cabinfo_complex.hasnext );                         fdi_cabinfo_complex.hasnext );
  
 }          realfd = real_open( "complex_lzw2.cab" , _O_BINARY | _O_RDONLY | _O_SEQUENTIAL, 0);
   
           ok ( FDIIsCabinet( hfdi_unknown_real, realfd, &fdi_cabinfo_complex) == TRUE,
                           "FDIIsCabinet (File = Cabinet) complex_lzw2.cab failed!\n");
           real_close(realfd);
   
           printf("Cabinet Data : cbC %d cF %d cFi %d si %d iC %d fr %b hp %d hn %d\n",
                           fdi_cabinfo_complex.cbCabinet,
                           fdi_cabinfo_complex.cFolders ,
                           fdi_cabinfo_complex.cFiles ,
                           fdi_cabinfo_complex.setID,
                           fdi_cabinfo_complex.iCabinet,
                           fdi_cabinfo_complex.fReserve ,
                           fdi_cabinfo_complex.hasprev ,
                           fdi_cabinfo_complex.hasnext );
  
           realfd = real_open( "complex_zip.cab" , _O_BINARY | _O_RDONLY | _O_SEQUENTIAL, 0);
   
           ok ( FDIIsCabinet( hfdi_unknown_real, realfd, &fdi_cabinfo_complex) == TRUE,
                           "FDIIsCabinet (File = Cabinet) complex_zip.cab failed!\n");
           real_close(realfd);
   
           printf("Cabinet Data : cbC %d cF %d cFi %d si %d iC %d fr %b hp %d hn %d\n",
                           fdi_cabinfo_complex.cbCabinet,
                           fdi_cabinfo_complex.cFolders ,
                           fdi_cabinfo_complex.cFiles ,
                           fdi_cabinfo_complex.setID,
                           fdi_cabinfo_complex.iCabinet,
                           fdi_cabinfo_complex.fReserve ,
                           fdi_cabinfo_complex.hasprev ,
                           fdi_cabinfo_complex.hasnext );
   
           realfd = real_open( "complex_zip2.cab" , _O_BINARY | _O_RDONLY | _O_SEQUENTIAL, 0);
   
           ok ( FDIIsCabinet( hfdi_unknown_real, realfd, &fdi_cabinfo_complex) == TRUE,
                           "FDIIsCabinet (File = Cabinet) complex_zip2.cab failed!\n");
           real_close(realfd);
   
           printf("Cabinet Data : cbC %d cF %d cFi %d si %d iC %d fr %b hp %d hn %d\n",
                           fdi_cabinfo_complex.cbCabinet,
                           fdi_cabinfo_complex.cFolders ,
                           fdi_cabinfo_complex.cFiles ,
                           fdi_cabinfo_complex.setID,
                           fdi_cabinfo_complex.iCabinet,
                           fdi_cabinfo_complex.fReserve ,
                           fdi_cabinfo_complex.hasprev ,
                           fdi_cabinfo_complex.hasnext );
   
           realfd = real_open( "complex_none.cab" , _O_BINARY | _O_RDONLY | _O_SEQUENTIAL, 0);
   
           ok ( FDIIsCabinet( hfdi_unknown_real, realfd, &fdi_cabinfo_complex) == TRUE,
                           "FDIIsCabinet (File = Cabinet) complex_zip.cab failed!\n");
           real_close(realfd);
   
           printf("Cabinet Data : cbC %d cF %d cFi %d si %d iC %d fr %b hp %d hn %d\n",
                           fdi_cabinfo_complex.cbCabinet,
                           fdi_cabinfo_complex.cFolders ,
                           fdi_cabinfo_complex.cFiles ,
                           fdi_cabinfo_complex.setID,
                           fdi_cabinfo_complex.iCabinet,
                           fdi_cabinfo_complex.fReserve ,
                           fdi_cabinfo_complex.hasprev ,
                           fdi_cabinfo_complex.hasnext );
   
   
   }
  
 static void TestDestroy(void) { static void TestDestroy(void) {
         printf("Starting TestDestroy()\n");         printf("Starting TestDestroy()\n");
                 /* Only two things to check in FDIDestroy                  /* Should return TRUE if given a valid hfdi, else FALSE (only due to context errors?) */
         1=> Does it return T if its passed an hfdi  
         2=> Does it return F if its passed a non hfdi  
                 EDIT : Causes GPL if FDIDestroy is called on an invalid pointer.  
                 ok( 0 == FDIDestroy(0), "Return true incorrectly in TestDestroy()!\n");  
                 */  
  
         ok(FDIDestroy(hfdi_unknown_dummy), "FDIDestroy (CPU = unknown) (functions=fake) failed!\n");         ok(FDIDestroy(hfdi_unknown_dummy), "FDIDestroy (CPU = unknown) (functions=fake) failed!\n");
         ok(FDIDestroy(hfdi_unknown_fake), "FDIDestroy (CPU = unknown) (functions=fake) failed!\n");         ok(FDIDestroy(hfdi_unknown_fake), "FDIDestroy (CPU = unknown) (functions=fake) failed!\n");
           ok(FDIDestroy(hfdi_unknown_real), "FDIDestroy (CPU = unknown) (functions=real) failed!\n");
         printf("Ending TestDestroy()\n");         printf("Ending TestDestroy()\n");
  
 } }
  
   
 START_TEST(paths) START_TEST(paths)
 { {
   
         TestCreate();         TestCreate();
         TestInfo();         TestInfo();
         /*         /*
         TestCopy();         TestCopy();
         */         */
         TestDestroy();         TestDestroy();
   
 } }


Legend:
Removed from v.1.8  
changed lines
  Added in v.2.0

Rizwan Kassim
Powered by
ViewCVS 0.9.2