/*!
@header BDBRecnoAccessTEST
@abstract Module of BDB
@copyright 2004, 2005, 2006 Free Software Foundation, Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-------------------------------------------------------------------------
Modification history
21.03.05 ola initial version
-------------------------------------------------------------------------
*/
#include
#include
@implementation BDBRecnoAccessTEST
- appendValue: (NSString *) strToAppend expectedRecordNr: (u_int32_t) recno
withDatabase: (BDBDatabase *) database {
BDBDatabaseRecordNumber *nr;
BDBOperationStatus status;
BDBDatabaseEntry *value;
u_int32_t appendNr;
NSString *msg;
EC_AUTORELEASEPOOL_BEGIN
nr = [[BDBDatabaseRecordNumber alloc] init];
[nr autorelease];
value = [[BDBDatabaseEntry alloc] initWithObject: strToAppend ];
[value autorelease];
status = [database appendEntryWithTransaction: nil
entryToAppend: value
resultingRecordNr: nr];
msg = [[[NSString alloc]
initWithFormat: @"BDBRecnoAccessTEST::testRecNoAccess: Appending of "\
"string \"%@\" FAILED with status=%d", strToAppend, (int) status]
autorelease];
ECAssertTrue( status == BDB_STATUS_SUCCESS, msg );
appendNr = [nr entryNumber];
NSLog( @"BDBRecnoAccessTEST::testRecNoAccess: Added record nr=%u",
recno );
msg = [[[NSString alloc]
initWithFormat: @"BDBRecnoAccessTEST::testRecNoAccess: Nr of "\
"created record does not equal %u. Instead: %u", recno, appendNr ]
autorelease];
ECAssertTrue( recno == appendNr, msg );
EC_AUTORELEASEPOOL_END
return self;
}
- testRecNoAccess {
BDBDatabaseConfig *dbConfig;
BDBDatabase *database;
NSMutableArray *values;
int i;
BDBDatabaseRecordNumber *recNo;
EC_AUTORELEASEPOOL_BEGIN
values = [[NSMutableArray alloc] init];
[values autorelease];
NSLog( @"BDBRecnoAccessTEST::testRecNoAccess: BEGIN..." );
dbConfig = [[[BDBDatabaseConfig alloc] init] autorelease];
[dbConfig setDatabaseType: BDB_RECNO];
[dbConfig setAllowCreate: YES];
NSLog( @"Creating the database..." );
database = [BDBDatabase
initWithFilename: @"TESTrecno.db"
databaseName: nil
databaseConfig: dbConfig];
[database autorelease];
[values insertObject: @"Item 1" atIndex: 0 ];
[values insertObject: @"Item 2" atIndex: 1 ];
[values insertObject: @"Item 3" atIndex: 2 ];
NSLog( @"BDBRecnoAccessTEST::testRecNoAccess: Adding records of diverse "\
"sizes..." );
[self appendValue: [values objectAtIndex: 0]
expectedRecordNr: 1 withDatabase: database];
[self appendValue: [values objectAtIndex: 1 ]
expectedRecordNr: 2 withDatabase: database];
[self appendValue: [values objectAtIndex: 2]
expectedRecordNr: 3 withDatabase: database];
NSLog( @"BDBRecnoAccessTEST::testRecNoAccess: Checking insertions now..." );
for( i = 1; i < 4; i++ ) {
BDBDatabaseEntry *data;
NSString *message;
NSString *retrievedStr;
recNo = [[[BDBDatabaseRecordNumber alloc] initWithEntryNumber: i ]
autorelease];
data = [[[BDBDatabaseEntry alloc] init] autorelease];
NSAssert( BDB_STATUS_SUCCESS == [database getEntryWithTransaction:nil
recordNumber:recNo data: data], @"Fetching record number=1 FAILED!" );
message = [[[NSString alloc] initWithFormat:
@"BDBRecnoAccessTEST::testRecNoAccess: Insertion nr=%u does not contain"\
" expected value", i ] autorelease];
retrievedStr = [data object];
ECAssertTrue( [retrievedStr isEqualToString: [values objectAtIndex: i-1 ]],
message );
message = [[[NSString alloc]initWithFormat:
@"BDBRecnoAccessTEST::testRecNoAccess: Insertion at%u is OK", i ]
autorelease];
NSLog( message );
}
[database close];
NSLog( @"BDBRecnoAccessTEST::testRecNoAccess: FINISHED" );
EC_AUTORELEASEPOOL_END
return self;
}
@end