From abb0486ec148196a3664f2aad22c86175690f3f1 Mon Sep 17 00:00:00 2001 From: Craig Gidney Date: Tue, 18 Nov 2014 23:17:06 -0500 Subject: [PATCH] Fixed a warning in PriorityQueueTest, and some dot syntax //FREEBIE - Also simplified the comparators --- Signal.xcodeproj/project.pbxproj | 2 - .../incall_audio/processing/JitterQueue.m | 4 +- Signal/src/contact/ContactsManager.m | 4 +- .../PhoneNumberDirectoryFilter.m | 2 +- Signal/src/profiling/EventWindow.m | 2 +- Signal/test/util/FunctionalUtilTest.m | 16 ++-- Signal/test/util/PriorityQueueTest.h | 5 - Signal/test/util/PriorityQueueTest.m | 95 +++++++------------ Signal/test/util/QueueTest.m | 10 +- Signal/test/util/UtilTest.m | 6 +- 10 files changed, 57 insertions(+), 89 deletions(-) delete mode 100644 Signal/test/util/PriorityQueueTest.h diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index b0a545073..6eafdd961 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -1001,7 +1001,6 @@ A157074B17F0CD6D007C2BD6 /* ExceptionsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExceptionsTest.m; sourceTree = ""; }; A157074C17F0CD6D007C2BD6 /* FunctionalUtilTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionalUtilTest.h; sourceTree = ""; }; A157074D17F0CD6D007C2BD6 /* FunctionalUtilTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FunctionalUtilTest.m; sourceTree = ""; }; - A157074E17F0CD6D007C2BD6 /* PriorityQueueTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PriorityQueueTest.h; sourceTree = ""; }; A157074F17F0CD6D007C2BD6 /* PriorityQueueTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PriorityQueueTest.m; sourceTree = ""; }; A157075017F0CD6D007C2BD6 /* QueueTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QueueTest.h; sourceTree = ""; }; A157075117F0CD6D007C2BD6 /* QueueTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QueueTest.m; sourceTree = ""; }; @@ -2353,7 +2352,6 @@ A157074D17F0CD6D007C2BD6 /* FunctionalUtilTest.m */, BFB074BF19A4BCA400F2947C /* FutureUtilTest.m */, BFB074C019A4BCA400F2947C /* ObservableTest.m */, - A157074E17F0CD6D007C2BD6 /* PriorityQueueTest.h */, A157074F17F0CD6D007C2BD6 /* PriorityQueueTest.m */, A157075017F0CD6D007C2BD6 /* QueueTest.h */, A157075117F0CD6D007C2BD6 /* QueueTest.m */, diff --git a/Signal/src/audio/incall_audio/processing/JitterQueue.m b/Signal/src/audio/incall_audio/processing/JitterQueue.m index 43d810f92..b7dc26371 100644 --- a/Signal/src/audio/incall_audio/processing/JitterQueue.m +++ b/Signal/src/audio/incall_audio/processing/JitterQueue.m @@ -103,7 +103,7 @@ [idsInJitterQueue removeObject:@(discardedSequenceNumber)]; uint16_t oldReadHeadMax = readHeadMin+readHeadSpan-1; - readHeadMin = [[resultPriorityQueue peek] sequenceNumber]; + readHeadMin = [resultPriorityQueue.peek sequenceNumber]; readHeadSpan = 1; for (id e in watchers) { @@ -151,7 +151,7 @@ return isEmpty; } -(bool) checkReactIfNoDataUnderReadHeadForDequeue { - EncodedAudioPacket* result = [resultPriorityQueue peek]; + EncodedAudioPacket* result = resultPriorityQueue.peek; int16_t d = [NumberUtil congruentDifferenceMod2ToThe16From:readHeadMin to:[result sequenceNumber]]; bool notUnderHead = d < 0 || d >= readHeadSpan; diff --git a/Signal/src/contact/ContactsManager.m b/Signal/src/contact/ContactsManager.m index 5a91839f0..fc10c7fc4 100644 --- a/Signal/src/contact/ContactsManager.m +++ b/Signal/src/contact/ContactsManager.m @@ -233,7 +233,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in UIImage *img = [UIImage imageWithData:image]; ContactSearchBlock searchBlock = ^BOOL(NSNumber *obj, NSUInteger idx, BOOL *stop) { - return [obj intValue] == recordID; + return obj.intValue == recordID; }; NSUInteger favouriteIndex = [_favouriteContactIds indexOfObjectPassingTest:searchBlock]; @@ -394,7 +394,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in -(NSArray*) contactsForContactIds:(NSArray *)contactIds { NSMutableArray *contacts = [NSMutableArray array]; for (NSNumber *favouriteId in contactIds) { - Contact *contact = [self latestContactWithRecordId:[favouriteId intValue]]; + Contact *contact = [self latestContactWithRecordId:favouriteId.intValue]; if (contact) { [contacts addObject:contact]; diff --git a/Signal/src/phone/signaling/number directory/PhoneNumberDirectoryFilter.m b/Signal/src/phone/signaling/number directory/PhoneNumberDirectoryFilter.m index 3d36edc21..0ba63a3ee 100644 --- a/Signal/src/phone/signaling/number directory/PhoneNumberDirectoryFilter.m +++ b/Signal/src/phone/signaling/number directory/PhoneNumberDirectoryFilter.m @@ -40,7 +40,7 @@ NSString* hashCountHeader = response.allHeaderFields[HASH_COUNT_HEADER_KEY]; checkOperation(hashCountHeader != nil); - int hashCountValue = [hashCountHeader intValue]; + int hashCountValue = hashCountHeader.intValue; checkOperation(hashCountValue > 0); NSData* responseBody = data; diff --git a/Signal/src/profiling/EventWindow.m b/Signal/src/profiling/EventWindow.m index cb2fe3d3c..c0673368c 100644 --- a/Signal/src/profiling/EventWindow.m +++ b/Signal/src/profiling/EventWindow.m @@ -27,7 +27,7 @@ lastWindowEnding = endOfWindowTime; NSTimeInterval startOfWindowTime = endOfWindowTime - windowDuration; - while(events.count > 0 && [[events peek] doubleValue] < startOfWindowTime) { + while(events.count > 0 && [events.peek doubleValue] < startOfWindowTime) { [events dequeue]; } return events.count; diff --git a/Signal/test/util/FunctionalUtilTest.m b/Signal/test/util/FunctionalUtilTest.m index be3b6ced0..c753628f0 100644 --- a/Signal/test/util/FunctionalUtilTest.m +++ b/Signal/test/util/FunctionalUtilTest.m @@ -9,20 +9,20 @@ test(![@[@1] any:^(id x) { return false; }]); test([@[@1] any:^(id x) { return true; }]); - test([(@[@2, @3, @5]) any:^(id x) { return [x intValue] == 3; }]); - test(![(@[@2, @4, @5]) any:^(NSNumber* x) { return [x intValue] == 3; }]); + test([(@[@2, @3, @5]) any:^(NSNumber* x) { return x.intValue == 3; }]); + test(![(@[@2, @4, @5]) any:^(NSNumber* x) { return x.intValue == 3; }]); } -(void) testMap { test([[@[] map:^(id x) { return x; }] isEqualToArray:@[]]); test([[(@[@1,@2]) map:^(id x) { return x; }] isEqualToArray:(@[@1,@2])]); - test([[(@[@1,@2]) map:^(NSNumber* x) { return @([x intValue] + 1); }] isEqualToArray:(@[@2,@3])]); + test([[(@[@1,@2]) map:^(NSNumber* x) { return @(x.intValue + 1); }] isEqualToArray:(@[@2,@3])]); } -(void) testFilter { test([[@[] filter:^(id x) { return true; }] isEqualToArray:@[]]); test([[(@[@1,@2]) filter:^(NSNumber* x) { return true; }] isEqualToArray:(@[@1,@2])]); test([[(@[@1,@2]) filter:^(NSNumber* x) { return false; }] isEqualToArray:(@[])]); - test([[(@[@1,@2]) filter:^(NSNumber* x) { return [x intValue] == 1; }] isEqualToArray:(@[@1])]); - test([[(@[@1,@2]) filter:^(NSNumber* x) { return [x intValue] == 2; }] isEqualToArray:(@[@2])]); + test([[(@[@1,@2]) filter:^(NSNumber* x) { return x.intValue == 1; }] isEqualToArray:(@[@1])]); + test([[(@[@1,@2]) filter:^(NSNumber* x) { return x.intValue == 2; }] isEqualToArray:(@[@2])]); } -(void) testSum { test([(@[]) sumDouble] == 0); @@ -42,14 +42,14 @@ test([[@[@1] keyedBy:^id(id value) { return @true; }] isEqual:@{@true : @1}]); testThrows(([(@[@1, @2]) keyedBy:^id(id value) { return @true; }])); test([[(@[@1, @2]) keyedBy:^id(id value) { return value; }] isEqual:(@{@1 : @1, @2 : @2})]); - testThrows([(@[@1, @1, @2, @3, @5]) keyedBy:^id(id value) { return @([value intValue]/2); }]); - test([[(@[@3, @5, @7, @11, @13]) keyedBy:^id(id value) { return @([value intValue]/2); }] isEqual:(@{@1 : @3, @2 : @5, @3 : @7, @5 : @11, @6 : @13})]); + testThrows([(@[@1, @1, @2, @3, @5]) keyedBy:^id(NSNumber* value) { return @(value.intValue/2); }]); + test([[(@[@3, @5, @7, @11, @13]) keyedBy:^id(NSNumber* value) { return @(value.intValue/2); }] isEqual:(@{@1 : @3, @2 : @5, @3 : @7, @5 : @11, @6 : @13})]); } -(void) testGroupBy { test([[@[] groupBy:^id(id value) { return @true; }] isEqual:@{}]); test([[@[@1] groupBy:^id(id value) { return @true; }] isEqual:@{@true : @[@1]}]); test([[(@[@1, @2]) groupBy:^id(id value) { return @true; }] isEqual:@{@true : (@[@1, @2])}]); test([[(@[@1, @2]) groupBy:^id(id value) { return value; }] isEqual:(@{@1 : @[@1], @2 : @[@2]})]); - test([[(@[@1, @1, @2, @3, @5]) groupBy:^id(id value) { return @([value intValue]/2); }] isEqual:(@{@0 : @[@1, @1], @1 : @[@2, @3], @2 : @[@5]})]); + test([[(@[@1, @1, @2, @3, @5]) groupBy:^id(NSNumber* value) { return @(value.intValue/2); }] isEqual:(@{@0 : @[@1, @1], @1 : @[@2, @3], @2 : @[@5]})]); } @end diff --git a/Signal/test/util/PriorityQueueTest.h b/Signal/test/util/PriorityQueueTest.h deleted file mode 100644 index e2d3f61e5..000000000 --- a/Signal/test/util/PriorityQueueTest.h +++ /dev/null @@ -1,5 +0,0 @@ -#import - -@interface PriorityQueueTest : XCTestCase - -@end diff --git a/Signal/test/util/PriorityQueueTest.m b/Signal/test/util/PriorityQueueTest.m index 3f9c2bd46..b047990c6 100644 --- a/Signal/test/util/PriorityQueueTest.m +++ b/Signal/test/util/PriorityQueueTest.m @@ -1,31 +1,34 @@ -#import "PriorityQueueTest.h" +#import +#import "TestUtil.h" #import "PriorityQueue.h" #import "Util.h" -#import "TestUtil.h" -NSArray* RandomPermutation(NSUInteger count); -NSArray* Permutations(NSUInteger count); +@interface PriorityQueueTest : XCTestCase +@end -NSArray* RandomPermutation(NSUInteger count) { - NSUInteger d[count]; - for (NSUInteger i = 0; i < count; i++) +NSArray* RandomPermutation(uint32_t count); +NSArray* Permutations(uint32_t count); + +NSArray* RandomPermutation(uint32_t count) { + uint32_t d[count]; + for (uint32_t i = 0; i < count; i++) d[i] = i; - for (NSUInteger i = 0; i < count; i++) { - NSUInteger j = arc4random_uniform(count - i) + i; - NSUInteger t = d[i]; + for (uint32_t i = 0; i < count; i++) { + uint32_t j = arc4random_uniform(count - i) + i; + uint32_t t = d[i]; d[i] = d[j]; d[j] = t; } NSMutableArray* r = [NSMutableArray array]; - for (NSUInteger i = 0; i < count; i++) + for (uint32_t i = 0; i < count; i++) [r addObject:@(d[i])]; return r; } -NSArray* Permutations(NSUInteger count) { +NSArray* Permutations(uint32_t count) { if (count == 0) return @[]; NSMutableArray* r = [NSMutableArray array]; for (NSArray* s in Permutations(count - 1)) { - for (NSUInteger e = 0; e < count; e++) { + for (uint32_t e = 0; e < count; e++) { NSMutableArray* a = [NSMutableArray array]; [a addObject:@(e)]; for (NSNumber* x in s) { @@ -40,45 +43,31 @@ NSArray* Permutations(NSUInteger count) { @implementation PriorityQueueTest -(void) testTrivialPrioritizing { - PriorityQueue* q = [PriorityQueue priorityQueueAscendingWithComparator:^(id obj1, id obj2){ - int diff =[obj2 intValue] - [obj1 intValue]; - if (diff > 0 ) { - return (NSComparisonResult)NSOrderedAscending; - } else if (diff < 0){ - return (NSComparisonResult)NSOrderedDescending; - } else{ - return (NSComparisonResult)NSOrderedSame; - } + PriorityQueue* q = [PriorityQueue priorityQueueAscendingWithComparator:^(NSNumber* obj1, NSNumber* obj2){ + return [obj1 compare:obj2]; }]; test(q.count == 0); - testThrows([q peek]); + testThrows(q.peek); testThrows([q dequeue]); [q enqueue:@1]; [q enqueue:@2]; [q enqueue:@3]; test(q.count == 3); - test([[q peek] intValue] == 1); + test([q.peek intValue] == 1); test([[q dequeue] intValue] == 1); - test([[q peek] intValue] == 2); + test([q.peek intValue] == 2); test([[q dequeue] intValue] == 2); - test([[q peek] intValue] == 3); + test([q.peek intValue] == 3); test([[q dequeue] intValue] == 3); - testThrows([q peek]); + testThrows(q.peek); testThrows([q dequeue]); } -(void) testOrdersByComparatorInverse { PriorityQueue* q = [PriorityQueue priorityQueueAscendingWithComparator:^(NSNumber* obj1, NSNumber* obj2){ - int diff =[obj1 intValue] - [obj2 intValue]; - if (diff > 0) { - return (NSComparisonResult)NSOrderedAscending; - } else if (diff < 0){ - return (NSComparisonResult)NSOrderedDescending; - } else{ - return (NSComparisonResult)NSOrderedSame; - } + return [obj2 compare:obj1]; }]; - + [q enqueue:@1]; [q enqueue:@2]; [q enqueue:@3]; @@ -87,24 +76,17 @@ NSArray* Permutations(NSUInteger count) { test([[q dequeue] intValue] == 1); } -(void) testSortsAllSmallPermutations { - const NSUInteger N = 7; + const uint32_t N = 7; for (NSArray* permutation in Permutations(N)) { - PriorityQueue* q = [PriorityQueue priorityQueueAscendingWithComparator:^(id obj1, id obj2){ - int diff =[obj2 intValue] - [obj1 intValue]; - if (diff > 0 ) { - return (NSComparisonResult)NSOrderedAscending; - } else if (diff < 0){ - return (NSComparisonResult)NSOrderedDescending; - } else{ - return (NSComparisonResult)NSOrderedSame; - } + PriorityQueue* q = [PriorityQueue priorityQueueAscendingWithComparator:^(NSNumber* obj1, NSNumber* obj2){ + return [obj1 compare:obj2]; }]; for (NSNumber* e in permutation) { [q enqueue:e]; } // dequeues in order - for (NSUInteger i = 0; i < N; i++) { + for (uint32_t i = 0; i < N; i++) { test(q.count == N - i); test([[q dequeue] unsignedIntegerValue] == i); } @@ -112,18 +94,11 @@ NSArray* Permutations(NSUInteger count) { } } -(void) testSortsRandomLargePermutations { - const NSUInteger Size = 500; - const NSUInteger Repetitions = 50; - for (NSUInteger repeat = 0; repeat < Repetitions; repeat++) { - PriorityQueue* q = [PriorityQueue priorityQueueAscendingWithComparator:^(id obj1, id obj2){ - int diff =[obj2 intValue] - [obj1 intValue]; - if (diff > 0 ) { - return (NSComparisonResult)NSOrderedAscending; - } else if (diff < 0){ - return (NSComparisonResult)NSOrderedDescending; - } else{ - return (NSComparisonResult)NSOrderedSame; - } + const uint32_t Size = 500; + const uint32_t Repetitions = 50; + for (uint32_t repeat = 0; repeat < Repetitions; repeat++) { + PriorityQueue* q = [PriorityQueue priorityQueueAscendingWithComparator:^(NSNumber* obj1, NSNumber* obj2){ + return [obj1 compare:obj2]; }]; NSArray* permutation = RandomPermutation(Size); for (NSNumber* e in permutation) { @@ -131,7 +106,7 @@ NSArray* Permutations(NSUInteger count) { } // dequeues in order - for (NSUInteger i = 0; i < Size; i++) { + for (uint32_t i = 0; i < Size; i++) { test(q.count == Size - i); test([[q dequeue] unsignedIntegerValue] == i); } diff --git a/Signal/test/util/QueueTest.m b/Signal/test/util/QueueTest.m index dcb53639d..bd81af5f5 100644 --- a/Signal/test/util/QueueTest.m +++ b/Signal/test/util/QueueTest.m @@ -7,24 +7,24 @@ -(void) queueTest { Queue* q = [Queue new]; test(q.count == 0); - testThrows([q peek]); + testThrows(q.peek); testThrows([q dequeue]); [q enqueue:@5]; test(q.count == 1); - test([[q peek] isEqualToNumber:@5]); + test([q.peek isEqualToNumber:@5]); [q enqueue:@23]; test(q.count == 2); - test([[q peek] isEqualToNumber:@5]); + test([q.peek isEqualToNumber:@5]); test([[q dequeue] isEqualToNumber:@5]); test(q.count == 1); - test([[q peek] isEqualToNumber:@23]); + test([q.peek isEqualToNumber:@23]); test([[q dequeue] isEqualToNumber:@23]); test(q.count == 0); - testThrows([q peek]); + testThrows(q.peek); testThrows([q dequeue]); } diff --git a/Signal/test/util/UtilTest.m b/Signal/test/util/UtilTest.m index d2d21cef8..f2d603e98 100644 --- a/Signal/test/util/UtilTest.m +++ b/Signal/test/util/UtilTest.m @@ -56,11 +56,11 @@ NSData* d02 = [@[@0, @2] toUint8Data]; test([[d tryFindIndexOf:[NSData data]] intValue] == 0); - test([[d tryFindIndexOf:d] intValue] == 0); + test([d tryFindIndexOf:d].intValue == 0); - test([[d tryFindIndexOf:d01] intValue] == 0); + test([d tryFindIndexOf:d01].intValue == 0); test([d tryFindIndexOf:d02] == nil); - test([[d tryFindIndexOf:d34] intValue] == 3); + test([d tryFindIndexOf:d34].intValue == 3); test([d34 tryFindIndexOf:d] == nil); test([d tryFindIndexOf:d67] == nil); }