STAssertNoThrow(attributedString=[NSAttributedStringattributedStringWithLinkLabel:linkLabellinkDestination:linkURLString],@"attributedStringWithLinkLabel:linkDestination: threw an exception");
STAssertNotNil(attributedString,@"attributedStringWithLinkLabel:linkDestination: returned nil");
STAssertEqualObjects([attributedStringstring],linkLabel,@"Attributed string's text is not equal to the original string");
STAssertEquals([attributedStringlength],[linkLabellength],@"Attributed string is not the same length (%lu) as the original string (%lu)",[attributedStringlength],[linkLabellength]);
STAssertEquals(linkRange,attributedStringRange,@"Link range is not the entire range of the attributed string");
//Next, try an NSURL object.
STAssertNoThrow(attributedString=[NSAttributedStringattributedStringWithLinkLabel:linkLabellinkDestination:linkURL],@"attributedStringWithLinkLabel:linkDestination: threw an exception");
STAssertNotNil(attributedString,@"attributedStringWithLinkLabel:linkDestination: returned nil");
STAssertEqualObjects([attributedStringstring],linkLabel,@"Attributed string's text is not equal to the original string");
STAssertEquals([attributedStringlength],[linkLabellength],@"Attributed string is not the same length (%lu) as the original string (%lu)",[attributedStringlength],[linkLabellength]);
STAssertEquals(linkRange,attributedStringRange,@"Link range is not the entire range of the attributed string");
}
-(void)testAttributedStringWithLinkedSubstring
{
NSString*linkLabel=@"Download Adium now!";
NSString*linkURLString=@"http://www.adium.im/";
NSURL*linkURL=[NSURLURLWithString:linkURLString];
NSRangeintendedLinkRange={9UL,5UL};//@"Adium"
NSRangelinkRange={0UL,0UL};
idlinkValue;
NSAttributedString*attributedString=nil;
//First, try a string containing a URL.
STAssertNoThrow(attributedString=[NSAttributedStringattributedStringWithString:linkLabellinkRange:intendedLinkRangelinkDestination:linkURLString],@"attributedStringWithLinkLabel:linkDestination: threw an exception");
STAssertNotNil(attributedString,@"attributedStringWithLinkLabel:linkDestination: returned nil");
STAssertEqualObjects([attributedStringstring],linkLabel,@"Attributed string's text is not equal to the original string");
STAssertEquals([attributedStringlength],[linkLabellength],@"Attributed string is not the same length (%lu) as the original string (%lu)",[attributedStringlength],[linkLabellength]);
STAssertNotNil(linkValue,@"Attributed string does not have a link");
STAssertTrue([linkValueisKindOfClass:[NSURLclass]],@"Link value is not an NSURL");
STAssertEqualObjects(linkValue,linkURL,@"Link value is not equal to the URL we provided");
STAssertEquals(linkRange,intendedLinkRange,@"Link range is not the range we wanted to link");
//Next, try an NSURL object.
STAssertNoThrow(attributedString=[NSAttributedStringattributedStringWithString:linkLabellinkRange:intendedLinkRangelinkDestination:linkURL],@"attributedStringWithLinkLabel:linkDestination: threw an exception");
STAssertNotNil(attributedString,@"attributedStringWithLinkLabel:linkDestination: returned nil");
STAssertEqualObjects([attributedStringstring],linkLabel,@"Attributed string's text is not equal to the original string");
STAssertEquals([attributedStringlength],[linkLabellength],@"Attributed string is not the same length (%lu) as the original string (%lu)",[attributedStringlength],[linkLabellength]);
STAssertNoThrow(attributedString=[NSAttributedStringattributedStringWithString:linkLabellinkRange:intendedLinkRangelinkDestination:linkURLString],@"attributedStringWithLinkLabel:linkDestination: threw an exception");
STAssertNotNil(attributedString,@"attributedStringWithLinkLabel:linkDestination: returned nil");
STAssertEqualObjects([attributedStringstring],linkLabel,@"Attributed string's text is not equal to the original string");
STAssertEquals([attributedStringlength],[linkLabellength],@"Attributed string is not the same length (%lu) as the original string (%lu)",[attributedStringlength],[linkLabellength]);
STAssertEquals(linkRange,attributedStringRange,@"Link range is not the entire range of the attributed string");
//Next, try an NSURL object.
STAssertNoThrow(attributedString=[NSAttributedStringattributedStringWithString:linkLabellinkRange:intendedLinkRangelinkDestination:linkURL],@"attributedStringWithLinkLabel:linkDestination: threw an exception");
STAssertNotNil(attributedString,@"attributedStringWithLinkLabel:linkDestination: returned nil");
STAssertEqualObjects([attributedStringstring],linkLabel,@"Attributed string's text is not equal to the original string");
STAssertEquals([attributedStringlength],[linkLabellength],@"Attributed string is not the same length (%lu) as the original string (%lu)",[attributedStringlength],[linkLabellength]);
STAssertNoThrow(attributedString=[NSAttributedStringattributedStringWithString:linkLabellinkRange:intendedLinkRangelinkDestination:linkURLString],@"attributedStringWithLinkLabel:linkDestination: threw an exception");
STAssertNotNil(attributedString,@"attributedStringWithLinkLabel:linkDestination: returned nil");
STAssertEqualObjects([attributedStringstring],linkLabel,@"Attributed string's text is not equal to the original string");
STAssertEquals([attributedStringlength],[linkLabellength],@"Attributed string is not the same length (%lu) as the original string (%lu)",[attributedStringlength],[linkLabellength]);
STAssertEquals(linkRange,attributedStringRange,@"Non-link range is not the entire string");
//Next, try an NSURL object.
STAssertNoThrow(attributedString=[NSAttributedStringattributedStringWithString:linkLabellinkRange:intendedLinkRangelinkDestination:linkURL],@"attributedStringWithLinkLabel:linkDestination: threw an exception");
STAssertNotNil(attributedString,@"attributedStringWithLinkLabel:linkDestination: returned nil");
STAssertEqualObjects([attributedStringstring],linkLabel,@"Attributed string's text is not equal to the original string");
STAssertEquals([attributedStringlength],[linkLabellength],@"Attributed string is not the same length (%lu) as the original string (%lu)",[attributedStringlength],[linkLabellength]);
STAssertNoThrow(result=[inputattributedStringByConvertingLinksToStrings],@"-attributedStringByConvertingLinksToStrings threw an exception");
STAssertNotNil(result,@"-attributedStringByConvertingLinksToStrings returned nil");
STAssertEqualObjects([resultstring],@"Adium (http://www.adium.im/) requires Growl (http://growl.info/).",@"-attributedStringByConvertingLinksToStrings did not correctly expand the links");
STAssertNoThrow(result=[inputattributedStringByConvertingLinksToURLStrings],@"-attributedStringByConvertingLinksToURLStrings threw an exception");
STAssertNotNil(result,@"-attributedStringByConvertingLinksToURLStrings returned nil");
STAssertEqualObjects([resultstring],@"http://www.adium.im/ requires http://growl.info/.",@"-attributedStringByConvertingLinksToURLStrings did not correctly expand the links");