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); }
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()); }
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); }
public void HowManyAvailable_ReturnsCountInRange_LessBlocks() { var sut = new IpRanges(); sut.Block(new Range(2, 5)); Assert.Equal(4294967292, sut.HowManyAvailable); }
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); }