19682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 29682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall/* sanity tests on SDL_rwops.c (usefull for alternative implementations of stdio rwops) */ 39682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 49682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#include <stdlib.h> 59682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 69682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#ifndef _MSC_VER 79682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#include <unistd.h> 89682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#endif 99682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 109682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#include "SDL.h" 119682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#include "SDL_endian.h" 129682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 139682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 149682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#include <stdio.h> 159682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 169682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall/* WARNING ! those 2 files will be destroyed by this test program */ 179682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#define FBASENAME1 "sdldata1" /* this file will be created during tests */ 189682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#define FBASENAME2 "sdldata2" /* this file should not exists before starting test */ 199682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 209682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 219682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#ifndef NULL 229682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#define NULL ((void *)0) 239682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#endif 249682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 259682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hallstatic void cleanup( void ) { 269682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 279682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall unlink(FBASENAME1); 289682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall unlink(FBASENAME2); 299682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall} 309682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 319682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hallstatic void rwops_error_quit( unsigned line, SDL_RWops *rwops) { 329682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 339682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall printf("testfile.c(%d): failed\n",line); 349682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (rwops) { 359682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); /* This calls SDL_FreeRW(rwops); */ 369682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall } 379682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall cleanup(); 389682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall exit(1); /* quit with rwops error (test failed) */ 399682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall} 409682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 419682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall#define RWOP_ERR_QUIT(x) rwops_error_quit( __LINE__, (x) ) 429682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 439682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 449682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 459682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hallint main(int argc, char *argv[]) 469682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall{ 479682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall SDL_RWops *rwops = NULL; 489682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall char test_buf[30]; 499682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 509682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall cleanup(); 519682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 529682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall/* test 1 : basic argument test: all those calls to SDL_RWFromFile should fail */ 539682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 549682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(NULL,NULL); 559682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (rwops) RWOP_ERR_QUIT(rwops); 569682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(NULL,"ab+"); 579682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (rwops) RWOP_ERR_QUIT(rwops); 589682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(NULL,"sldfkjsldkfj"); 599682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (rwops) RWOP_ERR_QUIT(rwops); 609682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile("something",""); 619682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (rwops) RWOP_ERR_QUIT(rwops); 629682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile("something",NULL); 639682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (rwops) RWOP_ERR_QUIT(rwops); 649682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall printf("test1 OK\n"); 659682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 669682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall/* test 2 : check that inexistant file is not successfully opened/created when required */ 679682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall/* modes : r, r+ implie that file MUST exist 689682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall modes : a, a+, w, w+ checks that it succeeds (file may not exists) 699682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 709682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall */ 719682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME2,"rb"); /* this file doesn't exist that call must fail */ 729682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (rwops) RWOP_ERR_QUIT(rwops); 739682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME2,"rb+"); /* this file doesn't exist that call must fail */ 749682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (rwops) RWOP_ERR_QUIT(rwops); 759682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME2,"wb"); 769682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (!rwops) RWOP_ERR_QUIT(rwops); 779682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); unlink(FBASENAME2); 789682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME2,"wb+"); 799682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (!rwops) RWOP_ERR_QUIT(rwops); 809682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); unlink(FBASENAME2); 819682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME2,"ab"); 829682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (!rwops) RWOP_ERR_QUIT(rwops); 839682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); unlink(FBASENAME2); 849682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME2,"ab+"); 859682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (!rwops) RWOP_ERR_QUIT(rwops); 869682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); unlink(FBASENAME2); 879682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall printf("test2 OK\n"); 889682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 899682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall/* test 3 : creation, writing , reading, seeking, 909682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall test : w mode, r mode, w+ mode 919682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall */ 929682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME1,"wb"); /* write only */ 939682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (!rwops) RWOP_ERR_QUIT(rwops); 949682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (1 != rwops->write(rwops,"1234567890",10,1) ) RWOP_ERR_QUIT(rwops); 959682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (10 != rwops->write(rwops,"1234567890",1,10) ) RWOP_ERR_QUIT(rwops); 969682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (7 != rwops->write(rwops,"1234567",1,7) ) RWOP_ERR_QUIT(rwops); 979682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,0L,RW_SEEK_SET)) RWOP_ERR_QUIT(rwops); 989682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->read(rwops,test_buf,1,1)) RWOP_ERR_QUIT(rwops); /* we are in write only mode */ 999682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); 1009682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 1019682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME1,"rb"); /* read mode, file must exists */ 1029682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (!rwops) RWOP_ERR_QUIT(rwops); 1039682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,0L,RW_SEEK_SET)) RWOP_ERR_QUIT(rwops); 1049682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (20!=rwops->seek(rwops,-7,RW_SEEK_END)) RWOP_ERR_QUIT(rwops); 1059682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (7!=rwops->read(rwops,test_buf,1,7)) RWOP_ERR_QUIT(rwops); 1069682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (SDL_memcmp(test_buf,"1234567",7)) RWOP_ERR_QUIT(rwops); 1079682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->read(rwops,test_buf,1,1)) RWOP_ERR_QUIT(rwops); 1089682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->read(rwops,test_buf,10,100)) RWOP_ERR_QUIT(rwops); 1099682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,-27,RW_SEEK_CUR)) RWOP_ERR_QUIT(rwops); 1109682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (2!=rwops->read(rwops,test_buf,10,3)) RWOP_ERR_QUIT(rwops); 1119682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (SDL_memcmp(test_buf,"12345678901234567890",20)) RWOP_ERR_QUIT(rwops); 1129682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->write(rwops,test_buf,1,1)) RWOP_ERR_QUIT(rwops); /* readonly mode */ 1139682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); 1149682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 1159682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall/* test 3: same with w+ mode */ 1169682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME1,"wb+"); /* write + read + truncation */ 1179682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (!rwops) RWOP_ERR_QUIT(rwops); 1189682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (1 != rwops->write(rwops,"1234567890",10,1) ) RWOP_ERR_QUIT(rwops); 1199682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (10 != rwops->write(rwops,"1234567890",1,10) ) RWOP_ERR_QUIT(rwops); 1209682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (7 != rwops->write(rwops,"1234567",1,7) ) RWOP_ERR_QUIT(rwops); 1219682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,0L,RW_SEEK_SET)) RWOP_ERR_QUIT(rwops); 1229682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (1!=rwops->read(rwops,test_buf,1,1)) RWOP_ERR_QUIT(rwops); /* we are in read/write mode */ 1239682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,0L,RW_SEEK_SET)) RWOP_ERR_QUIT(rwops); 1249682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (20!=rwops->seek(rwops,-7,RW_SEEK_END)) RWOP_ERR_QUIT(rwops); 1259682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (7!=rwops->read(rwops,test_buf,1,7)) RWOP_ERR_QUIT(rwops); 1269682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (SDL_memcmp(test_buf,"1234567",7)) RWOP_ERR_QUIT(rwops); 1279682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->read(rwops,test_buf,1,1)) RWOP_ERR_QUIT(rwops); 1289682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->read(rwops,test_buf,10,100)) RWOP_ERR_QUIT(rwops); 1299682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,-27,RW_SEEK_CUR)) RWOP_ERR_QUIT(rwops); 1309682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (2!=rwops->read(rwops,test_buf,10,3)) RWOP_ERR_QUIT(rwops); 1319682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (SDL_memcmp(test_buf,"12345678901234567890",20)) RWOP_ERR_QUIT(rwops); 1329682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); 1339682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall printf("test3 OK\n"); 1349682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 1359682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall/* test 4: same in r+ mode */ 1369682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME1,"rb+"); /* write + read + file must exists, no truncation */ 1379682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (!rwops) RWOP_ERR_QUIT(rwops); 1389682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (1 != rwops->write(rwops,"1234567890",10,1) ) RWOP_ERR_QUIT(rwops); 1399682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (10 != rwops->write(rwops,"1234567890",1,10) ) RWOP_ERR_QUIT(rwops); 1409682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (7 != rwops->write(rwops,"1234567",1,7) ) RWOP_ERR_QUIT(rwops); 1419682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,0L,RW_SEEK_SET)) RWOP_ERR_QUIT(rwops); 1429682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (1!=rwops->read(rwops,test_buf,1,1)) RWOP_ERR_QUIT(rwops); /* we are in read/write mode */ 1439682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,0L,RW_SEEK_SET)) RWOP_ERR_QUIT(rwops); 1449682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (20!=rwops->seek(rwops,-7,RW_SEEK_END)) RWOP_ERR_QUIT(rwops); 1459682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (7!=rwops->read(rwops,test_buf,1,7)) RWOP_ERR_QUIT(rwops); 1469682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (SDL_memcmp(test_buf,"1234567",7)) RWOP_ERR_QUIT(rwops); 1479682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->read(rwops,test_buf,1,1)) RWOP_ERR_QUIT(rwops); 1489682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->read(rwops,test_buf,10,100)) RWOP_ERR_QUIT(rwops); 1499682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,-27,RW_SEEK_CUR)) RWOP_ERR_QUIT(rwops); 1509682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (2!=rwops->read(rwops,test_buf,10,3)) RWOP_ERR_QUIT(rwops); 1519682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (SDL_memcmp(test_buf,"12345678901234567890",20)) RWOP_ERR_QUIT(rwops); 1529682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); 1539682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall printf("test4 OK\n"); 1549682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 1559682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall/* test5 : append mode */ 1569682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops = SDL_RWFromFile(FBASENAME1,"ab+"); /* write + read + append */ 1579682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (!rwops) RWOP_ERR_QUIT(rwops); 1589682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (1 != rwops->write(rwops,"1234567890",10,1) ) RWOP_ERR_QUIT(rwops); 1599682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (10 != rwops->write(rwops,"1234567890",1,10) ) RWOP_ERR_QUIT(rwops); 1609682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (7 != rwops->write(rwops,"1234567",1,7) ) RWOP_ERR_QUIT(rwops); 1619682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,0L,RW_SEEK_SET)) RWOP_ERR_QUIT(rwops); 1629682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 1639682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (1!=rwops->read(rwops,test_buf,1,1)) RWOP_ERR_QUIT(rwops); 1649682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,0L,RW_SEEK_SET)) RWOP_ERR_QUIT(rwops); 1659682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 1669682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (20+27!=rwops->seek(rwops,-7,RW_SEEK_END)) RWOP_ERR_QUIT(rwops); 1679682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (7!=rwops->read(rwops,test_buf,1,7)) RWOP_ERR_QUIT(rwops); 1689682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (SDL_memcmp(test_buf,"1234567",7)) RWOP_ERR_QUIT(rwops); 1699682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->read(rwops,test_buf,1,1)) RWOP_ERR_QUIT(rwops); 1709682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->read(rwops,test_buf,10,100)) RWOP_ERR_QUIT(rwops); 1719682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 1729682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (27!=rwops->seek(rwops,-27,RW_SEEK_CUR)) RWOP_ERR_QUIT(rwops); 1739682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall 1749682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (0!=rwops->seek(rwops,0L,RW_SEEK_SET)) RWOP_ERR_QUIT(rwops); 1759682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (3!=rwops->read(rwops,test_buf,10,3)) RWOP_ERR_QUIT(rwops); 1769682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall if (SDL_memcmp(test_buf,"123456789012345678901234567123",30)) 1779682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall RWOP_ERR_QUIT(rwops); 1789682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall rwops->close(rwops); 1799682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall printf("test5 OK\n"); 1809682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall cleanup(); 1819682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall return 0; /* all ok */ 1829682c8870b8ff5e4ac2e4c70b759f791c6f38c1fJesse Hall} 183