public void FilterAll_CopyAndMarkFilterTest() { var homeTab = this.tabinfo.GetTabByType(MyCommon.TabUsageType.Home); var myTab1 = new FilterTabModel("MyTab1"); this.tabinfo.AddTab(myTab1); var filter = new PostFilterRule { FilterName = "aaa", // コピー+マーク MoveMatches = false, MarkMatches = true, }; myTab1.AddFilter(filter); myTab1.FilterModified = false; this.tabinfo.AddPost(new PostClass { StatusId = 100L, ScreenName = "aaa" }); this.tabinfo.AddPost(new PostClass { StatusId = 200L, ScreenName = "bbb" }); this.tabinfo.AddPost(new PostClass { StatusId = 300L, ScreenName = "ccc" }); this.tabinfo.DistributePosts(); this.tabinfo.SubmitUpdate(); // この時点での振り分け状態 Assert.Equal(new[] { 100L, 200L, 300L }, homeTab.StatusIds, AnyOrderComparer <long> .Instance); Assert.Equal(new[] { 100L }, myTab1.StatusIds); // フィルタを変更する filter.FilterName = "bbb"; // フィルタの変更を反映 this.tabinfo.FilterAll(); this.tabinfo.DistributePosts(); this.tabinfo.SubmitUpdate(); // 期待する動作: // [statusId: 100] は MyTab1 から取り除かれる // [statusId: 200] は Recent から MyTab1 にコピーされ、マークが付与される // 変更後の振り分け状態 Assert.Equal(new[] { 100L, 200L, 300L }, homeTab.StatusIds, AnyOrderComparer <long> .Instance); Assert.Equal(new[] { 200L }, myTab1.StatusIds); // [statusId: 200] は IsMark が true の状態になる Assert.True(this.tabinfo[200L].IsMark); }
public void AddFilter_Test() { var tab = new FilterTabModel("MyTab"); var filter = new PostFilterRule(); tab.AddFilter(filter); Assert.Equal(new[] { filter }, tab.FilterArray); Assert.True(tab.FilterModified); }
public void FilterAll_MoveFilterTest() { var homeTab = this.tabinfo.HomeTab; var myTab1 = new FilterTabModel("MyTab1"); this.tabinfo.AddTab(myTab1); var filter = new PostFilterRule { FilterName = "aaa", // マッチしたら移動 MoveMatches = true, }; myTab1.AddFilter(filter); myTab1.FilterModified = false; this.tabinfo.AddPost(new PostClass { StatusId = 100L, ScreenName = "aaa" }); this.tabinfo.AddPost(new PostClass { StatusId = 200L, ScreenName = "bbb" }); this.tabinfo.AddPost(new PostClass { StatusId = 300L, ScreenName = "ccc" }); this.tabinfo.DistributePosts(); this.tabinfo.SubmitUpdate(); // この時点での振り分け状態 Assert.Equal(new[] { 200L, 300L }, homeTab.StatusIds, AnyOrderComparer <long> .Instance); Assert.Equal(new[] { 100L }, myTab1.StatusIds); // フィルタを変更する filter.FilterName = "bbb"; // フィルタの変更を反映 this.tabinfo.FilterAll(); this.tabinfo.DistributePosts(); this.tabinfo.SubmitUpdate(); // 期待する動作: // [statusId: 100] は MyTab1 から取り除かれて Recent に戻される // [statusId: 200] は Recent から MyTab1 に移動される // 変更後の振り分け状態 Assert.Equal(new[] { 100L, 300L }, homeTab.StatusIds, AnyOrderComparer <long> .Instance); Assert.Equal(new[] { 200L }, myTab1.StatusIds); }
public void SetReadHomeTab_ContainsFilterHitTest() { var homeTab = this.tabinfo.Tabs["Recent"]; // Recent に追加するツイート (StatusId: 100, 150, 200; すべて未読) homeTab.UnreadManage = true; this.tabinfo.AddPost(new PostClass { StatusId = 100L, IsRead = false }); this.tabinfo.AddPost(new PostClass { StatusId = 150L, IsRead = false }); this.tabinfo.AddPost(new PostClass { StatusId = 200L, IsRead = false }); // StatusId: 150 だけ FilterTab の振り分けルールにヒットする (PostClass.FilterHit が true になる) var filterTab = new FilterTabModel("FilterTab"); filterTab.AddFilter(TestPostFilterRule.Create(x => x.StatusId == 150L ? MyCommon.HITRESULT.Copy : MyCommon.HITRESULT.None)); this.tabinfo.AddTab(filterTab); this.tabinfo.DistributePosts(); this.tabinfo.SubmitUpdate(); // この時点でのHomeタブの未読件数 Assert.Equal(3, homeTab.UnreadCount); // Recent タブのツイートをすべて未読にする this.tabinfo.SetReadHomeTab(); // FilterHit が true である StatusId: 150 を除いてすべて未読になっている Assert.Equal(1, homeTab.UnreadCount); Assert.Equal(150L, homeTab.NextUnreadId); }
public void FilterAll_MoveFilterTest2() { var homeTab = this.tabinfo.GetTabByType(MyCommon.TabUsageType.Home); var myTab1 = new FilterTabModel("MyTab1"); var myTab2 = new FilterTabModel("MyTab2"); this.tabinfo.AddTab(myTab1); this.tabinfo.AddTab(myTab2); var filter1 = new PostFilterRule { FilterName = "aaa", // マッチしたら移動 MoveMatches = true, }; myTab1.AddFilter(filter1); myTab1.FilterModified = false; var filter2 = new PostFilterRule { FilterName = "bbb", // マッチしたら移動 MoveMatches = true, }; myTab2.AddFilter(filter2); myTab2.FilterModified = false; this.tabinfo.AddPost(new PostClass { StatusId = 100L, ScreenName = "aaa" }); this.tabinfo.AddPost(new PostClass { StatusId = 200L, ScreenName = "bbb" }); this.tabinfo.AddPost(new PostClass { StatusId = 300L, ScreenName = "ccc" }); this.tabinfo.DistributePosts(); this.tabinfo.SubmitUpdate(); // この時点での振り分け状態 Assert.Equal(new[] { 300L }, homeTab.StatusIds); Assert.Equal(new[] { 100L }, myTab1.StatusIds); Assert.Equal(new[] { 200L }, myTab2.StatusIds); // MyTab1 のフィルタを変更する filter1.FilterName = "bbb"; // MyTab2 のフィルタを変更する filter2.FilterName = "ccc"; // フィルタの変更を反映 this.tabinfo.FilterAll(); this.tabinfo.DistributePosts(); this.tabinfo.SubmitUpdate(); // 期待する動作: // [statusId: 100] は MyTab1 から取り除かれて Recent に戻される // [statusId: 200] は MyTab1 に移動される // [statusId: 200] は MyTab2 から取り除かれるが MyTab1 に移動されているので Recent には戻さない // [statusId: 300] は Recent から MyTab2 に移動される // 変更後の振り分け状態 Assert.Equal(new[] { 100L }, homeTab.StatusIds); Assert.Equal(new[] { 200L }, myTab1.StatusIds); Assert.Equal(new[] { 300L }, myTab2.StatusIds); }
public void FilterAll_CopyAndMarkFilterTest() { var homeTab = this.tabinfo.GetTabByType(MyCommon.TabUsageType.Home); var myTab1 = new FilterTabModel("MyTab1"); this.tabinfo.AddTab(myTab1); var filter = new PostFilterRule { FilterName = "aaa", // コピー+マーク MoveMatches = false, MarkMatches = true, }; myTab1.AddFilter(filter); myTab1.FilterModified = false; this.tabinfo.AddPost(new PostClass { StatusId = 100L, ScreenName = "aaa" }); this.tabinfo.AddPost(new PostClass { StatusId = 200L, ScreenName = "bbb" }); this.tabinfo.AddPost(new PostClass { StatusId = 300L, ScreenName = "ccc" }); this.tabinfo.DistributePosts(); this.tabinfo.SubmitUpdate(); // この時点での振り分け状態 Assert.Equal(new[] { 100L, 200L, 300L }, homeTab.StatusIds, AnyOrderComparer<long>.Instance); Assert.Equal(new[] { 100L }, myTab1.StatusIds); // フィルタを変更する filter.FilterName = "bbb"; // フィルタの変更を反映 this.tabinfo.FilterAll(); this.tabinfo.DistributePosts(); this.tabinfo.SubmitUpdate(); // 期待する動作: // [statusId: 100] は MyTab1 から取り除かれる // [statusId: 200] は Recent から MyTab1 にコピーされ、マークが付与される // 変更後の振り分け状態 Assert.Equal(new[] { 100L, 200L, 300L }, homeTab.StatusIds, AnyOrderComparer<long>.Instance); Assert.Equal(new[] { 200L }, myTab1.StatusIds); // [statusId: 200] は IsMark が true の状態になる Assert.True(this.tabinfo[200L].IsMark); }