}
[Fact]
+ public void CreateAccessibleText_MediaAltTest()
+ {
+ var text = "https://t.co/hoge";
+ var entities = new TwitterEntities
+ {
+ Media = new[]
+ {
+ new TwitterEntityMedia
+ {
+ Indices = new[] { 0, 17 },
+ Url = "https://t.co/hoge",
+ DisplayUrl = "pic.twitter.com/hoge",
+ ExpandedUrl = "https://twitter.com/hoge/status/1234567890/photo/1",
+ AltText = "代替テキスト",
+ },
+ },
+ };
+
+ var expectedText = string.Format(Properties.Resources.ImageAltText, "代替テキスト");
+
+ Assert.Equal(expectedText, Twitter.CreateAccessibleText(text, entities, quoteStatus: null));
+ }
+
+ [Fact]
+ public void CreateAccessibleText_MediaNoAltTest()
+ {
+ var text = "https://t.co/hoge";
+ var entities = new TwitterEntities
+ {
+ Media = new[]
+ {
+ new TwitterEntityMedia
+ {
+ Indices = new[] { 0, 17 },
+ Url = "https://t.co/hoge",
+ DisplayUrl = "pic.twitter.com/hoge",
+ ExpandedUrl = "https://twitter.com/hoge/status/1234567890/photo/1",
+ AltText = null,
+ },
+ },
+ };
+
+ var expectedText = "pic.twitter.com/hoge";
+
+ Assert.Equal(expectedText, Twitter.CreateAccessibleText(text, entities, quoteStatus: null));
+ }
+
+ [Fact]
+ public void CreateAccessibleText_QuotedUrlTest()
+ {
+ var text = "https://t.co/hoge";
+ var entities = new TwitterEntities
+ {
+ Urls = new[]
+ {
+ new TwitterEntityUrl
+ {
+ Indices = new[] { 0, 17 },
+ Url = "https://t.co/hoge",
+ DisplayUrl = "twitter.com/hoge/status/1…",
+ ExpandedUrl = "https://twitter.com/hoge/status/1234567890",
+ },
+ },
+ };
+ var quotedStatus = new TwitterStatus
+ {
+ Id = 1234567890L,
+ IdStr = "1234567890",
+ User = new TwitterUser
+ {
+ Id = 1111,
+ IdStr = "1111",
+ ScreenName = "foo",
+ },
+ FullText = "test",
+ };
+
+ var expectedText = string.Format(Properties.Resources.QuoteStatus_AccessibleText, "foo", "test");
+
+ Assert.Equal(expectedText, Twitter.CreateAccessibleText(text, entities, quotedStatus));
+ }
+
+ [Fact]
+ public void CreateAccessibleText_QuotedUrlNoReferenceTest()
+ {
+ var text = "https://t.co/hoge";
+ var entities = new TwitterEntities
+ {
+ Urls = new[]
+ {
+ new TwitterEntityUrl
+ {
+ Indices = new[] { 0, 17 },
+ Url = "https://t.co/hoge",
+ DisplayUrl = "twitter.com/hoge/status/1…",
+ ExpandedUrl = "https://twitter.com/hoge/status/1234567890",
+ },
+ },
+ };
+ var quotedStatus = (TwitterStatus)null;
+
+ var expectedText = "twitter.com/hoge/status/1…";
+
+ Assert.Equal(expectedText, Twitter.CreateAccessibleText(text, entities, quotedStatus));
+ }
+
+ [Fact]
public void CreateHtmlAnchor_Test()
{
var text = "@twitterapi #BreakingMyTwitter https://t.co/mIJcSoVSK3";
post.TextFromApi = this.ReplaceTextFromApi(post.TextFromApi, entities);
post.TextFromApi = WebUtility.HtmlDecode(post.TextFromApi);
post.TextFromApi = post.TextFromApi.Replace("<3", "\u2661");
- post.AccessibleText = this.CreateAccessibleText(textFromApi, entities, (status.RetweetedStatus ?? status).QuotedStatus);
+ post.AccessibleText = CreateAccessibleText(textFromApi, entities, (status.RetweetedStatus ?? status).QuotedStatus);
post.AccessibleText = WebUtility.HtmlDecode(post.AccessibleText);
post.AccessibleText = post.AccessibleText.Replace("<3", "\u2661");
post.TextFromApi = this.ReplaceTextFromApi(textFromApi, message.Entities);
post.TextFromApi = WebUtility.HtmlDecode(post.TextFromApi);
post.TextFromApi = post.TextFromApi.Replace("<3", "\u2661");
- post.AccessibleText = this.CreateAccessibleText(textFromApi, message.Entities, quoteStatus: null);
+ post.AccessibleText = CreateAccessibleText(textFromApi, message.Entities, quoteStatus: null);
post.AccessibleText = WebUtility.HtmlDecode(post.AccessibleText);
post.AccessibleText = post.AccessibleText.Replace("<3", "\u2661");
post.IsFav = false;
return text;
}
- private string CreateAccessibleText(string text, TwitterEntities entities, TwitterStatus quoteStatus)
+ internal static string CreateAccessibleText(string text, TwitterEntities entities, TwitterStatus quoteStatus)
{
if (entities == null)
return text;
var matchStatusUrl = Twitter.StatusUrlRegex.Match(entity.ExpandedUrl);
if (matchStatusUrl.Success && matchStatusUrl.Groups["StatusId"].Value == quoteStatus.IdStr)
{
- var quoteText = this.CreateAccessibleText(quoteStatus.FullText, quoteStatus.MergedEntities, quoteStatus: null);
+ var quoteText = CreateAccessibleText(quoteStatus.FullText, quoteStatus.MergedEntities, quoteStatus: null);
text = text.Replace(entity.Url, string.Format(Properties.Resources.QuoteStatus_AccessibleText, quoteStatus.User.ScreenName, quoteText));
+ continue;
}
}
- else if (!string.IsNullOrEmpty(entity.DisplayUrl))
- {
+
+ if (!string.IsNullOrEmpty(entity.DisplayUrl))
text = text.Replace(entity.Url, entity.DisplayUrl);
- }
}
}