Changeset 1587

Show
Ignore:
Timestamp:
28/04/2007 18:14:27 (21 months ago)
Author:
chris
Message:

Test that PartialReadStream? and ReadGatherStream? can handle streams
over 2GB in size. (refs #3)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • box/chris/merge/test/common/testcommon.cpp

    r1547 r1587  
    3232#include "Timer.h" 
    3333#include "Logging.h" 
     34#include "ZeroStream.h" 
     35#include "PartialReadStream.h" 
    3436 
    3537#include "MemLeakFindOn.h" 
     
    174176int test(int argc, const char *argv[]) 
    175177{ 
     178        // Test PartialReadStream and ReadGatherStream handling of files 
     179        // over 2GB (refs #2) 
     180        { 
     181                char buffer[8]; 
     182 
     183                ZeroStream zero(0x80000003); 
     184                zero.Seek(0x7ffffffe, IOStream::SeekType_Absolute); 
     185                TEST_THAT(zero.GetPosition() == 0x7ffffffe); 
     186                TEST_THAT(zero.Read(buffer, 8) == 5); 
     187                TEST_THAT(zero.GetPosition() == 0x80000003); 
     188                TEST_THAT(zero.Read(buffer, 8) == 0); 
     189                zero.Seek(0, IOStream::SeekType_Absolute); 
     190                TEST_THAT(zero.GetPosition() == 0); 
     191 
     192                char* buffer2 = new char [0x1000000]; 
     193                TEST_THAT(buffer2 != NULL); 
     194 
     195                PartialReadStream part(zero, 0x80000002); 
     196                for (int i = 0; i < 0x80; i++) 
     197                { 
     198                        int read = part.Read(buffer2, 0x1000000); 
     199                        TEST_THAT(read == 0x1000000); 
     200                } 
     201                TEST_THAT(part.Read(buffer, 8) == 2); 
     202                TEST_THAT(part.Read(buffer, 8) == 0); 
     203 
     204                delete [] buffer2; 
     205 
     206                ReadGatherStream gather(false); 
     207                zero.Seek(0, IOStream::SeekType_Absolute); 
     208                int component = gather.AddComponent(&zero); 
     209                gather.AddBlock(component, 0x80000002); 
     210                TEST_THAT(gather.Read(buffer, 8) == 8); 
     211        } 
     212 
    176213        // Test self-deleting temporary file streams 
    177214        {