diff options
Diffstat (limited to '')
| -rw-r--r-- | src/unit/myriad.unit | 60 |
1 files changed, 55 insertions, 5 deletions
diff --git a/src/unit/myriad.unit b/src/unit/myriad.unit index d27c0dc..a88650f 100644 --- a/src/unit/myriad.unit +++ b/src/unit/myriad.unit | |||
| @@ -25,8 +25,7 @@ suite Myriad | |||
| 25 | FString sFileName("myriad-XXXXXXX"); | 25 | FString sFileName("myriad-XXXXXXX"); |
| 26 | 26 | ||
| 27 | File fMyriad = tempFile( sFileName ); | 27 | File fMyriad = tempFile( sFileName ); |
| 28 | Myriad m( fMyriad ); | 28 | Myriad m( fMyriad, 32 ); |
| 29 | m.initialize( 64 ); | ||
| 30 | 29 | ||
| 31 | MyriadStream ms = m.openStream( m.createStream() ); | 30 | MyriadStream ms = m.openStream( m.createStream() ); |
| 32 | ms.setSize( 150 ); | 31 | ms.setSize( 150 ); |
| @@ -54,7 +53,21 @@ suite Myriad | |||
| 54 | { | 53 | { |
| 55 | buf[j] = (j+iSize)%256; | 54 | buf[j] = (j+iSize)%256; |
| 56 | } | 55 | } |
| 57 | s.write( buf, iSize-8 ); | 56 | if( random()%2 == 0 ) |
| 57 | { | ||
| 58 | s.write( buf, iSize-8 ); | ||
| 59 | } | ||
| 60 | else | ||
| 61 | { | ||
| 62 | for( int j = 0; j < iSize-8; ) | ||
| 63 | { | ||
| 64 | int iAmnt = (random()%8)+1; | ||
| 65 | if( iAmnt+j > iSize-8 ) | ||
| 66 | iAmnt = iSize-8-j; | ||
| 67 | iAmnt = s.write( buf+j, iAmnt ); | ||
| 68 | j += iAmnt; | ||
| 69 | } | ||
| 70 | } | ||
| 58 | delete[] buf; | 71 | delete[] buf; |
| 59 | iSize = ~iSize; | 72 | iSize = ~iSize; |
| 60 | s.write( &iSize, 4 ); | 73 | s.write( &iSize, 4 ); |
| @@ -79,7 +92,8 @@ suite Myriad | |||
| 79 | { | 92 | { |
| 80 | char b = buf[j]; | 93 | char b = buf[j]; |
| 81 | delete[] buf; | 94 | delete[] buf; |
| 82 | throw ExceptionBase("Block failed computed data verify (%02X==%02X).", b, (char)((j+iSize)%256) ); | 95 | throw ExceptionBase("Block failed computed data verify " |
| 96 | "(%02X==%02X).", b, (char)((j+iSize)%256) ); | ||
| 83 | } | 97 | } |
| 84 | } | 98 | } |
| 85 | delete[] buf; | 99 | delete[] buf; |
| @@ -164,7 +178,7 @@ suite Myriad | |||
| 164 | 178 | ||
| 165 | File fMyriad = tempFile( sFileName ); | 179 | File fMyriad = tempFile( sFileName ); |
| 166 | Myriad m( fMyriad ); | 180 | Myriad m( fMyriad ); |
| 167 | m.initialize( 64 ); | 181 | m.initialize( 128 ); |
| 168 | 182 | ||
| 169 | Array<int> aStream; | 183 | Array<int> aStream; |
| 170 | 184 | ||
| @@ -190,5 +204,41 @@ suite Myriad | |||
| 190 | } | 204 | } |
| 191 | } | 205 | } |
| 192 | } | 206 | } |
| 207 | |||
| 208 | test stressTruncate2 | ||
| 209 | { | ||
| 210 | FString sFileName("myriad-XXXXXXX"); | ||
| 211 | |||
| 212 | Array<int> aStream; | ||
| 213 | |||
| 214 | { | ||
| 215 | File fMyriad = tempFile( sFileName ); | ||
| 216 | Myriad m( fMyriad, 64 ); | ||
| 217 | |||
| 218 | for( int j = 0; j < 5; j++ ) | ||
| 219 | { | ||
| 220 | aStream.append( m.createStream() ); | ||
| 221 | } | ||
| 222 | } | ||
| 223 | |||
| 224 | srandom( 1024 ); | ||
| 225 | |||
| 226 | char b; | ||
| 227 | for( int iter = 0; iter < 2500; iter++ ) | ||
| 228 | { | ||
| 229 | File fMyriad( sFileName, File::ReadWrite ); | ||
| 230 | Myriad m( fMyriad ); | ||
| 231 | for( Array<int>::iterator i = aStream.begin(); i; i++ ) | ||
| 232 | { | ||
| 233 | MyriadStream ms = m.openStream( *i ); | ||
| 234 | addBlock( ms, false ); | ||
| 235 | ms.setSize( ms.tell() ); | ||
| 236 | unitTest( ms.read( &b, 1 ) == 0 ); | ||
| 237 | ms.setPos( 0 ); | ||
| 238 | verifyBlock( ms ); | ||
| 239 | unitTest( ms.read( &b, 1 ) == 0 ); | ||
| 240 | } | ||
| 241 | } | ||
| 242 | } | ||
| 193 | } | 243 | } |
| 194 | 244 | ||
