/// <inheritdoc />
        public async Task BroadcastAsync(Payload payload)
        {
            // TODO: Optimize how federation peers are identified.

            List <INetworkPeer> peers = this.connectionManager.ConnectedPeers.ToList();

            var ipAddressComparer = new IPAddressComparer();

            // TODO: Can do the send to each peer in parallel.

            foreach (INetworkPeer peer in peers)
            {
                // Broadcast to peers.
                if (!peer.IsConnected)
                {
                    continue;
                }

                if (this.federatedPegSettings.FederationNodeIpEndPoints.Any(e => ipAddressComparer.Equals(e.Address, peer.PeerEndPoint.Address)))
                {
                    try
                    {
                        await peer.SendMessageAsync(payload).ConfigureAwait(false);
                    }
                    catch (OperationCanceledException)
                    {
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the ServerInfo object of current server and it represents the specific information on the current proxy.
        /// </summary>
        /// <returns></returns>
        internal ServerInfo GetMyProxyInfo()
        {
            for (int i = 0; i < Proxies.Count; i++)
            {
                foreach (var instance in Proxies[i].Instances)
                {
                    if (instance.AssemblyPath != null)
                    {
                        if (IPAddressComparer.CompareIPAddress(instance.EndPoint.Address, Global.MyIPAddress) == 0 &&
                            FileUtility.CompletePath(instance.AssemblyPath, false).ToLowerInvariant().Equals(Global.MyAssemblyPath.ToLowerInvariant()))
                        {
                            return(instance);
                        }
                    }
                }

                foreach (var instance in Proxies[i].Instances)
                {
                    if (IPAddressComparer.CompareIPAddress(instance.EndPoint.Address, Global.MyIPAddress) == 0)
                    {
                        return(instance);
                    }
                }
            }
            return(null);
        }
Ejemplo n.º 3
0
        public void GetHashCode2()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;

            try
            {
                object x    = null;
                int    hash = comparer.GetHashCode(x);
            }
            catch (ArgumentNullException)
            {
                Assert.IsTrue(true);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            try
            {
                IPAddress x    = null;
                int       hash = comparer.GetHashCode(x);
            }
            catch (ArgumentNullException)
            {
                Assert.IsTrue(true);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }
        }
        public CounterChainSessionManager(
            ILoggerFactory loggerFactory,
            IFederationWalletManager federationWalletManager,
            IFederationWalletTransactionHandler federationWalletTransactionHandler,
            IConnectionManager connectionManager,
            Network network,
            FederationGatewaySettings federationGatewaySettings,
            IInitialBlockDownloadState initialBlockDownloadState,
            IFullNode fullnode,
            IBroadcasterManager broadcastManager,
            ConcurrentChain concurrentChain,
            DataFolder dataFolder,
            IDateTimeProvider dateTimeProvider,
            ICrossChainTransactionAuditor crossChainTransactionAuditor = null)
        {
            Guard.NotNull(loggerFactory, nameof(loggerFactory));
            Guard.NotNull(network, nameof(network));
            Guard.NotNull(dataFolder, nameof(dataFolder));

            this.logger                             = loggerFactory.CreateLogger(this.GetType().FullName);
            this.network                            = network;
            this.connectionManager                  = connectionManager;
            this.initialBlockDownloadState          = initialBlockDownloadState;
            this.concurrentChain                    = concurrentChain;
            this.fullnode                           = fullnode;
            this.broadcastManager                   = broadcastManager;
            this.federationWalletManager            = federationWalletManager;
            this.federationWalletTransactionHandler = federationWalletTransactionHandler;
            this.federationGatewaySettings          = federationGatewaySettings;
            this.ipAddressComparer                  = new IPAddressComparer();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Gets the ServerInfo object of current server and it represents the specific information on the current proxy.
        /// </summary>
        /// <returns></returns>
        internal ServerInfo GetMyProxyInfo()
        {
            for (int i = 0; i < Proxies.Count; i++)
            {
                foreach (var instance in Proxies[i].Instances)
                {
                    if (instance.AssemblyPath != null)
                    {
                        if (IPAddressComparer.IsLocalhost(instance.HostName) &&
                            FileUtility.ComparePath(instance.AssemblyPath, Global.MyAssemblyPath))
                        {
                            return(instance);
                        }
                    }
                }

                foreach (var instance in Proxies[i].Instances)
                {
                    if (IPAddressComparer.IsLocalhost(instance.HostName))
                    {
                        return(instance);
                    }
                }
            }
            return(null);
        }
        /// <inheritdoc />
        public async Task BroadcastAsync(RequestPartialTransactionPayload payload)
        {
            List <INetworkPeer> peers = this.connectionManager.ConnectedPeers.ToList();

            var ipAddressComparer = new IPAddressComparer();

            foreach (INetworkPeer peer in peers)
            {
                // Broadcast to peers.
                if (!peer.IsConnected)
                {
                    continue;
                }

                if (this.federationGatewaySettings.FederationNodeIpEndPoints.Any(e => ipAddressComparer.Equals(e.Address, peer.PeerEndPoint.Address)))
                {
                    try
                    {
                        await peer.SendMessageAsync(payload).ConfigureAwait(false);
                    }
                    catch (OperationCanceledException)
                    {
                    }
                }
            }
        }
Ejemplo n.º 7
0
        public void Equals2()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;
            string            x        = "127.0.0.0";
            string            y        = "128.0.0.0";

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.IsTrue(comparer.Equals(x, x));
        }
Ejemplo n.º 8
0
        public void Equals4()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;
            IPAddress         x        = null;
            IPAddress         y        = IPAddress.Parse("128.0.0.0");

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.IsFalse(comparer.Equals(y, x));
        }
Ejemplo n.º 9
0
        public void Equals()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;
            IPAddress         x        = IPAddress.Loopback;
            IPAddress         y        = IPAddress.Parse("128.0.0.0");

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.IsTrue(comparer.Equals(x, x));
        }
Ejemplo n.º 10
0
        public void Compare4()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;
            //Assert.IsTrue(comparer.Compare(null, IPAddress.Parse("128.0.0.0")) == -1);
            //Assert.IsTrue(comparer.Compare(IPAddress.Parse("128.0.0.0"), null) == 1);

            object x = null;
            object y = null;

            Assert.IsTrue(comparer.Compare(x, y) == 0);
        }
    private static void AddToList(List <IPAddress> list, byte[] address)
    {
        IPAddress         a1  = new IPAddress(address);
        IPAddressComparer ipc = new IPAddressComparer();
        int index             = list.BinarySearch(a1, ipc);

        if (index >= 0)
        {
            throw new Exception("IP address already exists in list");
        }
        list.Insert(~index, a1);
    }
        public void Describe_Airport_Formats_Airport_Correctly()
        {
            var worksheet = new ExcelWorksheetData(TestContext);

            var comparer = new IPAddressComparer();
            var lhs = worksheet.String("LHS") == null ? null : IPAddress.Parse(worksheet.String("LHS"));
            var rhs = worksheet.String("RHS") == null ? null : IPAddress.Parse(worksheet.String("RHS"));
            var expectedResult = worksheet.Int("Result");

            var result = comparer.Compare(lhs, rhs);
            if(expectedResult < 0)      Assert.IsTrue(result < 0);
            else if(expectedResult > 0) Assert.IsTrue(result > 0);
            else                        Assert.AreEqual(0, result);
        }
Ejemplo n.º 13
0
        public void Compare2()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;

            Assert.IsTrue(comparer.Compare(IPAddress.Loopback, IPAddress.Parse("128.0.0.0")) < 0);
            Assert.IsTrue(comparer.Compare(IPAddress.Parse("128.0.0.0"), IPAddress.Loopback) > 0);
            Assert.IsTrue(comparer.Compare(IPAddress.Loopback, IPAddress.Loopback) == 0);

            IPAddress x = new IPAddress(1067890); // 114.75.16.0
            IPAddress y = new IPAddress(1890329); // 25.216.28.0

            Assert.IsTrue(comparer.Compare(x, y) > 0);
            Assert.IsTrue(comparer.Compare(y, x) < 0);
            Assert.IsTrue(comparer.Compare(x, x) == 0);
        }
Ejemplo n.º 14
0
        public void Compare1()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;
            string            x        = "127.0.0.0";
            string            y        = "128.0.0.0";

            Assert.IsTrue(comparer.Compare(x, y) < 0);
            Assert.IsTrue(comparer.Compare(y, x) > 0);
            Assert.IsTrue(comparer.Compare(x, x) == 0);

            x = "1067890"; // 0.16.75.114
            y = "1890329"; // 0.28.216.25.0

            Assert.IsTrue(comparer.Compare(x, y) < 0);
            Assert.IsTrue(comparer.Compare(y, x) > 0);
            Assert.IsTrue(comparer.Compare(x, x) == 0);
        }
Ejemplo n.º 15
0
        public void Equals3()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;
            string            x        = "abc";
            string            y        = "def";

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.IsTrue(comparer.Equals(x, x));

            x = null;
            y = null;
            Assert.IsTrue(comparer.Equals(x, y));
            Assert.IsFalse(comparer.Equals(x, "abc"));
            Assert.IsFalse(comparer.Equals("abc", y));

            Assert.IsFalse(comparer.Equals("abc", "127.0.0.0"));
            Assert.IsFalse(comparer.Equals("127.0.0.0", "abc"));
        }
Ejemplo n.º 16
0
        public void Compare3()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;

            try
            {
                int result = comparer.Compare(IPAddress.Loopback, null);
            }
            catch (ArgumentNullException e)
            {
                if (e.ParamName == "y")
                {
                    Assert.IsTrue(true);
                }
                else
                {
                    Assert.Fail(e.Message);
                }
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            try
            {
                int result = comparer.Compare(null, IPAddress.Loopback);
            }
            catch (ArgumentNullException e)
            {
                if (e.ParamName == "x")
                {
                    Assert.IsTrue(true);
                }
                else
                {
                    Assert.Fail(e.Message);
                }
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }
        }
Ejemplo n.º 17
0
        public void IPEqualsIPShould()
        {
            IPAddress ip1 = IPAddress.Parse("192.168.0.1");
            IPAddress ip2 = IPAddress.Parse("192.168.0.1");
            IPAddress ip3 = IPAddress.Parse("192.168.0.2");

            IPAddressComparer comparer = new IPAddressComparer();
            //Test equals method in IPAddressComparer
            bool isAddressEqual  = comparer.Equals(ip1, ip2);
            bool isAddressEqual2 = comparer.Equals(ip2, ip3);

            Assert.True(isAddressEqual);
            Assert.False(isAddressEqual2);

            //Test compare method in IPAddressComparer
            int compare = comparer.Compare(ip1, ip3);

            Assert.Equal(-1, compare);
        }
Ejemplo n.º 18
0
        public void GetHashCode1()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;
            string            x        = "127.0.0.0";

            Assert.AreEqual(IPAddress.Parse(x).GetHashCode(), comparer.GetHashCode(x));

            object y = "127.0.0.0";

            Assert.AreEqual(IPAddress.Parse(y.ToString()).GetHashCode(), comparer.GetHashCode(y));

            IPAddress z = IPAddress.Loopback;

            Assert.AreEqual(z.GetHashCode(), comparer.GetHashCode(z));

            string a = "abc";

            Assert.AreEqual(a.GetHashCode(), comparer.GetHashCode(a));
        }
Ejemplo n.º 19
0
        public void GetHashCode4()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;

            object x = IPAddress.Loopback;

            Assert.AreEqual(IPAddress.Loopback.GetHashCode(), comparer.GetHashCode(x));

            object y = DateTime.Today;

            Assert.AreEqual(y.GetHashCode(), comparer.GetHashCode(y));

            object z = "127.0.0.0";

            Assert.AreEqual(IPAddress.Parse(z.ToString()).GetHashCode(), comparer.GetHashCode(z));

            object a = "xyz";

            Assert.AreEqual(a.GetHashCode(), comparer.GetHashCode(a));
        }
Ejemplo n.º 20
0
        public void GetHashCode3()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;

            try
            {
                string x    = null;
                int    hash = comparer.GetHashCode(x);
            }
            catch (ArgumentNullException)
            {
                Assert.IsTrue(true);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            Assert.AreEqual(String.Empty.GetHashCode(), comparer.GetHashCode(String.Empty));
        }
        public PartialTransactionsBehavior(
            ILoggerFactory loggerFactory,
            IFederationWalletManager federationWalletManager,
            Network network,
            IFederationGatewaySettings federationGatewaySettings,
            ICrossChainTransferStore crossChainTransferStore)
        {
            Guard.NotNull(loggerFactory, nameof(loggerFactory));
            Guard.NotNull(federationWalletManager, nameof(federationWalletManager));
            Guard.NotNull(network, nameof(network));
            Guard.NotNull(federationGatewaySettings, nameof(federationGatewaySettings));
            Guard.NotNull(crossChainTransferStore, nameof(crossChainTransferStore));

            this.logger                    = loggerFactory.CreateLogger(this.GetType().FullName);
            this.loggerFactory             = loggerFactory;
            this.federationWalletManager   = federationWalletManager;
            this.network                   = network;
            this.federationGatewaySettings = federationGatewaySettings;
            this.crossChainTransferStore   = crossChainTransferStore;
            this.ipAddressComparer         = new IPAddressComparer();
        }
Ejemplo n.º 22
0
        public int Compare(object x, object y)
        {
            UltraGridCell xCell = (UltraGridCell)x;
            UltraGridCell yCell = (UltraGridCell)y;

            //return DateTime.Compare((DateTime)xCell.Row.Cells["Date"].Value, (DateTime)yCell.Row.Cells["Date"].Value);

            string strFirstIP  = xCell.Row.Cells[m_strKey].Value.ToString();
            string strSecondIP = yCell.Row.Cells[m_strKey].Value.ToString();

            if (strFirstIP == "")
            {
                return(1);
            }
            else if (strSecondIP == "")
            {
                return(-1);
            }
            else
            {
                return(IPAddressComparer.ComapreIP(strFirstIP, strSecondIP));
            }
        }
Ejemplo n.º 23
0
        /// <summary>
        /// If this group has associated IP addresses does the specified IP address
        /// fall within the defined range.
        /// </summary>
        /// <param name="ipAddress"></param>
        /// <returns></returns>
        public bool ContainsIP(string ipAddress)
        {
            if (ipAddress == "")
            {
                return(false);
            }

            // Convert the supplied IP address to a .NET IPAddress
            try
            {
                // If no starting IP then no match for sure
                if (this.StartIP == "")
                {
                    return(false);
                }

                // OK break the start and end IP address into individual entries
                string[] startIpAddresses = this.StartIP.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                string[] endIpAddresses   = this.EndIP.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);

                // ...and check if the IP address we have supplied fits into that range
                for (int index = 0; index < startIpAddresses.Length; index++)
                {
                    if ((IPAddressComparer.IsGreaterOrEqual(ipAddress, startIpAddresses[index])) &&
                        (IPAddressComparer.IsLessOrEqual(ipAddress, endIpAddresses[index])))
                    {
                        return(true);
                    }
                }
            }
            catch (Exception)
            {
            }

            return(false);
        }
Ejemplo n.º 24
0
        /// <summary>
        /// Ensure that the IP address range entered is valid
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bnOK_Click(object sender, EventArgs e)
        {
            // If either address has not been specified then this is not valid
            if ((startIPAddress.Text == "") || (endIPAddress.Text == ""))
            {
                MessageBox.Show("You must specify both a start and end IP address", "Range Error");
                startIPAddress.Focus();
                DialogResult = DialogResult.None;
            }

            else if (IPAddressComparer.IsGreater(startIPAddress.Text, endIPAddress.Text))
            {
                MessageBox.Show("The starting IP Address must be less than the ending address", "Range Error");
                startIPAddress.Focus();
                DialogResult = DialogResult.None;
            }

            else
            {
                // OK save the values
                _lower = startIPAddress.Text;
                _upper = endIPAddress.Text;
            }
        }
Ejemplo n.º 25
0
        public void Compare6()
        {
            IPAddressComparer comparer = new IPAddressComparer();
            object            x        = "127.0.0.0";
            object            y        = "128.0.0.0";

            Assert.IsTrue(comparer.Compare(x, y) < 0);
            Assert.IsTrue(comparer.Compare(y, x) > 0);
            Assert.IsTrue(comparer.Compare(x, x) == 0);

            x = "1567890";
            y = "1890329";

            Assert.IsTrue(comparer.Compare(x, y) < 0);
            Assert.IsTrue(comparer.Compare(y, x) > 0);
            Assert.IsTrue(comparer.Compare(x, x) == 0);

            x = String.Empty;
            y = String.Empty;

            Assert.IsTrue(comparer.Compare(x, "127.0.0.0") == -1);
            Assert.IsTrue(comparer.Compare("127.0.0.0", y) == 1);
            Assert.IsTrue(comparer.Compare(x, y) == 0);
        }
Ejemplo n.º 26
0
        public void Describe_Airport_Formats_Airport_Correctly()
        {
            var worksheet = new ExcelWorksheetData(TestContext);

            var comparer       = new IPAddressComparer();
            var lhs            = worksheet.String("LHS") == null ? null : IPAddress.Parse(worksheet.String("LHS"));
            var rhs            = worksheet.String("RHS") == null ? null : IPAddress.Parse(worksheet.String("RHS"));
            var expectedResult = worksheet.Int("Result");

            var result = comparer.Compare(lhs, rhs);

            if (expectedResult < 0)
            {
                Assert.IsTrue(result < 0);
            }
            else if (expectedResult > 0)
            {
                Assert.IsTrue(result > 0);
            }
            else
            {
                Assert.AreEqual(0, result);
            }
        }
Ejemplo n.º 27
0
        public override CollectedData OnAcquire()
        {
            // Find the IP addresses to ping. This will typically provide the IP addresses
            // of the devices being monitored, and can also provide a subnet to ping, and
            // also any extra addresses to ping.
            IPAddressRequest request = new IPAddressRequest("PingCollector");

            RequestBus.Instance.MakeRequest(request);
            if (request.IsHandled == false)
            {
                return(null);
            }

            ListData <PingResult>             d              = new ListData <PingResult>(Context);
            List <Tuple <IPAddress, string> > to_ping        = new List <Tuple <IPAddress, string> >();
            Dictionary <string, string>       ip_to_name_map = new Dictionary <string, string>();

            request.IPAddresses.ForEach(i => ip_to_name_map[i.Item1] = i.Item2);

            // See if a full subnet ping was requested
            foreach (string s in request.Subnets)
            {
                if (IPAddress.TryParse(s, out IPAddress subnet))
                {
                    byte[] ping_addr = subnet.GetAddressBytes();

                    // Collect all the pingable IP addresses on the specified subnet.
                    // 0 and 255 are reserved, so no need to ping them.
                    for (byte i = 1; i < 255; ++i)
                    {
                        ping_addr[3] = i;
                        IPAddress addr = new IPAddress(ping_addr);

                        // Get the name of the device, if we happen to know it
                        string name = string.Empty;
                        ip_to_name_map.TryGetValue(addr.ToString(), out name);

                        to_ping.Add(Tuple.Create(addr, name));
                    }
                }
            }

            // Now put in the other ip addresses that are being monitored.
            // Add them to the list of IPs to ping.
            foreach (Tuple <string, string> ip in request.IPAddresses)
            {
                try
                {
                    if (IPAddress.TryParse(ip.Item1, out IPAddress addr))
                    {
                        to_ping.Add(Tuple.Create(addr, ip.Item2));
                    }
                }
                catch (Exception)
                {
                }
            }

            // Remove any duplictes IP addresses that might have gotten in there
            IPAddressComparer c = new IPAddressComparer();

            to_ping.Sort((a, b) => c.Compare(a.Item1, b.Item1));
            to_ping = to_ping.Distinct().ToList();

            // Create some # of threads for concurrent pinging. The number of threads
            // will be around request.NumPingers.
            ManualResetEvent reset_event = new ManualResetEvent(false);
            int           thread_count   = 0;
            List <Thread> threads        = new List <Thread>();
            List <List <Tuple <IPAddress, string> > > chunks = to_ping.ChunkBy(to_ping.Count / request.NumPingers);

            foreach (List <Tuple <IPAddress, string> > addrs in chunks)
            {
                Thread t = new Thread(
                    () =>
                {
                    Stopwatch watch = Stopwatch.StartNew();

                    List <Tuple <IPAddress, string> > local_addrs = addrs;
                    foreach (Tuple <IPAddress, string> addr in local_addrs)
                    {
                        PingResult result = addr.Item1.PingIt(addr.Item2);
                        lock (d.Data)
                            d.Data.Add(result);
                    }

                    Trace.WriteLine(string.Format("Pinging {0} addrs took {1} ms", local_addrs.Count, watch.ElapsedMilliseconds));

                    if (Interlocked.Decrement(ref thread_count) <= 0)
                    {
                        reset_event.Set();
                    }
                });
                threads.Add(t);
            }

            if (threads.Count > 0)
            {
                try
                {
                    thread_count = threads.Count;
                    threads.ForEach(t => t.Start());

                    reset_event.WaitOne();
                }
                catch (Exception)
                {
                }
                finally
                {
                }

                Dictionary <string, string> ip_to_mac = GetIPAddrsAndMacAddresses();
                foreach (PingResult pr in d.Data)
                {
                    string ip = pr.Address.ToString();
                    if (ip_to_mac.TryGetValue(ip, out string mac))
                    {
                        pr.MAC = mac;
                    }
                }
            }

            d.Data.Sort((a, b) => c.Compare(a.Address, b.Address));
            return(new CollectedData(Context, true, d));
        }
Ejemplo n.º 28
0
        public void Compare6()
        {
            IPAddressComparer comparer = new IPAddressComparer();
            object x = "127.0.0.0";
            object y = "128.0.0.0";

            Assert.IsTrue(comparer.Compare(x, y) < 0);
            Assert.IsTrue(comparer.Compare(y, x) > 0);
            Assert.IsTrue(comparer.Compare(x, x) == 0);

            x = "1567890";
            y = "1890329";

            Assert.IsTrue(comparer.Compare(x, y) < 0);
            Assert.IsTrue(comparer.Compare(y, x) > 0);
            Assert.IsTrue(comparer.Compare(x, x) == 0);

            x = String.Empty;
            y = String.Empty;

            Assert.IsTrue(comparer.Compare(x, "127.0.0.0") == -1);
            Assert.IsTrue(comparer.Compare("127.0.0.0", y) == 1);
            Assert.IsTrue(comparer.Compare(x, y) == 0);
        }
Ejemplo n.º 29
0
        public void Compare5()
        {
            IPAddressComparer comparer = IPAddressComparer.Default as IPAddressComparer;

            try
            {
                comparer.Compare("1067890", "abc123");
            }
            catch (FormatException)
            {
                Assert.IsTrue(true);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            try
            {
                comparer.Compare("abc123", "1067890");
            }
            catch (FormatException)
            {
                Assert.IsTrue(true);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            try
            {
                comparer.Compare("1067890", String.Empty);
            }
            catch (FormatException)
            {
                Assert.IsTrue(true);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            try
            {
                comparer.Compare(String.Empty, "1067890");
            }
            catch (FormatException)
            {
                Assert.IsTrue(true);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            try
            {
                comparer.Compare("1067890", null);
            }
            catch (ArgumentNullException e)
            {
                if (e.ParamName == "y")
                {
                    Assert.IsTrue(true);
                }
                else
                {
                    Assert.Fail(e.Message);
                }
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            try
            {
                comparer.Compare(null, "1067890");
            }
            catch (ArgumentNullException e)
            {
                if (e.ParamName == "x")
                {
                    Assert.IsTrue(true);
                }
                else
                {
                    Assert.Fail(e.Message);
                }
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }
        }