• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lduchosal / ipnetwork / 581

02 Jun 2023 08:29AM CUT coverage: 94.615%. Remained the same
581

push

appveyor

web-flow
Merge pull request #271 from lduchosal/dependabot/nuget/Microsoft.CodeCoverage-17.6.1

Build(deps): Bump Microsoft.CodeCoverage from 17.6.0 to 17.6.1

1599 of 1690 relevant lines covered (94.62%)

1185099.52 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/src/System.Net.IPNetwork/IPNetworkCollection.cs
1
// <copyright file="IPNetworkCollection.cs" company="IPNetwork">
2
// Copyright (c) IPNetwork. All rights reserved.
3
// </copyright>
4

5
namespace System.Net
6
{
7
    using System.Collections;
8
    using System.Collections.Generic;
9
    using System.Numerics;
10

11
    public class IPNetworkCollection : IEnumerable<IPNetwork>, IEnumerator<IPNetwork>
12
    {
13
        private BigInteger _enumerator;
14
        private byte _cidrSubnet;
15
        private IPNetwork _ipnetwork;
16

17
        private byte _cidr
18
        {
19
            get { return this._ipnetwork.Cidr; }
599,826✔
20
        }
21

22
        private BigInteger _broadcast
23
        {
24
            get { return IPNetwork.ToBigInteger(this._ipnetwork.Broadcast); }
199,488✔
25
        }
26

27
        private BigInteger _lastUsable
28
        {
29
            get { return IPNetwork.ToBigInteger(this._ipnetwork.LastUsable); }
717✔
30
        }
31

32
        private BigInteger _network
33
        {
34
            get { return IPNetwork.ToBigInteger(this._ipnetwork.Network); }
400,410✔
35
        }
36

37
#if TRAVISCI
38
        public
39
#else
40
        internal
163✔
41
#endif
163✔
42
        IPNetworkCollection(IPNetwork ipnetwork, byte cidrSubnet)
163✔
43
        {
163✔
44
            int maxCidr = ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? 32 : 128;
163✔
45
            if (cidrSubnet > maxCidr)
163✔
46
            {
1✔
47
                throw new ArgumentOutOfRangeException("cidrSubnet");
1✔
48
            }
49

50
            if (cidrSubnet < ipnetwork.Cidr)
162✔
51
            {
1✔
52
                throw new ArgumentException("cidrSubnet");
1✔
53
            }
54

55
            this._cidrSubnet = cidrSubnet;
161✔
56
            this._ipnetwork = ipnetwork;
161✔
57
            this._enumerator = -1;
161✔
58
        }
161✔
59

60
        #region Count, Array, Enumerator
61

62
        public BigInteger Count
63
        {
64
            get
65
            {
199,942✔
66
                BigInteger count = BigInteger.Pow(2, this._cidrSubnet - this._cidr);
199,942✔
67
                return count;
199,942✔
68
            }
199,942✔
69
        }
70

71
        public IPNetwork this[BigInteger i]
72
        {
73
            get
74
            {
66,737✔
75
                if (i >= this.Count)
66,737✔
76
                {
2✔
77
                    throw new ArgumentOutOfRangeException("i");
2✔
78
                }
79

80
                BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6
66,735✔
81
                    ? this._lastUsable : this._broadcast;
66,735✔
82
                BigInteger increment = (last - this._network) / this.Count;
66,735✔
83
                BigInteger uintNetwork = this._network + ((increment + 1) * i);
66,735✔
84
                var ipn = new IPNetwork(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet);
66,735✔
85
                return ipn;
66,735✔
86
            }
66,735✔
87
        }
88

89
        #endregion
90

91
        #region IEnumerable Members
92

93
        IEnumerator<IPNetwork> IEnumerable<IPNetwork>.GetEnumerator()
94
        {
11✔
95
            return this;
11✔
96
        }
11✔
97

98
        IEnumerator IEnumerable.GetEnumerator()
99
        {
1✔
100
            return this;
1✔
101
        }
1✔
102

103
        #region IEnumerator<IPNetwork> Members
104

105
        public IPNetwork Current
106
        {
107
            get { return this[this._enumerator]; }
199,296✔
108
        }
109

110
        #endregion
111

112
        #region IDisposable Members
113

114
        public void Dispose()
115
        {
16✔
116
            // nothing to dispose
117
            return;
16✔
118
        }
16✔
119

120
        #endregion
121

122
        #region IEnumerator Members
123

124
        object IEnumerator.Current
125
        {
126
            get { return this.Current; }
6✔
127
        }
128

129
        public bool MoveNext()
130
        {
66,448✔
131
            this._enumerator++;
66,448✔
132
            if (this._enumerator >= this.Count)
66,448✔
133
            {
12✔
134
                return false;
12✔
135
            }
136

137
            return true;
66,436✔
138
        }
66,448✔
139

140
        public void Reset()
141
        {
1✔
142
            this._enumerator = -1;
1✔
143
        }
1✔
144

145
        #endregion
146

147
        #endregion
148
    }
149
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc