Prefix NSArray categories.

Begin process of prefixing categories on Foundation and UIKit. This
follows Cocoa best practices. This makes sense given the number of third
party libraries the project incorporates, which may include their own
colliding category method names.

Use OWS prefix on classes that may be used across apps.
This commit is contained in:
Ben Sandofsky 2014-11-20 00:01:30 -08:00
parent 135f139dae
commit f65d552f6d
20 changed files with 110 additions and 110 deletions

View file

@ -29,7 +29,7 @@
if (framesToSend.count < AUDIO_FRAMES_PER_PACKET) return nil;
uint16_t sequenceNumber = nextSequenceNumber++;
NSData* payload = [framesToSend concatDatas];
NSData* payload = [framesToSend ows_concatDatas];
[framesToSend removeAllObjects];
return [EncodedAudioPacket encodedAudioPacketWithAudioData:payload

View file

@ -58,7 +58,7 @@
NSData* signalingCipherKey = SGNKeychainUtil.signalingCipherKey;
NSData* signalingMacKey = SGNKeychainUtil.signalingMacKey;
NSData* signalingExtraKeyData = SGNKeychainUtil.signalingCipherKey;
NSString* encodedSignalingKey = @[signalingCipherKey, signalingMacKey, signalingExtraKeyData].concatDatas.encodedAsBase64;
NSString* encodedSignalingKey = @[signalingCipherKey, signalingMacKey, signalingExtraKeyData].ows_concatDatas.encodedAsBase64;
apiCall.parameters = @{@"key" : encodedSignalingKey, @"challenge" : verificationCode};
return apiCall;
}

View file

@ -267,7 +267,7 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
-(NSData*) generateCcrcData {
return [[contributingSourceIdentifiers map:^id(NSNumber* ccsrc) {
return [NSData dataWithBigEndianBytesOfUInt32:[ccsrc unsignedIntValue]];
}] concatDatas];
}] ows_concatDatas];
}
-(NSData*) generateExtensionHeaderData {
if (!hasExtensionHeader) return [NSData data];
@ -276,7 +276,7 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
[NSData dataWithBigEndianBytesOfUInt16:extensionHeaderIdentifier],
[NSData dataWithBigEndianBytesOfUInt16:(uint16_t)extensionHeaderData.length],
extensionHeaderData
] concatDatas];
] ows_concatDatas];
}
-(NSData*) generatePaddingData {
NSMutableData* paddingData = [NSMutableData dataWithLength:padding];
@ -310,7 +310,7 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
[self generateExtensionHeaderData],
payload,
[self generatePaddingData]
] concatDatas];
] ows_concatDatas];
}
-(RtpPacket*) withSequenceNumber:(uint16_t)newSequenceNumber {

View file

@ -30,7 +30,7 @@
RtpPacket* encryptedRtpPacket = [normalRtpPacket withPayload:encryptedPayload];
NSData* hmac = [[encryptedRtpPacket rawPacketDataUsingInteropOptions:@[]] hmacWithSha1WithKey:macKey];
NSData* authenticatedEncryptedPayload = [@[encryptedPayload, hmac] concatDatas];
NSData* authenticatedEncryptedPayload = [@[encryptedPayload, hmac] ows_concatDatas];
return [encryptedRtpPacket withPayload:authenticatedEncryptedPayload];
}

View file

@ -86,7 +86,7 @@
s2Length,
s3Length
] concatDatas];
] ows_concatDatas];
return [data hashWithSha256];
}
@ -107,7 +107,7 @@
[[dhPart1 embeddedIntoHandshakePacket] dataUsedForAuthentication],
[[dhPart2 embeddedIntoHandshakePacket] dataUsedForAuthentication]
] concatDatas];
] ows_concatDatas];
return [data hashWithSha256];
@ -148,13 +148,13 @@
counter,
label.encodedAsUtf8,
[@[@0] toUint8Data],
[@[@0] ows_toUint8Data],
initiatorZid.getData,
responderZid.getData,
totalHash,
[NSData dataWithBigEndianBytesOfUInt32:truncatedLength]
].concatDatas;
].ows_concatDatas;
NSData* digest = [input hmacWithSha256WithKey:sharedSecret];

View file

@ -44,7 +44,7 @@
andAuthSpecId:COMMIT_DEFAULT_AUTH_SPEC_ID
andAgreeSpecId:keyAgreementProtocol.getId
andSasSpecId:COMMIT_DEFAULT_SAS_SPEC_ID
andDhPart2HelloCommitment:@[dhPart2Data, helloData].concatDatas.hashWithSha256
andDhPart2HelloCommitment:@[dhPart2Data, helloData].ows_concatDatas.hashWithSha256
andHmacKey:hashChain.h1];
}
@ -109,7 +109,7 @@
agreementSpecId,
sasSpecId,
dhPart2HelloCommitment
].concatDatas;
].ows_concatDatas;
return [[HandshakePacket handshakePacketWithTypeId:HANDSHAKE_TYPE_COMMIT andPayload:payload] withHmacAppended:hmacKey];
}
@ -120,7 +120,7 @@
NSData* expected = [[@[
[[dhPart2 embeddedIntoHandshakePacket] dataUsedForAuthentication],
[[hello embeddedIntoHandshakePacket] dataUsedForAuthentication]]
concatDatas] hashWithSha256];
ows_concatDatas] hashWithSha256];
checkOperation([dhPart2HelloCommitment isEqualToData_TimingSafe:expected]);
}
-(void) verifyMacWithHashChainH1:(NSData*)hashChainH1 {

View file

@ -89,7 +89,7 @@
hashChainH0,
[NSData dataWithBigEndianBytesOfUInt32:unusedAndSignatureLengthAndFlags],
[NSData dataWithBigEndianBytesOfUInt32:cacheExperationInterval]
] concatDatas];
] ows_concatDatas];
NSData* encrytedSensitiveData = [sensitiveData encryptWithAesInCipherFeedbackModeWithKey:cipherKey andIv:iv];
NSData* hmacForSensitiveData = [[encrytedSensitiveData hmacWithSha256WithKey:macKey] take:TRUNCATED_HMAC_LENGTH];
@ -100,7 +100,7 @@
hmacForSensitiveData,
iv,
encrytedSensitiveData
] concatDatas];
] ows_concatDatas];
return [HandshakePacket handshakePacketWithTypeId:typeId andPayload:payload];
}

View file

@ -116,7 +116,7 @@
[sharedSecretHashes aux],
[sharedSecretHashes pbx],
publicKeyData
] concatDatas];
] ows_concatDatas];
return [[HandshakePacket handshakePacketWithTypeId:typeId andPayload:payload] withHmacAppended:macKey];
}

View file

@ -69,7 +69,7 @@
-(HandshakePacket*) withHmacAppended:(NSData*)macKey {
require(macKey != nil);
NSData* digest = [[[self rtpExtensionPayloadUsedForHmacBeforeHmacAppended] hmacWithSha256WithKey:macKey] take:HANDSHAKE_TRUNCATED_HMAC_LENGTH];
NSData* authenticatedPayload = [@[payload, digest] concatDatas];
NSData* authenticatedPayload = [@[payload, digest] ows_concatDatas];
return [HandshakePacket handshakePacketWithTypeId:typeId andPayload:authenticatedPayload];
}
-(HandshakePacket*) withHmacVerifiedAndRemoved:(NSData*)macKey {
@ -96,14 +96,14 @@
[NSData dataWithBigEndianBytesOfUInt16:(uint16_t)(payload.length + HEADER_FOOTER_LENGTH_WITHOUT_HMAC)],
typeId,
payload
] concatDatas];
] ows_concatDatas];
}
-(NSData*) rtpExtensionPayloadExceptCrc {
return [@[
typeId,
payload
] concatDatas];
] ows_concatDatas];
}
-(NSData*) rtpExtensionPayloadUsedForHmacBeforeHmacAppended {
@ -113,14 +113,14 @@
[NSData dataWithBigEndianBytesOfUInt16:(uint16_t)(payload.length + HEADER_FOOTER_LENGTH_WITH_HMAC)],
typeId,
payload
] concatDatas];
] ows_concatDatas];
}
-(RtpPacket*) embeddedIntoRtpPacketWithSequenceNumber:(uint16_t)sequenceNumber usingInteropOptions:(NSArray*)interopOptions {
requireState(typeId.length == HANDSHAKE_TYPE_ID_LENGTH);
NSData* payloadExceptCrc = [self rtpExtensionPayloadExceptCrc];
NSData* extensionDataWithZeroCrc = [(@[payloadExceptCrc, [NSData dataWithBigEndianBytesOfUInt32:0]]) concatDatas];
NSData* extensionDataWithZeroCrc = [(@[payloadExceptCrc, [NSData dataWithBigEndianBytesOfUInt32:0]]) ows_concatDatas];
RtpPacket* packetWithZeroCrc = [RtpPacket rtpPacketWithVersion:0 // invalid version 0 indicates a zrtp handshake packet
andPadding:false
andContributingSourceIdentifiers:@[]
@ -134,7 +134,7 @@
andPayload:[NSData data]];
uint32_t crc = [[[packetWithZeroCrc rawPacketDataUsingInteropOptions:interopOptions] skipLastVolatile:4] crc32];
NSData* extensionData = [(@[payloadExceptCrc, [NSData dataWithBigEndianBytesOfUInt32:crc]]) concatDatas];
NSData* extensionData = [(@[payloadExceptCrc, [NSData dataWithBigEndianBytesOfUInt32:crc]]) ows_concatDatas];
return [RtpPacket rtpPacketWithVersion:0 // invalid version 0 indicates a zrtp handshake packet
andPadding:false

View file

@ -157,9 +157,9 @@
hashChainH3,
zid.getData,
[self generateFlags],
[[@[hashIds, cipherIds, authIds, agreeIds, sasIds] concatArrays] concatDatas]
[[@[hashIds, cipherIds, authIds, agreeIds, sasIds] ows_concatArrays] ows_concatDatas]
] concatDatas];
] ows_concatDatas];
}
-(void) verifyMacWithHashChainH2:(NSData*)hashChainH2 {

View file

@ -87,7 +87,7 @@
NSData* signalingCipherKey = SGNKeychainUtil.signalingCipherKey;
NSData* signalingMacKey = SGNKeychainUtil.signalingMacKey;
NSData* signalingExtraKeyData = SGNKeychainUtil.signalingCipherKey;
NSString* encodedSignalingKey = @[signalingCipherKey, signalingMacKey, signalingExtraKeyData].concatDatas.encodedAsBase64;
NSString* encodedSignalingKey = @[signalingCipherKey, signalingMacKey, signalingExtraKeyData].ows_concatDatas.encodedAsBase64;
NSString* body = @{@"key" : encodedSignalingKey, @"challenge" : challenge}.encodedAsJson;
return [HttpRequest httpRequestWithBasicAuthenticationAndMethod:@"PUT"

View file

@ -1,7 +1,7 @@
#import <Foundation/Foundation.h>
@interface NSArray (Util)
-(NSData*) toUint8Data;
-(NSData*) concatDatas;
-(NSArray*) concatArrays;
-(NSData*)ows_toUint8Data;
-(NSData*)ows_concatDatas;
-(NSArray*)ows_concatArrays;
@end

View file

@ -3,7 +3,7 @@
@implementation NSArray (Util)
-(NSData*) toUint8Data {
-(NSData*)ows_toUint8Data {
NSUInteger n = self.count;
uint8_t x[n];
for (NSUInteger i = 0; i < n; i++) {
@ -11,7 +11,7 @@
}
return [NSData dataWithBytes:x length:n];
}
-(NSData*) concatDatas {
-(NSData*)ows_concatDatas {
NSUInteger t = 0;
for (id d in self) {
require([d isKindOfClass:NSData.class]);
@ -26,7 +26,7 @@
}
return result;
}
-(NSArray*) concatArrays {
-(NSArray*)ows_concatArrays {
NSMutableArray* r = [NSMutableArray array];
for (id e in self) {
require([e isKindOfClass:NSArray.class]);

View file

@ -43,7 +43,7 @@
@0x80,@0,@0,@5,
@0,@0,@0,@0,
@0,@0,@0,@0,
@0,@1,@2,@3,@4] toUint8Data];
@0,@1,@2,@3,@4] ows_toUint8Data];
test([[r rawPacketDataUsingInteropOptions:@[]] isEqualToData:expectedData]);
// reparsing packed data gives same packet
@ -80,7 +80,7 @@
@0,@0,@0,@101,
@0,@0,@0,@102,
@0,@1,@2,@3,@4,@5,
@0,@0,@3] toUint8Data];
@0,@0,@3] ows_toUint8Data];
test([[r rawPacketDataUsingInteropOptions:@[]] isEqualToData:expectedData]);
test([r isEqualToRtpPacket:[RtpPacket rtpPacketParsedFromPacketData:expectedData]]);
@ -120,7 +120,7 @@
@0xFE,@0xAB,
@0, @5,
@10,@11,@12,@13,@14,
@0,@1,@2,@3,@4] toUint8Data];
@0,@1,@2,@3,@4] ows_toUint8Data];
test([[r rawPacketDataUsingInteropOptions:@[]] isEqualToData:expectedData]);
test([r isEqualToRtpPacket:[RtpPacket rtpPacketParsedFromPacketData:expectedData]]);
test(![r isEqualToRtpPacket:[RtpPacket rtpPacketWithDefaultsAndSequenceNumber:0 andPayload:[NSData data]]]);

View file

@ -12,7 +12,7 @@
-(void) testHashChainKnown {
testThrows([HashChain hashChainWithSeed:nil]);
NSData* d0 = [NSMutableData dataWithLength:32];
NSData* d1 = [@[@0x66,@0x68,@0x7A,@0xAD,@0xF8,@0x62,@0xBD,@0x77,@0x6C,@0x8F,@0xC1,@0x8B,@0x8E,@0x9F,@0x8E,@0x20,@0x08,@0x97,@0x14,@0x85,@0x6E,@0xE2,@0x33,@0xB3,@0x90,@0x2A,@0x59,@0x1D,@0x0D,@0x5F,@0x29,@0x25] toUint8Data];
NSData* d1 = [@[@0x66,@0x68,@0x7A,@0xAD,@0xF8,@0x62,@0xBD,@0x77,@0x6C,@0x8F,@0xC1,@0x8B,@0x8E,@0x9F,@0x8E,@0x20,@0x08,@0x97,@0x14,@0x85,@0x6E,@0xE2,@0x33,@0xB3,@0x90,@0x2A,@0x59,@0x1D,@0x0D,@0x5F,@0x29,@0x25] ows_toUint8Data];
NSData* d2 = [d1 hashWithSha256];
NSData* d3 = [d2 hashWithSha256];

View file

@ -18,7 +18,7 @@
andInitiatorZid:initiatorZid
andResponderZid:responderZid];
// the expected data here was obtained from the android redphone implementation
NSData* expectedSharedSecret = [(@[@54,@78,@99,@226,@49,@17,@8,@135,@65,@33,@247,@134,@235,@29,@164,@217,@18,@44,@241,@18,@172,@63,@197,@178,@71,@42,@253,@150,@238,@173,@218,@131]) toUint8Data];
NSData* expectedSharedSecret = [(@[@54,@78,@99,@226,@49,@17,@8,@135,@65,@33,@247,@134,@235,@29,@164,@217,@18,@44,@241,@18,@172,@63,@197,@178,@71,@42,@253,@150,@238,@173,@218,@131]) ows_toUint8Data];
test([sharedSecret isEqualToData:expectedSharedSecret]);
}
-(void) testKnownMasterSecret {
@ -29,14 +29,14 @@
// the expected data here was obtained from the android redphone implementation
MasterSecret* m = [MasterSecret masterSecretFromSharedSecret:sharedSecret andTotalHash:totalHash andInitiatorZid:initiatorZid andResponderZid:responderZid];
test([[m shortAuthenticationStringData] isEqualToData:[(@[@241,@140,@246,@102]) toUint8Data]]);
test([[m initiatorSrtpKey] isEqualToData:[(@[@202,@139,@183,@119,@244,@164,@247,@11,@232,@161,@199,@120,@229,@49,@239,@141]) toUint8Data]]);
test([[m responderSrtpKey] isEqualToData:[(@[@35,@126,@130,@159,@156,@218,@64,@6,@59,@170,@139,@77,@250,@103,@84,@152]) toUint8Data]]);
test([[m initiatorSrtpSalt] isEqualToData:[(@[@92,@22,@129,@225,@169,@155,@6,@157,@34,@49,@76,@15,@196,@180]) toUint8Data]]);
test([[m responderSrtpSalt] isEqualToData:[(@[@151,@124,@181,@201,@203,@218,@192,@141,@244,@247,@249,@144,@213,@133]) toUint8Data]]);
test([[m initiatorMacKey] isEqualToData:[(@[@215,@167,@226,@196,@14,@124,@137,@75,@48,@110,@159,@47,@243,@238,@171,@213,@103,@181,@70,@206]) toUint8Data]]);
test([[m responderMacKey] isEqualToData:[(@[@215,@225,@180,@37,@18,@248,@122,@2,@24,@12,@149,@241,@8,@193,@103,@102,@117,@50,@27,@138]) toUint8Data]]);
test([[m initiatorZrtpKey] isEqualToData:[(@[@182,@239,@29,@23,@42,@7,@231,@48,@45,@244,@177,@84,@77,@62,@56,@48]) toUint8Data]]);
test([[m responderZrtpKey] isEqualToData:[(@[@59,@57,@33,@50,@121,@161,@218,@19,@255,@246,@98,@228,@68,@142,@50,@175]) toUint8Data]]);
test([[m shortAuthenticationStringData] isEqualToData:[(@[@241,@140,@246,@102]) ows_toUint8Data]]);
test([[m initiatorSrtpKey] isEqualToData:[(@[@202,@139,@183,@119,@244,@164,@247,@11,@232,@161,@199,@120,@229,@49,@239,@141]) ows_toUint8Data]]);
test([[m responderSrtpKey] isEqualToData:[(@[@35,@126,@130,@159,@156,@218,@64,@6,@59,@170,@139,@77,@250,@103,@84,@152]) ows_toUint8Data]]);
test([[m initiatorSrtpSalt] isEqualToData:[(@[@92,@22,@129,@225,@169,@155,@6,@157,@34,@49,@76,@15,@196,@180]) ows_toUint8Data]]);
test([[m responderSrtpSalt] isEqualToData:[(@[@151,@124,@181,@201,@203,@218,@192,@141,@244,@247,@249,@144,@213,@133]) ows_toUint8Data]]);
test([[m initiatorMacKey] isEqualToData:[(@[@215,@167,@226,@196,@14,@124,@137,@75,@48,@110,@159,@47,@243,@238,@171,@213,@103,@181,@70,@206]) ows_toUint8Data]]);
test([[m responderMacKey] isEqualToData:[(@[@215,@225,@180,@37,@18,@248,@122,@2,@24,@12,@149,@241,@8,@193,@103,@102,@117,@50,@27,@138]) ows_toUint8Data]]);
test([[m initiatorZrtpKey] isEqualToData:[(@[@182,@239,@29,@23,@42,@7,@231,@48,@45,@244,@177,@84,@77,@62,@56,@48]) ows_toUint8Data]]);
test([[m responderZrtpKey] isEqualToData:[(@[@59,@57,@33,@50,@121,@161,@218,@19,@255,@246,@98,@228,@68,@142,@50,@175]) ows_toUint8Data]]);
}
@end

View file

@ -9,7 +9,7 @@
@implementation ShortAuthenticationStringGeneratorTest
-(void) testSAS {
test([[ShortAuthenticationStringGenerator generateFromData:[(@[@0,@0]) toUint8Data]] isEqualToString:@"aardvark adroitness"]);
test([[ShortAuthenticationStringGenerator generateFromData:[(@[@0xFF,@0xFF]) toUint8Data]] isEqualToString:@"Zulu Yucatan"]);
test([[ShortAuthenticationStringGenerator generateFromData:[(@[@0,@0]) ows_toUint8Data]] isEqualToString:@"aardvark adroitness"]);
test([[ShortAuthenticationStringGenerator generateFromData:[(@[@0xFF,@0xFF]) ows_toUint8Data]] isEqualToString:@"Zulu Yucatan"]);
}
@end

View file

@ -17,9 +17,9 @@
__block NSData* received = nil;
__block bool senderReceivedData = false;
NSData* r1 = [@[@2,@3,@5] toUint8Data];
NSData* r2 = [@[@7,@11,@13] toUint8Data];
NSData* r3 = [@[@17,@19,@23] toUint8Data];
NSData* r1 = [@[@2,@3,@5] ows_toUint8Data];
NSData* r2 = [@[@7,@11,@13] ows_toUint8Data];
NSData* r3 = [@[@17,@19,@23] ows_toUint8Data];
in_port_t port1 = (in_port_t)(arc4random_uniform(40000) + 10000);
in_port_t port2 = port1 + (in_port_t)1;
@ -68,9 +68,9 @@
__block NSData* received = nil;
__block bool senderReceivedData = false;
NSData* r1 = [@[@2,@3,@5] toUint8Data];
NSData* r2 = [@[@7,@11,@13] toUint8Data];
NSData* r3 = [@[@17,@19,@23] toUint8Data];
NSData* r1 = [@[@2,@3,@5] ows_toUint8Data];
NSData* r2 = [@[@7,@11,@13] ows_toUint8Data];
NSData* r3 = [@[@17,@19,@23] ows_toUint8Data];
in_port_t unusedPort = (in_port_t)(arc4random_uniform(40000) + 10000);

View file

@ -6,14 +6,14 @@
@implementation ConversionsTest
-(void) testDataWithBigEndianBytesOfUInt16 {
test([[NSData dataWithBigEndianBytesOfUInt16:0x1234u] isEqualToData:[(@[@0x12, @0x34]) toUint8Data]]);
test([[NSData dataWithBigEndianBytesOfUInt16:0x1234u] isEqualToData:[(@[@0x12, @0x34]) ows_toUint8Data]]);
}
-(void) testDataWithBigEndianBytesOfUInt32 {
test([[NSData dataWithBigEndianBytesOfUInt32:0x12345678u] isEqualToData:[(@[@0x12, @0x34, @0x56, @0x78]) toUint8Data]]);
test([[NSData dataWithBigEndianBytesOfUInt32:0x12345678u] isEqualToData:[(@[@0x12, @0x34, @0x56, @0x78]) ows_toUint8Data]]);
}
-(void) testBigEndianUInt16At {
NSData* d = [@[@0, @1, @2, @0xFF, @3, @4] toUint8Data];
NSData* d = [@[@0, @1, @2, @0xFF, @3, @4] ows_toUint8Data];
test(0x1 == [d bigEndianUInt16At:0]);
test(0x102 == [d bigEndianUInt16At:1]);
test(0x2FF == [d bigEndianUInt16At:2]);
@ -22,7 +22,7 @@
testThrows([d bigEndianUInt16At:5]);
}
-(void) testBigEndianUInt32At {
NSData* d = [@[@0, @1, @2, @0xFF, @3, @4] toUint8Data];
NSData* d = [@[@0, @1, @2, @0xFF, @3, @4] ows_toUint8Data];
test(0x000102FFu == [d bigEndianUInt32At:0]);
test(0x0102FF03u == [d bigEndianUInt32At:1]);
test(0x02FF0304u == [d bigEndianUInt32At:2]);

View file

@ -23,37 +23,37 @@
}
-(void) testArrayToUint8Data {
test([[(@[]) toUint8Data] length] == 0);
test([[(@[]) ows_toUint8Data] length] == 0);
NSData* d = [@[@0, @1] toUint8Data];
NSData* d = [@[@0, @1] ows_toUint8Data];
test(d.length == 2);
test(((uint8_t*)[d bytes])[0] == 0);
test(((uint8_t*)[d bytes])[1] == 1);
}
-(void) testArrayConcatDatas {
NSData* d1 = [@[@0, @1] toUint8Data];
NSData* d2 = [@[@3, @4] toUint8Data];
NSData* d3 = [@[@6, @7] toUint8Data];
test([[@[] concatDatas] isEqualToData:[(@[]) toUint8Data]]);
test([[@[d1] concatDatas] isEqualToData:d1]);
test([[(@[d1, d2, d3]) concatDatas] isEqualToData:[(@[@0, @1, @3, @4, @6, @7]) toUint8Data]]);
NSData* d1 = [@[@0, @1] ows_toUint8Data];
NSData* d2 = [@[@3, @4] ows_toUint8Data];
NSData* d3 = [@[@6, @7] ows_toUint8Data];
test([[@[] ows_concatDatas] isEqualToData:[(@[]) ows_toUint8Data]]);
test([[@[d1] ows_concatDatas] isEqualToData:d1]);
test([[(@[d1, d2, d3]) ows_concatDatas] isEqualToData:[(@[@0, @1, @3, @4, @6, @7]) ows_toUint8Data]]);
}
-(void) testDatadDecodedAsUtf8 {
testThrows([[(@[@0xC3, @0x28]) toUint8Data] decodedAsUtf8]);
testThrows([[(@[@0xC3, @0x28]) ows_toUint8Data] decodedAsUtf8]);
NSString* ab = [[(@[@97, @98]) toUint8Data] decodedAsUtf8];
NSString* ab0 = [[(@[@97, @98, @0]) toUint8Data] decodedAsUtf8];
NSString* ab = [[(@[@97, @98]) ows_toUint8Data] decodedAsUtf8];
NSString* ab0 = [[(@[@97, @98, @0]) ows_toUint8Data] decodedAsUtf8];
test([ab isEqualToString:@"ab"]);
test([ab0 isEqualToString:@"ab\0"]);
test(![ab0 isEqualToString:ab]);
}
-(void) testTryFindFirstIndexOf {
NSData* d = [@[@0, @1, @2, @3, @4, @5] toUint8Data];
NSData* d34 = [@[@3, @4] toUint8Data];
NSData* d67 = [@[@6, @7] toUint8Data];
NSData* d01 = [@[@0, @1] toUint8Data];
NSData* d02 = [@[@0, @2] toUint8Data];
NSData* d = [@[@0, @1, @2, @3, @4, @5] ows_toUint8Data];
NSData* d34 = [@[@3, @4] ows_toUint8Data];
NSData* d67 = [@[@6, @7] ows_toUint8Data];
NSData* d01 = [@[@0, @1] ows_toUint8Data];
NSData* d02 = [@[@0, @2] ows_toUint8Data];
test([[d tryFindIndexOf:[NSData data]] intValue] == 0);
test([d tryFindIndexOf:d].intValue == 0);
@ -65,23 +65,23 @@
test([d tryFindIndexOf:d67] == nil);
}
-(void) testDatadDecodedAsAscii {
testThrows([[(@[@97, @0xAA]) toUint8Data] decodedAsAscii]);
testThrows([[(@[@97, @0xAA]) ows_toUint8Data] decodedAsAscii]);
NSString* ab = [[(@[@97, @98]) toUint8Data] decodedAsAscii];
NSString* ab0 = [[(@[@97, @98, @0]) toUint8Data] decodedAsAscii];
NSString* ab = [[(@[@97, @98]) ows_toUint8Data] decodedAsAscii];
NSString* ab0 = [[(@[@97, @98, @0]) ows_toUint8Data] decodedAsAscii];
test([ab isEqualToString:@"ab"]);
test([ab0 isEqualToString:@"ab\0"]);
test(![ab0 isEqualToString:ab]);
}
-(void) testDatadDecodedAsAsciiReplacingErrorsWithDots {
test([[[(@[@97, @98]) toUint8Data] decodedAsAsciiReplacingErrorsWithDots] isEqualToString:@"ab"]);
test([[[(@[@97, @98, @0, @127, @250]) toUint8Data] decodedAsAsciiReplacingErrorsWithDots] isEqualToString:@"ab..."]);
test([[[(@[@97, @98]) ows_toUint8Data] decodedAsAsciiReplacingErrorsWithDots] isEqualToString:@"ab"]);
test([[[(@[@97, @98, @0, @127, @250]) ows_toUint8Data] decodedAsAsciiReplacingErrorsWithDots] isEqualToString:@"ab..."]);
}
-(void) testDataSkip {
NSData* d = [@[@0, @1, @2, @3] toUint8Data];
NSData* d = [@[@0, @1, @2, @3] ows_toUint8Data];
test([[d skip:0] isEqualToData:d]);
test([[d skip:1] isEqualToData:[(@[@1, @2, @3]) toUint8Data]]);
test([[d skip:3] isEqualToData:[@[@3] toUint8Data]]);
test([[d skip:1] isEqualToData:[(@[@1, @2, @3]) ows_toUint8Data]]);
test([[d skip:3] isEqualToData:[@[@3] ows_toUint8Data]]);
test([[d skip:4] length] == 0);
testThrows([d skip:5]);
@ -95,10 +95,10 @@
test([b2 uint8At:0] == 0);
}
-(void) testDataTake {
NSData* d = [@[@0, @1, @2, @3] toUint8Data];
NSData* d = [@[@0, @1, @2, @3] ows_toUint8Data];
test([[d take:0] length] == 0);
test([[d take:1] isEqualToData:[(@[@0]) toUint8Data]]);
test([[d take:3] isEqualToData:[(@[@0, @1, @2]) toUint8Data]]);
test([[d take:1] isEqualToData:[(@[@0]) ows_toUint8Data]]);
test([[d take:3] isEqualToData:[(@[@0, @1, @2]) ows_toUint8Data]]);
test([[d take:4] isEqualToData:d]);
testThrows([d take:5]);
@ -112,10 +112,10 @@
test([b2 uint8At:0] == 0);
}
-(void) testDataSkipLast {
NSData* d = [@[@0, @1, @2, @3] toUint8Data];
NSData* d = [@[@0, @1, @2, @3] ows_toUint8Data];
test([[d skipLast:0] isEqualToData:d]);
test([[d skipLast:1] isEqualToData:[(@[@0, @1, @2]) toUint8Data]]);
test([[d skipLast:3] isEqualToData:[@[@0] toUint8Data]]);
test([[d skipLast:1] isEqualToData:[(@[@0, @1, @2]) ows_toUint8Data]]);
test([[d skipLast:3] isEqualToData:[@[@0] ows_toUint8Data]]);
test([[d skipLast:4] length] == 0);
testThrows([d skipLast:5]);
@ -129,10 +129,10 @@
test([b2 uint8At:0] == 0);
}
-(void) testDataTakeLast {
NSData* d = [@[@0, @1, @2, @3] toUint8Data];
NSData* d = [@[@0, @1, @2, @3] ows_toUint8Data];
test([[d takeLast:0] length] == 0);
test([[d takeLast:1] isEqualToData:[(@[@3]) toUint8Data]]);
test([[d takeLast:3] isEqualToData:[(@[@1, @2, @3]) toUint8Data]]);
test([[d takeLast:1] isEqualToData:[(@[@3]) ows_toUint8Data]]);
test([[d takeLast:3] isEqualToData:[(@[@1, @2, @3]) ows_toUint8Data]]);
test([[d takeLast:4] isEqualToData:d]);
testThrows([d takeLast:5]);
@ -180,40 +180,40 @@
testThrows([d subdataVolatileWithRange:NSMakeRange(1, NSUIntegerMax)]);
}
-(void) testDataSkipVolatile {
NSData* d = [@[@0, @1, @2, @3] toUint8Data];
NSData* d = [@[@0, @1, @2, @3] ows_toUint8Data];
test([[d skipVolatile:0] isEqualToData:d]);
test([[d skipVolatile:1] isEqualToData:[(@[@1, @2, @3]) toUint8Data]]);
test([[d skipVolatile:3] isEqualToData:[@[@3] toUint8Data]]);
test([[d skipVolatile:1] isEqualToData:[(@[@1, @2, @3]) ows_toUint8Data]]);
test([[d skipVolatile:3] isEqualToData:[@[@3] ows_toUint8Data]]);
test([[d skipVolatile:4] length] == 0);
testThrows([d skipVolatile:5]);
}
-(void) testDataTakeVolatile {
NSData* d = [@[@0, @1, @2, @3] toUint8Data];
NSData* d = [@[@0, @1, @2, @3] ows_toUint8Data];
test([[d takeVolatile:0] length] == 0);
test([[d takeVolatile:1] isEqualToData:[(@[@0]) toUint8Data]]);
test([[d takeVolatile:3] isEqualToData:[(@[@0, @1, @2]) toUint8Data]]);
test([[d takeVolatile:1] isEqualToData:[(@[@0]) ows_toUint8Data]]);
test([[d takeVolatile:3] isEqualToData:[(@[@0, @1, @2]) ows_toUint8Data]]);
test([[d takeVolatile:4] isEqualToData:d]);
testThrows([d takeVolatile:5]);
}
-(void) testDataSkipLastVolatile {
NSData* d = [@[@0, @1, @2, @3] toUint8Data];
NSData* d = [@[@0, @1, @2, @3] ows_toUint8Data];
test([[d skipLastVolatile:0] isEqualToData:d]);
test([[d skipLastVolatile:1] isEqualToData:[(@[@0, @1, @2]) toUint8Data]]);
test([[d skipLastVolatile:3] isEqualToData:[@[@0] toUint8Data]]);
test([[d skipLastVolatile:1] isEqualToData:[(@[@0, @1, @2]) ows_toUint8Data]]);
test([[d skipLastVolatile:3] isEqualToData:[@[@0] ows_toUint8Data]]);
test([[d skipLastVolatile:4] length] == 0);
testThrows([d skipLastVolatile:5]);
}
-(void) testDataTakeLastVolatile {
NSData* d = [@[@0, @1, @2, @3] toUint8Data];
NSData* d = [@[@0, @1, @2, @3] ows_toUint8Data];
test([[d takeLastVolatile:0] length] == 0);
test([[d takeLastVolatile:1] isEqualToData:[(@[@3]) toUint8Data]]);
test([[d takeLastVolatile:3] isEqualToData:[(@[@1, @2, @3]) toUint8Data]]);
test([[d takeLastVolatile:1] isEqualToData:[(@[@3]) ows_toUint8Data]]);
test([[d takeLastVolatile:3] isEqualToData:[(@[@1, @2, @3]) ows_toUint8Data]]);
test([[d takeLastVolatile:4] isEqualToData:d]);
testThrows([d takeLastVolatile:5]);
}
-(void) testDataUint8At {
NSData* d = [@[@0, @1, @2, @3] toUint8Data];
NSData* d = [@[@0, @1, @2, @3] ows_toUint8Data];
test([d uint8At:0] == 0);
test([d uint8At:1] == 1);
test([d uint8At:2] == 2);
@ -227,26 +227,26 @@
[d setUint8At:2 to:13];
[d setUint8At:3 to:14];
testThrows([d setUint8At:4 to:15]);
test([d isEqualToData:[(@[@11, @12, @13, @14]) toUint8Data]]);
test([d isEqualToData:[(@[@11, @12, @13, @14]) ows_toUint8Data]]);
}
-(void) testMutableDataReplaceBytesStartingAt {
NSMutableData* d = [NSMutableData dataWithLength:6];
NSData* d2 = [@[@1, @2, @3] toUint8Data];
NSData* d2 = [@[@1, @2, @3] ows_toUint8Data];
testThrows([d replaceBytesStartingAt:0 withData:nil]);
testThrows([d replaceBytesStartingAt:4 withData:d2]);
[d replaceBytesStartingAt:0 withData:d2];
test([d isEqualToData:[(@[@1, @2, @3, @0, @0, @0]) toUint8Data]]);
test([d isEqualToData:[(@[@1, @2, @3, @0, @0, @0]) ows_toUint8Data]]);
[d replaceBytesStartingAt:2 withData:d2];
test([d isEqualToData:[(@[@1, @2, @1, @2, @3, @0]) toUint8Data]]);
test([d isEqualToData:[(@[@1, @2, @1, @2, @3, @0]) ows_toUint8Data]]);
[d replaceBytesStartingAt:3 withData:d2];
test([d isEqualToData:[(@[@1, @2, @1, @1, @2, @3]) toUint8Data]]);
test([d isEqualToData:[(@[@1, @2, @1, @1, @2, @3]) ows_toUint8Data]]);
}
-(void) testStringEncodedAsUtf8 {
test([@"ab".encodedAsUtf8 isEqualToData:[(@[@97, @98]) toUint8Data]]);
test([@"ab".encodedAsUtf8 isEqualToData:[(@[@97, @98]) ows_toUint8Data]]);
}
-(void) testStringEncodedAsAscii {
test([@"ab".encodedAsAscii isEqualToData:[(@[@97, @98]) toUint8Data]]);
test([@"ab".encodedAsAscii isEqualToData:[(@[@97, @98]) ows_toUint8Data]]);
testThrows(@"√".encodedAsAscii);
}
-(void) testBase64EncodeKnown {