예제 #1
0
파일: GraphTests.cs 프로젝트: zmjack/Dawnx
        public void Test1()
        {
            var points = IntegerRange.Create(7)
                         .Select(i => new GraphPoint {
                Id = Guid.NewGuid(), Name = $"v{i}"
            })
                         .ToArray();

            var relations = new[]
예제 #2
0
        public void Test1()
        {
            var taken = new List <string>();

            for (int i = 0; i < 20; i++)
            {
                var generator = new StringGenerator("$d$d", 0);

                var items = generator.Take(5, taken.ToArray());
                taken.AddRange(items);
            }

            Assert.Equal(IntegerRange.Create(100), taken.Select(x => int.Parse(x)).OrderBy(x => x));
        }
예제 #3
0
파일: Pagination.cs 프로젝트: zmjack/Dawnx
        public static int[] GetRange(int pageNumber, int pageSize, int navCount, bool navAlignRight = false)
        {
            int start, end;

            if (pageSize <= navCount)
            {
                start = 1;
                end   = pageSize;
            }
            else
            {
                var isNavCountEven = navCount % 2 == 0;
                int relativeLeft, relativeRight;

                if (isNavCountEven && !navAlignRight)
                {
                    relativeLeft  = navCount / 2 - 1;
                    relativeRight = navCount / 2;
                }
                else if (isNavCountEven && navAlignRight)
                {
                    relativeLeft  = navCount / 2;
                    relativeRight = navCount / 2 - 1;
                }
                else
                {
                    relativeLeft = relativeRight = (navCount - 1) / 2;
                }

                start = pageNumber - relativeLeft;
                end   = pageNumber + relativeRight;

                //Revises `start` and `end` if any of them overflow
                if (start < 1)
                {
                    end  += 1 - start;
                    start = 1;
                }
                else if (end > pageSize)
                {
                    start -= end - pageSize;
                    end    = pageSize;
                }
            }
            return(IntegerRange.Create(start, end + 1).ToArray());
        }