{
var status = new TwitterApiStatus();
- var eventCalled = false;
- status.AccessLimitUpdated += (s, e) => eventCalled = true;
-
var header = new Dictionary<string, string>
{
["X-Rate-Limit-Limit"] = "150",
["X-Access-Level"] = "read-write-directmessages",
};
- status.UpdateFromHeader(header, "/statuses/home_timeline");
+ Assert.Raises<TwitterApiStatus.AccessLimitUpdatedEventArgs>(
+ x => status.AccessLimitUpdated += x,
+ x => status.AccessLimitUpdated -= x,
+ () => status.UpdateFromHeader(header, "/statuses/home_timeline")
+ );
var rateLimit = status.AccessLimit["/statuses/home_timeline"];
Assert.Equal(150, rateLimit.AccessLimitCount);
Assert.Equal(new DateTime(2013, 1, 2, 0, 0, 0, DateTimeKind.Utc).ToLocalTime(), mediaLimit.AccessLimitResetDate);
Assert.Equal(TwitterApiAccessLevel.ReadWriteAndDirectMessage, status.AccessLevel);
-
- Assert.True(eventCalled);
}
[Fact]
{
var status = new TwitterApiStatus();
- var eventCalled = false;
- status.AccessLimitUpdated += (s, e) => eventCalled = true;
-
var response = new HttpResponseMessage
{
Headers =
},
};
- status.UpdateFromHeader(response.Headers, "/statuses/home_timeline");
+ Assert.Raises<TwitterApiStatus.AccessLimitUpdatedEventArgs>(
+ x => status.AccessLimitUpdated += x,
+ x => status.AccessLimitUpdated -= x,
+ () => status.UpdateFromHeader(response.Headers, "/statuses/home_timeline")
+ );
var rateLimit = status.AccessLimit["/statuses/home_timeline"];
Assert.Equal(150, rateLimit.AccessLimitCount);
Assert.Equal(new DateTime(2013, 1, 2, 0, 0, 0, DateTimeKind.Utc).ToLocalTime(), mediaLimit.AccessLimitResetDate);
Assert.Equal(TwitterApiAccessLevel.ReadWriteAndDirectMessage, status.AccessLevel);
-
- Assert.True(eventCalled);
}
public void UpdateFromJsonTest()
{
var status = new TwitterApiStatus();
- var eventCalled = false;
- status.AccessLimitUpdated += (s, e) => eventCalled = true;
-
var json = "{\"resources\":{\"statuses\":{\"/statuses/home_timeline\":{\"limit\":150,\"remaining\":100,\"reset\":1356998400}}}}";
- status.UpdateFromJson(TwitterRateLimits.ParseJson(json));
+
+ Assert.Raises<TwitterApiStatus.AccessLimitUpdatedEventArgs>(
+ x => status.AccessLimitUpdated += x,
+ x => status.AccessLimitUpdated -= x,
+ () => status.UpdateFromJson(TwitterRateLimits.ParseJson(json))
+ );
var rateLimit = status.AccessLimit["/statuses/home_timeline"];
Assert.Equal(150, rateLimit.AccessLimitCount);
Assert.Equal(100, rateLimit.AccessLimitRemain);
Assert.Equal(new DateTime(2013, 1, 1, 0, 0, 0, DateTimeKind.Utc).ToLocalTime(), rateLimit.AccessLimitResetDate);
-
- Assert.True(eventCalled);
}
[Fact]
{
var apiStatus = new TwitterApiStatus();
- var eventCount = 0;
- apiStatus.AccessLimitUpdated += (s, e) => eventCount++;
-
- Assert.Equal(0, eventCount);
-
- apiStatus.AccessLimit["/statuses/home_timeline"] = new ApiLimit(150, 100, new DateTime(2013, 1, 1, 0, 0, 0));
- Assert.Equal(1, eventCount);
-
- apiStatus.Reset();
- Assert.Equal(2, eventCount);
+ Assert.Raises<TwitterApiStatus.AccessLimitUpdatedEventArgs>(
+ x => apiStatus.AccessLimitUpdated += x,
+ x => apiStatus.AccessLimitUpdated -= x,
+ () => apiStatus.AccessLimit["/statuses/home_timeline"] = new ApiLimit(150, 100, new DateTime(2013, 1, 1, 0, 0, 0))
+ );
+
+ Assert.Raises<TwitterApiStatus.AccessLimitUpdatedEventArgs>(
+ x => apiStatus.AccessLimitUpdated += x,
+ x => apiStatus.AccessLimitUpdated -= x,
+ () => apiStatus.Reset()
+ );
}
}
}
twitter.Initialize("", "", "", 0L);
mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
- var eventCalled = false;
- mediaSelector.BeginSelecting += (o, e) => eventCalled = true;
-
- mediaSelector.BeginSelection();
-
- Assert.True(eventCalled);
+ Assert.Raises<EventArgs>(
+ x => mediaSelector.BeginSelecting += x,
+ x => mediaSelector.BeginSelecting -= x,
+ () => mediaSelector.BeginSelection()
+ );
Assert.True(mediaSelector.Visible);
Assert.True(mediaSelector.Enabled);
twitter.Initialize("", "", "", 0L);
mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
- var eventCalled = false;
- mediaSelector.BeginSelecting += (o, e) => eventCalled = true;
-
var images = new[] { "Resources/re.gif" };
- mediaSelector.BeginSelection(images);
- Assert.True(eventCalled);
+ Assert.Raises<EventArgs>(
+ x => mediaSelector.BeginSelecting += x,
+ x => mediaSelector.BeginSelecting -= x,
+ () => mediaSelector.BeginSelection(images)
+ );
Assert.True(mediaSelector.Visible);
Assert.True(mediaSelector.Enabled);
twitter.Initialize("", "", "", 0L);
mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
- var eventCalled = false;
- mediaSelector.BeginSelecting += (o, e) => eventCalled = true;
-
using (var bitmap = new Bitmap(width: 200, height: 200))
{
- mediaSelector.BeginSelection(bitmap);
+ Assert.Raises<EventArgs>(
+ x => mediaSelector.BeginSelecting += x,
+ x => mediaSelector.BeginSelecting -= x,
+ () => mediaSelector.BeginSelection(bitmap)
+ );
}
- Assert.True(eventCalled);
-
Assert.True(mediaSelector.Visible);
Assert.True(mediaSelector.Enabled);
var displayImage = mediaSelector.ImageSelectedPicture.Image; // 表示中の画像
- var eventCalled = false;
- mediaSelector.EndSelecting += (o, e) => eventCalled = true;
-
- mediaSelector.EndSelection();
-
- Assert.True(eventCalled);
+ Assert.Raises<EventArgs>(
+ x => mediaSelector.EndSelecting += x,
+ x => mediaSelector.EndSelecting -= x,
+ () => mediaSelector.EndSelection()
+ );
Assert.False(mediaSelector.Visible);
Assert.False(mediaSelector.Enabled);
Assert.Equal(new[] { "1", "2", "3" }, pages.Cast<object>().Select(x => x.ToString()));
Assert.True(mediaSelector.ImagePageCombo.Enabled);
- var eventCalled = false;
- mediaSelector.SelectedServiceChanged += (o, e) => eventCalled = true;
-
// 投稿先を yfrog に変更
- mediaSelector.ImageServiceCombo.SelectedIndex =
- mediaSelector.ImageServiceCombo.Items.IndexOf("yfrog");
-
- Assert.True(eventCalled); // SelectedServiceChanged イベントが呼ばれる
+ var yfrogIndex = mediaSelector.ImageServiceCombo.Items.IndexOf("yfrog");
+ Assert.Raises<EventArgs>(
+ x => mediaSelector.SelectedServiceChanged += x,
+ x => mediaSelector.SelectedServiceChanged -= x,
+ () => mediaSelector.ImageServiceCombo.SelectedIndex = yfrogIndex
+ );
// 1 ページ目のみ選択可能な状態 (Disabled)
pages = mediaSelector.ImagePageCombo.Items;
}
}
+ public static async Task NotRaisesAsync<T>(Action<EventHandler<T>> attach, Action<EventHandler<T>> detach, Func<Task> testCode)
+ where T : EventArgs
+ {
+ T raisedEvent = null;
+ EventHandler<T> handler = (s, e) => raisedEvent = e;
+
+ try
+ {
+ attach(handler);
+ await testCode().ConfigureAwait(false);
+
+ if (raisedEvent != null)
+ throw new Xunit.Sdk.RaisesException(typeof(void), raisedEvent.GetType());
+ }
+ finally
+ {
+ detach(handler);
+ }
+ }
+
public static MemoryImage CreateDummyImage()
{
using (var bitmap = new Bitmap(100, 100))
{
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
- bool eventCalled;
- thumbbox.ThumbnailLoading +=
- (s, e) => { eventCalled = true; };
-
var post = new PostClass
{
TextFromApi = "てすと",
{
},
};
- eventCalled = false;
- await thumbbox.ShowThumbnailAsync(post);
-
- Assert.False(eventCalled);
+ await TestUtils.NotRaisesAsync<EventArgs>(
+ x => thumbbox.ThumbnailLoading += x,
+ x => thumbbox.ThumbnailLoading -= x,
+ () => thumbbox.ShowThumbnailAsync(post)
+ );
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
new MediaInfo("http://foo.example.com/abcd"),
},
};
- eventCalled = false;
- await thumbbox.ShowThumbnailAsync(post2);
- Assert.True(eventCalled);
+ await Assert.RaisesAsync<EventArgs>(
+ x => thumbbox.ThumbnailLoading += x,
+ x => thumbbox.ThumbnailLoading -= x,
+ () => thumbbox.ShowThumbnailAsync(post2)
+ );
}
}
{
public partial class MediaSelector : UserControl
{
- public event EventHandler BeginSelecting;
- public event EventHandler EndSelecting;
+ public event EventHandler<EventArgs> BeginSelecting;
+ public event EventHandler<EventArgs> EndSelecting;
- public event EventHandler FilePickDialogOpening;
- public event EventHandler FilePickDialogClosed;
+ public event EventHandler<EventArgs> FilePickDialogOpening;
+ public event EventHandler<EventArgs> FilePickDialogClosed;
- public event EventHandler SelectedServiceChanged;
+ public event EventHandler<EventArgs> SelectedServiceChanged;
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
//
resources.ApplyResources(this.ImageSelector, "ImageSelector");
this.ImageSelector.Name = "ImageSelector";
- this.ImageSelector.BeginSelecting += new System.EventHandler(this.ImageSelector_BeginSelecting);
- this.ImageSelector.EndSelecting += new System.EventHandler(this.ImageSelector_EndSelecting);
- this.ImageSelector.FilePickDialogOpening += new System.EventHandler(this.ImageSelector_FilePickDialogOpening);
- this.ImageSelector.FilePickDialogClosed += new System.EventHandler(this.ImageSelector_FilePickDialogClosed);
- this.ImageSelector.SelectedServiceChanged += new System.EventHandler(this.ImageSelector_SelectedServiceChanged);
+ this.ImageSelector.BeginSelecting += new System.EventHandler<System.EventArgs>(this.ImageSelector_BeginSelecting);
+ this.ImageSelector.EndSelecting += new System.EventHandler<System.EventArgs>(this.ImageSelector_EndSelecting);
+ this.ImageSelector.FilePickDialogOpening += new System.EventHandler<System.EventArgs>(this.ImageSelector_FilePickDialogOpening);
+ this.ImageSelector.FilePickDialogClosed += new System.EventHandler<System.EventArgs>(this.ImageSelector_FilePickDialogClosed);
+ this.ImageSelector.SelectedServiceChanged += new System.EventHandler<System.EventArgs>(this.ImageSelector_SelectedServiceChanged);
this.ImageSelector.VisibleChanged += new System.EventHandler(this.ImageSelector_VisibleChanged);
//
// ProfilePanel
resources.ApplyResources(this.tweetThumbnail1, "tweetThumbnail1");
this.tweetThumbnail1.Name = "tweetThumbnail1";
this.tweetThumbnail1.TabStop = false;
- this.tweetThumbnail1.ThumbnailLoading += new System.EventHandler(this.tweetThumbnail1_ThumbnailLoading);
+ this.tweetThumbnail1.ThumbnailLoading += new System.EventHandler<System.EventArgs>(this.tweetThumbnail1_ThumbnailLoading);
this.tweetThumbnail1.ThumbnailDoubleClick += new System.EventHandler<OpenTween.ThumbnailDoubleClickEventArgs>(this.tweetThumbnail1_ThumbnailDoubleClick);
this.tweetThumbnail1.ThumbnailImageSearchClick += new System.EventHandler<OpenTween.ThumbnailImageSearchEventArgs>(this.tweetThumbnail1_ThumbnailImageSearchClick);
//
protected internal List<OTPictureBox> pictureBox = new List<OTPictureBox>();
protected MouseWheelMessageFilter filter = new MouseWheelMessageFilter();
- public event EventHandler ThumbnailLoading;
+ public event EventHandler<EventArgs> ThumbnailLoading;
public event EventHandler<ThumbnailDoubleClickEventArgs> ThumbnailDoubleClick;
public event EventHandler<ThumbnailImageSearchEventArgs> ThumbnailImageSearchClick;