Beispiel #1
0
        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
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }