blob: 74508a7c727d8162f388a46c19adab2c580d017e [file] [log] [blame]
//
// ANTLRFastQueueTest.m
// ANTLR
//
// Created by Ian Michell on 13/05/2010.
// Copyright 2010 Ian Michell and Alan Condit. All rights reserved.
//
#import "ANTLRFastQueueTest.h"
#import "ANTLRFastQueue.h"
#import "ANTLRError.h"
#import "ANTLRRuntimeException.h"
@implementation ANTLRFastQueueTest
-(void) testInit
{
ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain];
STAssertNotNil(queue, @"Queue was not created and was nil");
[queue release];
}
-(void) testAddAndGet
{
ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain];
STAssertNotNil(queue, @"Queue was not created and was nil");
[queue addObject:@"My String"];
STAssertTrue([[queue objectAtIndex:0] isKindOfClass:[NSString class]], @"First object is not a NSString");
STAssertEquals([queue objectAtIndex:0], @"My String", @"Object at index zero is invalid");
STAssertTrue([queue size] == 1, @"Queue is the wrong size: %d", [queue size]);
[queue release];
}
-(void) testInvalidElementIndex
{
//ANTLRRuntimeException *ANTLRNoSuchElementException = [ANTLRNoSuchElementException newException:@"No such element exception"];
id retVal;
ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain];
STAssertNotNil(queue, @"Queue was not created and was nil");
@try
{
retVal = [queue objectAtIndex:100];
}
@catch (ANTLRNoSuchElementException *e)
{
STAssertTrue([[e name] isEqualTo:@"ANTLRNoSuchElementException"], @"Exception was not type: ANTLRNoSuchElementException -- %@", [e name]);
return;
}
STFail(@"Exception ANTLRNoSuchElementException was not thrown -- %@", [retVal name]);
[queue release];
}
-(void) testHead
{
ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain];
STAssertNotNil(queue, @"Queue was not created and was nil");
[queue addObject:@"Item 1"];
[queue addObject:@"Item 2"];
[queue addObject:@"Item 3"];
id head = [queue head];
STAssertNotNil(head, @"Object returned from head is nil");
STAssertEquals(head, @"Item 1", @"Object returned was not first item in");
[queue release];
}
-(void) testClear
{
ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain];
STAssertNotNil(queue, @"Queue was not created and was nil");
[queue addObject:@"Item 1"];
[queue addObject:@"Item 2"];
[queue addObject:@"Item 3"];
STAssertTrue([queue size] == 3, @"Queue was too small, was: %d expected 3", [queue size]);
[queue reset];
STAssertTrue([queue size] == 0, @"Queue is not empty, it's still %d", [queue size]);
[queue release];
}
-(void) testDescription
{
ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain];
STAssertNotNil(queue, @"Queue was not created and was nil");
[queue addObject:@"My"];
[queue addObject:@"String"];
STAssertTrue([[queue description] isEqualToString:@"My String"], @"Queue description was not right, got: \"%@\" expected: \"My String\"", [queue description]);
[queue release];
}
-(void) testRemove
{
ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain];
STAssertNotNil(queue, @"Queue was not created and was nil");
[queue addObject:@"My"];
[queue addObject:@"String"];
STAssertTrue([queue size] == 2, @"Queue not the correct size, was: %d expected 2", [queue size]);
[queue remove];
STAssertTrue([queue size] == 1, @"Queue not the correct size, was %d expected 1", [queue size]);
[queue remove]; // test that the queue is reset when we remove the last object...
STAssertTrue([queue size] == 0, @"Queue was not reset, when we hit the buffer, was still %d", [queue size]);
[queue release];
}
@end