1 // 2 // ANTLRFastQueueTest.m 3 // ANTLR 4 // 5 // Created by Ian Michell on 13/05/2010. 6 // Copyright 2010 Ian Michell and Alan Condit. All rights reserved. 7 // 8 9 #import "ANTLRFastQueueTest.h" 10 #import "ANTLRFastQueue.h" 11 #import "ANTLRError.h" 12 #import "ANTLRRuntimeException.h" 13 14 @implementation ANTLRFastQueueTest 15 16 -(void) testInit 17 { 18 ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain]; 19 STAssertNotNil(queue, @"Queue was not created and was nil"); 20 [queue release]; 21 } 22 23 -(void) testAddAndGet 24 { 25 ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain]; 26 STAssertNotNil(queue, @"Queue was not created and was nil"); 27 [queue addObject:@"My String"]; 28 STAssertTrue([[queue objectAtIndex:0] isKindOfClass:[NSString class]], @"First object is not a NSString"); 29 STAssertEquals([queue objectAtIndex:0], @"My String", @"Object at index zero is invalid"); 30 STAssertTrue([queue size] == 1, @"Queue is the wrong size: %d", [queue size]); 31 [queue release]; 32 } 33 34 -(void) testInvalidElementIndex 35 { 36 //ANTLRRuntimeException *ANTLRNoSuchElementException = [ANTLRNoSuchElementException newException:@"No such element exception"]; 37 id retVal; 38 ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain]; 39 STAssertNotNil(queue, @"Queue was not created and was nil"); 40 @try 41 { 42 retVal = [queue objectAtIndex:100]; 43 } 44 @catch (ANTLRNoSuchElementException *e) 45 { 46 STAssertTrue([[e name] isEqualTo:@"ANTLRNoSuchElementException"], @"Exception was not type: ANTLRNoSuchElementException -- %@", [e name]); 47 return; 48 } 49 STFail(@"Exception ANTLRNoSuchElementException was not thrown -- %@", [retVal name]); 50 [queue release]; 51 } 52 53 -(void) testHead 54 { 55 ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain]; 56 STAssertNotNil(queue, @"Queue was not created and was nil"); 57 [queue addObject:@"Item 1"]; 58 [queue addObject:@"Item 2"]; 59 [queue addObject:@"Item 3"]; 60 id head = [queue head]; 61 STAssertNotNil(head, @"Object returned from head is nil"); 62 STAssertEquals(head, @"Item 1", @"Object returned was not first item in"); 63 [queue release]; 64 } 65 66 -(void) testClear 67 { 68 ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain]; 69 STAssertNotNil(queue, @"Queue was not created and was nil"); 70 [queue addObject:@"Item 1"]; 71 [queue addObject:@"Item 2"]; 72 [queue addObject:@"Item 3"]; 73 STAssertTrue([queue size] == 3, @"Queue was too small, was: %d expected 3", [queue size]); 74 [queue reset]; 75 STAssertTrue([queue size] == 0, @"Queue is not empty, it's still %d", [queue size]); 76 [queue release]; 77 } 78 79 -(void) testDescription 80 { 81 ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain]; 82 STAssertNotNil(queue, @"Queue was not created and was nil"); 83 [queue addObject:@"My"]; 84 [queue addObject:@"String"]; 85 STAssertTrue([[queue description] isEqualToString:@"My String"], @"Queue description was not right, got: \"%@\" expected: \"My String\"", [queue description]); 86 [queue release]; 87 } 88 89 -(void) testRemove 90 { 91 ANTLRFastQueue *queue = [[ANTLRFastQueue newANTLRFastQueue] retain]; 92 STAssertNotNil(queue, @"Queue was not created and was nil"); 93 [queue addObject:@"My"]; 94 [queue addObject:@"String"]; 95 STAssertTrue([queue size] == 2, @"Queue not the correct size, was: %d expected 2", [queue size]); 96 [queue remove]; 97 STAssertTrue([queue size] == 1, @"Queue not the correct size, was %d expected 1", [queue size]); 98 [queue remove]; // test that the queue is reset when we remove the last object... 99 STAssertTrue([queue size] == 0, @"Queue was not reset, when we hit the buffer, was still %d", [queue size]); 100 [queue release]; 101 } 102 103 @end 104