| /* |
| * Copyright 2012 ZXing authors |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #import "ZXAddressBookParsedResultTestCase.h" |
| |
| @implementation ZXAddressBookParsedResultTestCase |
| |
| - (void)testAddressBookDocomo { |
| [self doTestWithContents:@"MECARD:N:Sean Owen;;" |
| title:nil |
| names:@[@"Sean Owen"] |
| pronunciation:nil |
| addresses:nil |
| emails:nil |
| phoneNumbers:nil |
| org:nil |
| urls:nil |
| birthday:nil |
| note:nil]; |
| |
| [self doTestWithContents:@"MECARD:NOTE:ZXing Team;N:Sean Owen;URL:google.com;EMAIL:srowen@example.org;;" |
| title:nil |
| names:@[@"Sean Owen"] |
| pronunciation:nil |
| addresses:nil |
| emails:@[@"srowen@example.org"] |
| phoneNumbers:nil |
| org:nil |
| urls:@[@"google.com"] |
| birthday:nil |
| note:@"ZXing Team"]; |
| } |
| |
| - (void)testAddressBookAU { |
| [self doTestWithContents:@"MEMORY:foo\r\nNAME1:Sean\r\nTEL1:+12125551212\r\n" |
| title:nil |
| names:@[@"Sean"] |
| pronunciation:nil |
| addresses:nil |
| emails:nil |
| phoneNumbers:@[@"+12125551212"] |
| org:nil |
| urls:nil |
| birthday:nil |
| note:@"foo"]; |
| } |
| |
| - (void)testVCard { |
| [self doTestWithContents:@"BEGIN:VCARD\r\nADR;HOME:123 Main St\r\nVERSION:2.1\r\nN:Owen;Sean\r\nEND:VCARD" |
| title:nil |
| names:@[@"Sean Owen"] |
| pronunciation:nil |
| addresses:@[@"123 Main St"] |
| emails:nil |
| phoneNumbers:nil |
| org:nil |
| urls:nil |
| birthday:nil |
| note:nil]; |
| } |
| |
| - (void)testVCardCaseInsensitive { |
| [self doTestWithContents:@"begin:vcard\r\nadr;HOME:123 Main St\r\nVersion:2.1\r\nn:Owen;Sean\r\nEND:VCARD" |
| title:nil |
| names:@[@"Sean Owen"] |
| pronunciation:nil |
| addresses:@[@"123 Main St"] |
| emails:nil |
| phoneNumbers:nil |
| org:nil |
| urls:nil |
| birthday:nil |
| note:nil]; |
| } |
| |
| - (void)testEscapedVCard { |
| [self doTestWithContents:@"BEGIN:VCARD\r\nADR;HOME:123\\;\\\\ Main\\, St\\nHome\r\nVERSION:2.1\r\nN:Owen;Sean\r\nEND:VCARD" |
| title:nil |
| names:@[@"Sean Owen"] |
| pronunciation:nil |
| addresses:@[@"123;\\ Main, St\nHome"] |
| emails:nil |
| phoneNumbers:nil |
| org:nil |
| urls:nil |
| birthday:nil |
| note:nil]; |
| } |
| |
| - (void)testBizcard { |
| [self doTestWithContents:@"BIZCARD:N:Sean;X:Owen;C:Google;A:123 Main St;M:+12125551212;E:srowen@example.org;" |
| title:nil |
| names:@[@"Sean Owen"] |
| pronunciation:nil |
| addresses:@[@"123 Main St"] |
| emails:@[@"srowen@example.org"] |
| phoneNumbers:@[@"+12125551212"] |
| org:@"Google" |
| urls:nil |
| birthday:nil |
| note:nil]; |
| } |
| |
| - (void)testSeveralAddresses { |
| [self doTestWithContents:@"MECARD:N:Foo Bar;ORG:Company;TEL:5555555555;EMAIL:foo.bar@xyz.com;ADR:City, 10001;" |
| @"ADR:City, 10001;NOTE:This is the memo.;;" |
| title:nil |
| names:@[@"Foo Bar"] |
| pronunciation:nil |
| addresses:@[@"City, 10001", @"City, 10001"] |
| emails:@[@"foo.bar@xyz.com"] |
| phoneNumbers:@[@"5555555555"] |
| org:@"Company" |
| urls:nil |
| birthday:nil |
| note:@"This is the memo."]; |
| } |
| |
| - (void)testQuotedPrintable { |
| [self doTestWithContents:@"BEGIN:VCARD\r\nADR;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;" |
| @"=38=38=20=4C=79=6E=62=72=6F=6F=6B=0D=0A=43=\r\n" |
| @"=4F=20=36=39=39=\r\n" |
| @"=39=39;;;\r\nEND:VCARD" |
| title:nil |
| names:nil |
| pronunciation:nil |
| addresses:@[@"88 Lynbrook\r\nCO 69999"] |
| emails:nil |
| phoneNumbers:nil |
| org:nil |
| urls:nil |
| birthday:nil |
| note:nil]; |
| } |
| |
| - (void)testVCardEscape { |
| [self doTestWithContents:@"BEGIN:VCARD\r\nNOTE:foo\\nbar\r\nEND:VCARD" |
| title:nil |
| names:nil |
| pronunciation:nil |
| addresses:nil |
| emails:nil |
| phoneNumbers:nil |
| org:nil |
| urls:nil |
| birthday:nil |
| note:@"foo\nbar"]; |
| [self doTestWithContents:@"BEGIN:VCARD\r\nNOTE:foo\\;bar\r\nEND:VCARD" |
| title:nil |
| names:nil |
| pronunciation:nil |
| addresses:nil |
| emails:nil |
| phoneNumbers:nil |
| org:nil |
| urls:nil |
| birthday:nil |
| note:@"foo;bar"]; |
| [self doTestWithContents:@"BEGIN:VCARD\r\nNOTE:foo\\\\bar\r\nEND:VCARD" |
| title:nil |
| names:nil |
| pronunciation:nil |
| addresses:nil |
| emails:nil |
| phoneNumbers:nil |
| org:nil |
| urls:nil |
| birthday:nil |
| note:@"foo\\bar"]; |
| [self doTestWithContents:@"BEGIN:VCARD\r\nNOTE:foo\\,bar\r\nEND:VCARD" |
| title:nil |
| names:nil |
| pronunciation:nil |
| addresses:nil |
| emails:nil |
| phoneNumbers:nil |
| org:nil |
| urls:nil |
| birthday:nil |
| note:@"foo,bar"]; |
| } |
| |
| - (void)doTestWithContents:(NSString *)contents |
| title:(NSString *)title |
| names:(NSArray *)names |
| pronunciation:(NSArray *)pronunciation |
| addresses:(NSArray *)addresses |
| emails:(NSArray *)emails |
| phoneNumbers:(NSArray *)phoneNumbers |
| org:(NSString *)org |
| urls:(NSArray *)urls |
| birthday:(NSString *)birthday |
| note:(NSString *)note { |
| ZXResult *fakeResult = [ZXResult resultWithText:contents rawBytes:NULL length:0 resultPoints:nil format:kBarcodeFormatQRCode]; |
| ZXParsedResult *result = [ZXResultParser parseResult:fakeResult]; |
| STAssertEquals(kParsedResultTypeAddressBook, result.type, @"Result type mismatch"); |
| ZXAddressBookParsedResult *addressResult = (ZXAddressBookParsedResult *)result; |
| STAssertEqualObjects(addressResult.title, title, @"Titles do not match"); |
| STAssertEqualObjects(addressResult.names, names, @"Names do not match"); |
| STAssertEqualObjects(addressResult.pronunciation, pronunciation, @"Pronunciation does not match"); |
| STAssertEqualObjects(addressResult.addresses, addresses, @"Addresses do not match"); |
| STAssertEqualObjects(addressResult.emails, emails, @"Emails do not match"); |
| STAssertEqualObjects(addressResult.phoneNumbers, phoneNumbers, @"Phone numbers do not match"); |
| STAssertEqualObjects(addressResult.org, org, @"Org does not match"); |
| STAssertEqualObjects(addressResult.urls, urls, @"URLs do not match"); |
| STAssertEqualObjects(addressResult.birthday, birthday, @"Birthday does not match"); |
| STAssertEqualObjects(addressResult.note, note, @"Note does not match"); |
| } |
| |
| @end |