@@ -147,6 +147,18 @@ public void ExtractIPv4()
147147 Assert . IsTrue ( result . Select ( ( n , i ) => expected [ i ] . Equals ( n ) ) . All ( v => true ) ) ;
148148 }
149149
150+ [ TestMethod ]
151+ public void ExtractSelfReturnsSelfIPv4 ( )
152+ {
153+ var network = NetworkHelper . Parse ( "192.168.0.0/16" ) ;
154+ var desired = NetworkHelper . Parse ( "192.168.0.0/16" ) ;
155+
156+ var result = network . Extract ( desired ) . ToArray ( ) ;
157+ var expected = new [ ] { NetworkHelper . Parse ( "192.168.0.0/16" ) } ;
158+
159+ Assert . IsTrue ( result . Select ( ( n , i ) => expected [ i ] . Equals ( n ) ) . All ( v => true ) ) ;
160+ }
161+
150162 [ TestMethod ]
151163 public void ExtractIPv6 ( )
152164 {
@@ -159,6 +171,18 @@ public void ExtractIPv6()
159171 Assert . IsTrue ( result . Select ( ( n , i ) => expected [ i ] . Equals ( n ) ) . All ( v => true ) ) ;
160172 }
161173
174+ [ TestMethod ]
175+ public void ExtractSelfReturnsSelfIPv6 ( )
176+ {
177+ var network = NetworkHelper . Parse ( "1111:2222::/32" ) ;
178+ var desired = NetworkHelper . Parse ( "1111:2222::/32" ) ;
179+
180+ var result = network . Extract ( desired ) . ToArray ( ) ;
181+ var expected = new [ ] { NetworkHelper . Parse ( "1111:2222::/32" ) } ;
182+
183+ Assert . IsTrue ( result . Select ( ( n , i ) => expected [ i ] . Equals ( n ) ) . All ( v => true ) ) ;
184+ }
185+
162186 [ TestMethod ]
163187 public void ExtractMultipleIPv4 ( )
164188 {
@@ -171,6 +195,19 @@ public void ExtractMultipleIPv4()
171195 Assert . IsTrue ( result . Select ( ( n , i ) => expected [ i ] . Equals ( n ) ) . All ( v => true ) ) ;
172196 }
173197
198+ [ TestMethod ]
199+ public void ExtractMultipleSkipsCreated ( )
200+ {
201+ // See https://github.com/RobThree/IPNetworkHelper/issues/1#issuecomment-1034793979
202+ var network = NetworkHelper . Parse ( "37.0.0.0/8" ) ;
203+ var desired = new [ ] { "37.10.128.0/17" , "37.12.128.0/18" , "37.13.64.0/18" , "37.13.128.0/17" } . Select ( v => NetworkHelper . Parse ( v ) ) . ToArray ( ) ;
204+
205+ var result = network . Extract ( desired ) . ToArray ( ) ;
206+ var expected = new [ ] { "37.0.0.0/13" , "37.8.0.0/15" , "37.10.0.0/17" , "37.10.128.0/17" , "37.11.0.0/16" , "37.12.0.0/17" , "37.12.128.0/18" , "37.12.192.0/18" , "37.13.0.0/18" , "37.13.64.0/18" , "37.13.128.0/17" , "37.14.0.0/15" , "37.16.0.0/12" , "37.32.0.0/11" , "37.64.0.0/10" , "37.128.0.0/9" } . Select ( v => NetworkHelper . Parse ( v ) ) . ToArray ( ) ;
207+
208+ Assert . IsTrue ( result . Select ( ( n , i ) => expected [ i ] . Equals ( n ) ) . All ( v => true ) ) ;
209+ }
210+
174211 [ TestMethod ]
175212 public void ExtractMultipleIPv6 ( )
176213 {
@@ -191,7 +228,7 @@ public void ExtractMultipleThrowsOnNetworkOutsideOfStartingNetwork()
191228
192229 try
193230 {
194- network . Extract ( desired ) . ToArray ( ) ;
231+ network . Extract ( desired ) ;
195232 Assert . Fail ( ) ;
196233 }
197234 catch ( IPNetworkNotInIPNetworkException ex )
0 commit comments