mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			122 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			122 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Objective-C
		
	
#import "CyclicalBufferTest.h"
 | 
						|
#import "CyclicalBuffer.h"
 | 
						|
#import "TestUtil.h"
 | 
						|
 | 
						|
@implementation CyclicalBufferTest
 | 
						|
-(void) testEnqueueData {
 | 
						|
    CyclicalBuffer* c = [CyclicalBuffer new];
 | 
						|
    test([c enqueuedLength] == 0);
 | 
						|
    
 | 
						|
    [c enqueueData:increasingData(5)];
 | 
						|
    test([c enqueuedLength] == 5);
 | 
						|
 | 
						|
    // empty enqueueData does nothing
 | 
						|
    [c enqueueData:[NSData data]];
 | 
						|
    test([c enqueuedLength] == 5);
 | 
						|
    
 | 
						|
    // nil enqueueData fails without ruining everything
 | 
						|
    testThrows([c enqueueData:nil]);
 | 
						|
    test([c enqueuedLength] == 5);
 | 
						|
    
 | 
						|
    [c enqueueData:increasingData(5)];
 | 
						|
    test([c enqueuedLength] == 10);
 | 
						|
 | 
						|
    [c enqueueData:increasingData(5000)];
 | 
						|
    test([c enqueuedLength] == 5010);
 | 
						|
}
 | 
						|
-(void) testGrow {
 | 
						|
    CyclicalBuffer* c = [CyclicalBuffer new];
 | 
						|
    NSUInteger n = 10000;
 | 
						|
    for (NSUInteger i = 0; i < n; i++) {
 | 
						|
        test([c enqueuedLength] == i*4);
 | 
						|
        [c enqueueData:increasingDataFrom(i*6, 6)];
 | 
						|
        NSData* d = [c dequeueDataWithLength:2];
 | 
						|
        test([d isEqualToData:increasingDataFrom(i*2, 2)]);
 | 
						|
    }
 | 
						|
    test([c enqueuedLength] == n*4);
 | 
						|
    test([[c dequeueDataWithLength:n*4] isEqualToData:increasingDataFrom(n*2, n*4)]);
 | 
						|
}
 | 
						|
-(void) testCycle {
 | 
						|
    CyclicalBuffer* c = [CyclicalBuffer new];
 | 
						|
    [c enqueueData:[NSMutableData dataWithLength:200]];
 | 
						|
    for (int i = 0; i < 100; i++) {
 | 
						|
        [c enqueueData:[NSMutableData dataWithLength:11]];
 | 
						|
        test([[c dequeueDataWithLength:13] isEqualToData:[NSMutableData dataWithLength:13]]);
 | 
						|
    }
 | 
						|
}
 | 
						|
-(void) testDequeueStable {
 | 
						|
    CyclicalBuffer* c = [CyclicalBuffer new];
 | 
						|
    [c enqueueData:increasingData(20)];
 | 
						|
    [c enqueueData:[NSMutableData dataWithLength:200]];
 | 
						|
    NSData* d = [c dequeueDataWithLength:20];
 | 
						|
    for (int i = 0; i < 100; i++) {
 | 
						|
        [c enqueueData:[NSMutableData dataWithLength:11]];
 | 
						|
        test([[c dequeueDataWithLength:13] isEqualToData:[NSMutableData dataWithLength:13]]);
 | 
						|
    }
 | 
						|
    test([d isEqualToData:increasingData(20)]);
 | 
						|
}
 | 
						|
-(void) testCycleVolatile {
 | 
						|
    CyclicalBuffer* c = [CyclicalBuffer new];
 | 
						|
    [c enqueueData:increasingData(200)];
 | 
						|
    for (NSUInteger i = 0; i < 100; i++) {
 | 
						|
        [c enqueueData:increasingDataFrom(200+i*11, 11)];
 | 
						|
        test([[c dequeuePotentialyVolatileDataWithLength:13] isEqualToData:increasingDataFrom(i*13, 13)]);
 | 
						|
    }
 | 
						|
}
 | 
						|
-(void) testDequeue {
 | 
						|
    CyclicalBuffer* c = [CyclicalBuffer new];
 | 
						|
    [c enqueueData:increasingData(5000)];
 | 
						|
    
 | 
						|
    test([[c dequeueDataWithLength:0] length] == 0);
 | 
						|
    test([c enqueuedLength] == 5000);
 | 
						|
    test([[c dequeueDataWithLength:5] isEqualToData:increasingData(5)]);
 | 
						|
    test([c enqueuedLength] == 4995);
 | 
						|
    test([[c dequeueDataWithLength:1] isEqualToData:increasingDataFrom(5, 1)]);
 | 
						|
    test([c enqueuedLength] == 4994);
 | 
						|
    testThrows([c dequeueDataWithLength:4995]);
 | 
						|
    test([c enqueuedLength] == 4994);
 | 
						|
    test([[c dequeueDataWithLength:4994] isEqualToData:increasingDataFrom(6, 4994)]);
 | 
						|
    test([c enqueuedLength] == 0);
 | 
						|
}
 | 
						|
-(void) testDiscard {
 | 
						|
    CyclicalBuffer* c = [CyclicalBuffer new];
 | 
						|
    [c enqueueData:increasingData(5000)];
 | 
						|
    
 | 
						|
    [c discard:4000];
 | 
						|
    test([c enqueuedLength] == 1000);
 | 
						|
    test([[c dequeueDataWithLength:100] isEqualToData:increasingDataFrom(4000, 100)]);
 | 
						|
    testThrows([c discard:4325663]);
 | 
						|
    testThrows([c discard:901]);
 | 
						|
    [c discard:0];
 | 
						|
    testThrows([c discard:901]);
 | 
						|
    [c discard:900];
 | 
						|
    test([c enqueuedLength] == 0);
 | 
						|
    testThrows([c discard:1]);
 | 
						|
    [c discard:0];
 | 
						|
}
 | 
						|
-(void) testDiscardStable {
 | 
						|
    CyclicalBuffer* c = [CyclicalBuffer new];
 | 
						|
    [c enqueueData:increasingData(200)];
 | 
						|
    for (NSUInteger i = 1; i <= 100; i++) {
 | 
						|
        [c enqueueData:increasingData(11)];
 | 
						|
        [c discard:13];
 | 
						|
        test([c enqueuedLength] == 200-2*i);
 | 
						|
    }
 | 
						|
}
 | 
						|
-(void) testDequeueVolatile {
 | 
						|
    CyclicalBuffer* c = [CyclicalBuffer new];
 | 
						|
    [c enqueueData:increasingData(5000)];
 | 
						|
    
 | 
						|
    test([[c dequeuePotentialyVolatileDataWithLength:0] length] == 0);
 | 
						|
    test([c enqueuedLength] == 5000);
 | 
						|
    test([[c dequeuePotentialyVolatileDataWithLength:5] isEqualToData:increasingData(5)]);
 | 
						|
    test([c enqueuedLength] == 4995);
 | 
						|
    test([[c dequeuePotentialyVolatileDataWithLength:1] isEqualToData:increasingDataFrom(5, 1)]);
 | 
						|
    test([c enqueuedLength] == 4994);
 | 
						|
    testThrows([c dequeuePotentialyVolatileDataWithLength:4995]);
 | 
						|
    test([c enqueuedLength] == 4994);
 | 
						|
    test([[c dequeuePotentialyVolatileDataWithLength:4994] isEqualToData:increasingDataFrom(6, 4994)]);
 | 
						|
    test([c enqueuedLength] == 0);
 | 
						|
}
 | 
						|
@end
 |