public DualCidrBlock Parse(string ip4CidrBlockString, string ip6CidrBlockString)
        {
            Ip4CidrBlock ip4CidrBlock = _ip4CidrBlockParser.Parse(ip4CidrBlockString);
            Ip6CidrBlock ip6CidrBlock = _ip6CidrBlockParser.Parse(ip6CidrBlockString);

            return(new DualCidrBlock(ip4CidrBlock, ip6CidrBlock));
        }
        public void TestWithoutErrors(string value, int cidr)
        {
            Ip4CidrBlock ip4CidrBlock = _parser.Parse(value);

            Assert.That(ip4CidrBlock.Value, Is.EqualTo(cidr));
            Assert.That(ip4CidrBlock.ErrorCount, Is.EqualTo(0));
        }
        public void Test(string value, int cidr, int errorCount)
        {
            Ip4CidrBlock ip4CidrBlock = _parser.Parse(value);

            Assert.That(ip4CidrBlock.Value, Is.EqualTo(errorCount == 0 ? cidr : (int?)null));
            Assert.That(ip4CidrBlock.ErrorCount, Is.EqualTo(errorCount));
        }
        public void TestWithErrors(string value, int cidr, string errorMessage)
        {
            Ip4CidrBlock ip4CidrBlock = _parser.Parse(value);

            Assert.That(ip4CidrBlock.Value, Is.EqualTo(null));
            Assert.That(ip4CidrBlock.ErrorCount, Is.EqualTo(1));
            Assert.That(ip4CidrBlock.Errors[0].Message, Is.EqualTo(errorMessage));
        }
        //"ip4" ":" ip4-network [ ip4-cidr-length ]
        public Term Parse(string mechanism, Qualifier qualifier, string arguments)
        {
            string[] splits = arguments.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

            Ip4Addr ipAddress = _ip4AddrParser.Parse(splits.ElementAtOrDefault(0));

            Ip4CidrBlock cidrBlock = _cidrBlockParser.Parse(splits.ElementAtOrDefault(1));

            return(new Ip4(mechanism, qualifier, ipAddress, cidrBlock));
        }
        public Ip4CidrBlock Parse(string cidrBlock)
        {
            if (string.IsNullOrEmpty(cidrBlock))
            {
                return(new Ip4CidrBlock(DefaultIp4CidrBlock));
            }

            if (_regex.IsMatch(cidrBlock))
            {
                return(new Ip4CidrBlock(int.Parse(cidrBlock)));
            }

            Ip4CidrBlock ip4CidrBlock = new Ip4CidrBlock(null);
            string       errorMessage = string.Format(SpfParserResource.InvalidValueErrorMessage, "ipv4 cidr block", $"{cidrBlock}. Value must be in the range 0-32");

            ip4CidrBlock.AddError(new Error(ErrorType.Error, errorMessage));
            return(ip4CidrBlock);
        }