public void GetterSlice_ErrorTest() { var tab = new PublicSearchTabModel("search"); tab.AddPostQueue(new PostClass { StatusId = 100L, TextFromApi = "abcd" }); // 0 tab.AddPostQueue(new PostClass { StatusId = 110L, TextFromApi = "efgh" }); // 1 tab.AddPostQueue(new PostClass { StatusId = 120L, TextFromApi = "ijkl" }); // 2 tab.SetSortMode(ComparerMode.Id, SortOrder.Ascending); tab.AddSubmit(); Assert.Throws <ArgumentOutOfRangeException>(() => tab[-2, -1]); // 範囲外 ... 範囲外 Assert.Throws <ArgumentOutOfRangeException>(() => tab[-1, 1]); // 範囲外 ... 範囲内 Assert.Throws <ArgumentOutOfRangeException>(() => tab[2, 3]); // 範囲内 ... 範囲外 Assert.Throws <ArgumentOutOfRangeException>(() => tab[3, 4]); // 範囲外 ... 範囲外 Assert.Throws <ArgumentOutOfRangeException>(() => tab[-1, 3]); // 範囲外 ... 範囲外 Assert.Throws <ArgumentException>(() => tab[2, 0]); // 範囲内だが startIndex > endIndex }
public void SearchPostsAll_ReverseOrderTest() { var tab = new PublicSearchTabModel("search"); tab.AddPostQueue(new PostClass { StatusId = 100L, TextFromApi = "abcd", ScreenName = "", Nickname = "" }); // 0 tab.AddPostQueue(new PostClass { StatusId = 110L, TextFromApi = "efgh", ScreenName = "", Nickname = "" }); // 1 tab.AddPostQueue(new PostClass { StatusId = 120L, TextFromApi = "ijkl", ScreenName = "", Nickname = "" }); // 2 tab.AddPostQueue(new PostClass { StatusId = 130L, TextFromApi = "abc", ScreenName = "", Nickname = "" }); // 3 tab.AddPostQueue(new PostClass { StatusId = 140L, TextFromApi = "def", ScreenName = "", Nickname = "" }); // 4 tab.SetSortMode(ComparerMode.Id, SortOrder.Ascending); tab.AddSubmit(); // インデックス番号 4 から逆順に開始 → 4, 3, 2, 1, 0 の順に検索 var result = tab.SearchPostsAll(x => x.Contains("a"), startIndex: 4, reverse: true); Assert.Equal(new[] { 3, 0 }, result); // インデックス番号 2 から逆順に開始 → 2, 1, 0, 4, 3 の順に検索 result = tab.SearchPostsAll(x => x.Contains("a"), startIndex: 2, reverse: true); Assert.Equal(new[] { 0, 3 }, result); }
public void NextUnreadIndex_Test() { var tab = new PublicSearchTabModel("search"); tab.SetSortMode(ComparerMode.Id, SortOrder.Ascending); tab.UnreadManage = true; // 未読なし Assert.Equal(-1, tab.NextUnreadIndex); tab.AddPostQueue(new PostClass { StatusId = 50L, IsRead = true, // 既読 }); tab.AddPostQueue(new PostClass { StatusId = 100L, IsRead = false, // 未読 }); tab.AddPostQueue(new PostClass { StatusId = 150L, IsRead = false, // 未読 }); tab.AddSubmit(); Assert.Equal(1, tab.NextUnreadIndex); }
public void GetterSingle_Test() { var tab = new PublicSearchTabModel("search"); tab.AddPostQueue(new PostClass { StatusId = 100L, TextFromApi = "abcd" }); // 0 tab.AddPostQueue(new PostClass { StatusId = 110L, TextFromApi = "efgh" }); // 1 tab.AddPostQueue(new PostClass { StatusId = 120L, TextFromApi = "ijkl" }); // 2 tab.SetSortMode(ComparerMode.Id, SortOrder.Ascending); tab.AddSubmit(); Assert.Equal(100L, tab[0].StatusId); Assert.Equal(120L, tab[2].StatusId); }
public void NextUnreadId_SortByScreenNameDescTest() { var tab = new PublicSearchTabModel("search"); tab.UnreadManage = true; // ScreenName の降順でソート tab.SetSortMode(ComparerMode.Name, SortOrder.Descending); // 画面には上から 300 → 100 → 200 の順に並ぶ tab.AddPostQueue(new PostClass { StatusId = 100L, ScreenName = "bbb", IsRead = false }); tab.AddPostQueue(new PostClass { StatusId = 200L, ScreenName = "aaa", IsRead = false }); tab.AddPostQueue(new PostClass { StatusId = 300L, ScreenName = "ccc", IsRead = false }); tab.AddSubmit(); // 昇順/降順に関わらず、ScreenName の辞書順で小さい順に未読の ID を返す Assert.Equal(200L, tab.NextUnreadId); }
public void NextUnreadId_SortByIdDescTest() { var tab = new PublicSearchTabModel("search"); tab.UnreadManage = true; // ID の降順でソート tab.SetSortMode(ComparerMode.Id, SortOrder.Descending); // 画面には上から 300 → 200 → 100 の順に並ぶ tab.AddPostQueue(new PostClass { StatusId = 100L, IsRead = false }); tab.AddPostQueue(new PostClass { StatusId = 200L, IsRead = false }); tab.AddPostQueue(new PostClass { StatusId = 300L, IsRead = false }); tab.AddSubmit(); // 昇順/降順に関わらず、ID の小さい順に未読の ID を返す Assert.Equal(100L, tab.NextUnreadId); }