コード例 #1
0
ファイル: IpRangeTests.cs プロジェクト: dlongest/Advent2016
        public void ReturnsValues_Exclusive_OfMultipleRanges()
        {
            var expected = new[] { new Range(0, 1), new Range(5, 5), new Range(8, 4294967295) };

            var sut = new IpRanges();

            sut.Block(new Range(2, 4));
            sut.Block(new Range(6, 7));

            var actual = sut.AvailableRanges();

            Assert.Equal(expected, actual);
        }
コード例 #2
0
ファイル: IpRangeTests.cs プロジェクト: dlongest/Advent2016
        public void HowManyAvailable_ReturnsCountInRange_LessAllBlocks()
        {
            var expectedAvailable = new[] { new Range(3, 3), new Range(9, 9) };

            var sut = new IpRanges(9);

            sut.Block(new Range(5, 8));
            sut.Block(new Range(0, 2));
            sut.Block(new Range(4, 7));

            Assert.Equal(2, sut.HowManyAvailable);
            Assert.Equal(8, sut.HowManyBlocked);
            Assert.Equal(expectedAvailable, sut.AvailableRanges());
        }
コード例 #3
0
ファイル: IpRangeTests.cs プロジェクト: dlongest/Advent2016
        public void ReturnsValues_AfterMultipleOverlappedHaveToMerge()
        {
            var expected = new[] { new Range(0, 0), new Range(9, 4294967295) };

            var sut = new IpRanges();

            sut.Block(new Range(2, 4));
            sut.Block(new Range(5, 8));
            sut.Block(new Range(1, 7));

            var actual = sut.AvailableRanges();

            Assert.Equal(expected, actual);
        }
コード例 #4
0
ファイル: IpRangeTests.cs プロジェクト: dlongest/Advent2016
        public void HowManyAvailable_ReturnsCountInRange_LessBlocks()
        {
            var sut = new IpRanges();

            sut.Block(new Range(2, 5));

            Assert.Equal(4294967292, sut.HowManyAvailable);
        }
コード例 #5
0
        public static void Problem20()
        {
            var ips = new IpRanges();

            foreach (var range in FileStringReader.Read("P20.txt"))
            {
                ips.Block(Range.From(range));
            }

            ips.AvailableRanges().ToList().ForEach(a => Console.WriteLine(string.Format("{0} == {1}", a, a.HowManyInRange)));

            Console.WriteLine("\nLowest Available = {0}", ips.Lowest());
            Console.WriteLine("Number Blocked = {0}", ips.HowManyBlocked);
            Console.WriteLine("Number Available = {0}", ips.HowManyAvailable);
        }