@@ -399,6 +399,46 @@ def test_carrot
399399 assert_equal ( "::" , @in6_addr_any . to_s )
400400 end
401401
402+ def test_plus
403+ a = IPAddr . new ( "192.168.1.10" )
404+ assert_equal ( "192.168.1.20" , ( a + 10 ) . to_s )
405+
406+ a = IPAddr . new ( "0.0.0.0" )
407+ assert_equal ( "0.0.0.10" , ( a + 10 ) . to_s )
408+
409+ a = IPAddr . new ( "255.255.255.255" )
410+ assert_raise ( IPAddr ::InvalidAddressError ) { a + 10 }
411+
412+ a = IPAddr . new ( "3ffe:505:2::a" )
413+ assert_equal ( "3ffe:505:2::14" , ( a + 10 ) . to_s )
414+
415+ a = IPAddr . new ( "::" )
416+ assert_equal ( "::a" , ( a + 10 ) . to_s )
417+
418+ a = IPAddr . new ( "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" )
419+ assert_raise ( IPAddr ::InvalidAddressError ) { a + 10 }
420+ end
421+
422+ def test_minus
423+ a = IPAddr . new ( "192.168.1.10" )
424+ assert_equal ( "192.168.1.0" , ( a - 10 ) . to_s )
425+
426+ a = IPAddr . new ( "0.0.0.0" )
427+ assert_raise ( IPAddr ::InvalidAddressError ) { a - 10 }
428+
429+ a = IPAddr . new ( "255.255.255.255" )
430+ assert_equal ( "255.255.255.245" , ( a - 10 ) . to_s )
431+
432+ a = IPAddr . new ( "3ffe:505:2::a" )
433+ assert_equal ( "3ffe:505:2::" , ( a - 10 ) . to_s )
434+
435+ a = IPAddr . new ( "::" )
436+ assert_raise ( IPAddr ::InvalidAddressError ) { a - 10 }
437+
438+ a = IPAddr . new ( "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" )
439+ assert_equal ( "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff5" , ( a - 10 ) . to_s )
440+ end
441+
402442 def test_equal
403443 assert_equal ( true , @a == IPAddr . new ( "3FFE:505:2::" ) )
404444 assert_equal ( true , @a == IPAddr . new ( "3ffe:0505:0002::" ) )
0 commit comments