mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-22 00:11:04 +00:00
143 lines
6.6 KiB
Objective-C
143 lines
6.6 KiB
Objective-C
#import <Foundation/Foundation.h>
|
|
|
|
#import "Testing.h"
|
|
|
|
int main()
|
|
{
|
|
NSAutoreleasePool *arp = [NSAutoreleasePool new];
|
|
NSData *data;
|
|
NSData *ref;
|
|
NSString *str1;
|
|
NSString *str2;
|
|
NSString *strEnc;
|
|
|
|
PASS_EXCEPTION([[NSData alloc] initWithBase64EncodedString: nil options: 0],
|
|
NSInvalidArgumentException, "nil argument causes exception");
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"" options: 0];
|
|
ref = [NSData data];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 1")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zg==" options: 0];
|
|
ref = [NSData dataWithBytes: "f" length: 1];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 2")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm8=" options: 0];
|
|
ref = [NSData dataWithBytes: "fo" length: 2];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 3")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm9v" options: 0];
|
|
ref = [NSData dataWithBytes: "foo" length: 3];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 4")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm9vYg==" options: 0];
|
|
ref = [NSData dataWithBytes: "foob" length: 4];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 5")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm9vYmE=" options: 0];
|
|
ref = [NSData dataWithBytes: "fooba" length: 5];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 6")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm9vYmE==" options: 0];
|
|
ref = [NSData dataWithBytes: "fooba" length: 5];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 6 with 1 extra padding")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm9vYmE====="
|
|
options: 0];
|
|
ref = [NSData dataWithBytes: "fooba" length: 5];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 6 with 4 extra padding")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm9vYmFy" options: 0];
|
|
ref = [NSData dataWithBytes: "foobar" length: 6];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 7")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm9vYmFy====="
|
|
options: 0];
|
|
ref = [NSData dataWithBytes: "foobar\0" length: 7];
|
|
PASS_EQUAL(data, ref, "base64 decoding excess padding gives single nul byte")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm9v YmFy" options: 0];
|
|
PASS_EQUAL(data, nil, "base64 decoding with space returns nil")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"Zm9v YmFy"
|
|
options: NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
ref = [NSData dataWithBytes: "foobar" length: 6];
|
|
PASS_EQUAL(data, ref, "base64 decoding vector 8")
|
|
[data release];
|
|
|
|
str1 = @"In principio creavit Deus caelum et terram.\nTerra autem erat inanis et vacua, et tenebrae super faciem abyssi, et spiritus Dei ferebatur super aquas.\nDixitque Deus: \"Fiat lux\". Et facta est lux.";
|
|
data = [str1 dataUsingEncoding: NSASCIIStringEncoding];
|
|
strEnc = [data base64EncodedStringWithOptions:0];
|
|
data = [[NSData alloc] initWithBase64EncodedString: strEnc options: 0];
|
|
str2 = [[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding];
|
|
[data release];
|
|
PASS_EQUAL(str1, str2, "Encode / Decode no lines")
|
|
[str2 release];
|
|
|
|
str1 = @"In principio creavit Deus caelum et terram.\nTerra autem erat inanis et vacua, et tenebrae super faciem abyssi, et spiritus Dei ferebatur super aquas.\nDixitque Deus: \"Fiat lux\". Et facta est lux.";
|
|
data = [str1 dataUsingEncoding: NSASCIIStringEncoding];
|
|
strEnc = [data base64EncodedStringWithOptions: (NSDataBase64Encoding64CharacterLineLength | NSDataBase64EncodingEndLineWithLineFeed)];
|
|
data = [[NSData alloc] initWithBase64EncodedString: strEnc
|
|
options: NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
str2 = [[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding];
|
|
[data release];
|
|
PASS_EQUAL(str1, str2, "Encode / Decode 64 - LF")
|
|
[str2 release];
|
|
|
|
str1 = @"In principio creavit Deus caelum et terram.\nTerra autem erat inanis et vacua, et tenebrae super faciem abyssi, et spiritus Dei ferebatur super aquas.\nDixitque Deus: \"Fiat lux\". Et facta est lux.";
|
|
data = [str1 dataUsingEncoding: NSASCIIStringEncoding];
|
|
strEnc = [data base64EncodedStringWithOptions: (NSDataBase64Encoding76CharacterLineLength | NSDataBase64EncodingEndLineWithLineFeed)];
|
|
data = [[NSData alloc] initWithBase64EncodedString: strEnc
|
|
options: NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
str2 = [[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding];
|
|
[data release];
|
|
PASS_EQUAL(str1, str2, "Encode / Decode 76 - LF")
|
|
[str2 release];
|
|
|
|
str1 = @"In principio creavit Deus caelum et terram.\nTerra autem erat inanis et vacua, et tenebrae super faciem abyssi, et spiritus Dei ferebatur super aquas.\nDixitque Deus: \"Fiat lux\". Et facta est lux.";
|
|
data = [str1 dataUsingEncoding: NSASCIIStringEncoding];
|
|
strEnc = [data base64EncodedStringWithOptions: (NSDataBase64Encoding64CharacterLineLength | NSDataBase64EncodingEndLineWithCarriageReturn)];
|
|
data = [[NSData alloc] initWithBase64EncodedString: strEnc
|
|
options: NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
str2 = [[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding];
|
|
[data release];
|
|
PASS_EQUAL(str1, str2, "Encode / Decode 64 - CR")
|
|
[str2 release];
|
|
|
|
str1 = @"In principio creavit Deus caelum et terram.\nTerra autem erat inanis et vacua, et tenebrae super faciem abyssi, et spiritus Dei ferebatur super aquas.\nDixitque Deus: \"Fiat lux\". Et facta est lux.";
|
|
data = [str1 dataUsingEncoding: NSASCIIStringEncoding];
|
|
strEnc = [data base64EncodedStringWithOptions: NSDataBase64Encoding64CharacterLineLength];
|
|
data = [[NSData alloc] initWithBase64EncodedString: strEnc
|
|
options: NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
str2 = [[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding];
|
|
[data release];
|
|
PASS_EQUAL(str1, str2, "Encode / Decode 64 - implicit CR LF")
|
|
[str2 release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString:
|
|
@"Yml0bWFya2V0cyB1c2VyIGluZGVudGl0eQ==\n"
|
|
options: NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
ref = [NSData dataWithBytes: "bitmarkets user indentity" length: 25];
|
|
PASS_EQUAL(data, ref, "base64 decoding Yml0bWFya2V0cyB1c2VyIGluZGVudGl0eQ==")
|
|
[data release];
|
|
|
|
data = [[NSData alloc] initWithBase64EncodedString: @"\n"
|
|
options: NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
ref = [NSData dataWithBytes: "" length: 0];
|
|
PASS_EQUAL(data, ref, "base64 decoding empty string")
|
|
[data release];
|
|
|
|
[arp release]; arp = nil;
|
|
return 0;
|
|
}
|