Module:IP/testcases
Appearance
![]() | This is the test cases page for the module Module:IP. Results of the test cases. |
-- Unit tests for [[Module:IP]]. Click talk page to run tests.
-- Unit test module setup
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
-- Target module setup
local IP = require('Module:IP')
local IPAddress = IP.IPAddress
local Subnet = IP.Subnet
-------------------------------------------------------------------------------
-- IPAddress tests
-------------------------------------------------------------------------------
function suite:testIPEquals()
self:assertTrue(IPAddress.new('1.2.3.4') == IPAddress.new('1.2.3.4'))
self:assertFalse(IPAddress.new('1.2.3.5') == IPAddress.new('1.2.3.4'))
end
function suite:testIPLessThan()
self:assertFalse(IPAddress.new('1.2.3.4') < IPAddress.new('1.2.3.4'))
self:assertFalse(IPAddress.new('1.2.3.5') < IPAddress.new('1.2.3.4'))
self:assertTrue(IPAddress.new('1.2.3.3') < IPAddress.new('1.2.3.4'))
end
function suite:testIPLessThanOrEqualTo()
self:assertTrue(IPAddress.new('1.2.3.4') <= IPAddress.new('1.2.3.4'))
self:assertFalse(IPAddress.new('1.2.3.5') <= IPAddress.new('1.2.3.4'))
self:assertTrue(IPAddress.new('1.2.3.3') <= IPAddress.new('1.2.3.4'))
end
function suite:testIPToString()
self:assertEquals('1.2.3.4', tostring(IPAddress.new('1.2.3.4')))
end
function suite:testConcatIP()
self:assertEquals(
'1.2.3.45.6.7.8',
IPAddress.new('1.2.3.4') .. IPAddress.new('5.6.7.8')
)
self:assertEquals('1.2.3.4foo', IPAddress.new('1.2.3.4') .. 'foo')
end
function suite:testGetIP()
self:assertEquals('1.2.3.4', IPAddress.new('1.2.3.4'):getIP())
end
function suite:testGetVersion()
self:assertEquals('IPv4', IPAddress.new('1.2.3.4'):getVersion())
self:assertEquals('IPv6', IPAddress.new('2001:db8::ff00:12:3456'):getVersion())
end
function suite:testIsIPv4()
self:assertTrue(IPAddress.new('1.2.3.4'):isIPv4())
self:assertFalse(IPAddress.new('2001:db8::ff00:12:3456'):isIPv4())
end
function suite:testIsIPv6()
self:assertTrue(IPAddress.new('2001:db8::ff00:12:3456'):isIPv6())
self:assertFalse(IPAddress.new('1.2.3.4'):isIPv6())
end
function suite:testIsInSubnet()
self:assertTrue(IPAddress.new('1.2.3.4'):isInSubnet(Subnet.new('1.2.3.0/24')))
self:assertFalse(IPAddress.new('1.2.3.4'):isInSubnet(Subnet.new('1.2.4.0/24')))
end
function suite:testGetNextIP()
self:assertEquals('1.2.3.5', tostring(IPAddress.new('1.2.3.4'):getNextIP()))
self:assertEquals(
'2001:db8::ff00:12:3457',
tostring(IPAddress.new('2001:db8::ff00:12:3456'):getNextIP())
)
end
function suite:testGetNextIPWraparound()
self:assertEquals(
'0.0.0.0',
tostring(IPAddress.new('255.255.255.255'):getNextIP())
)
self:assertEquals(
'::',
tostring(IPAddress.new('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'):getNextIP())
)
end
function suite:testGetPreviousIP()
self:assertEquals('1.2.3.3', tostring(IPAddress.new('1.2.3.4'):getPreviousIP()))
self:assertEquals(
'2001:db8::ff00:12:3455',
tostring(IPAddress.new('2001:db8::ff00:12:3456'):getPreviousIP())
)
end
function suite:testGetPreviousIPWraparound()
self:assertEquals(
'255.255.255.255',
tostring(IPAddress.new('0.0.0.0'):getPreviousIP())
)
self:assertEquals(
'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
tostring(IPAddress.new('::'):getPreviousIP())
)
end
-------------------------------------------------------------------------------
-- Subnet tests
-------------------------------------------------------------------------------
function suite:testSubnetGetPrefix()
self:assertEquals(
IPAddress.new('1.2.3.0'),
Subnet.new('1.2.3.0/24'):getPrefix()
)
end
function suite:testSubnetGetHighestIP()
self:assertEquals(
IPAddress.new('1.2.3.255'),
Subnet.new('1.2.3.0/24'):getHighestIP()
)
end
function suite:testSubnetGetBitLength()
self:assertEquals(24, Subnet.new('1.2.3.0/24'):getBitLength())
end
function suite:testSubnetGetBitLength()
self:assertEquals('1.2.3.0/24', Subnet.new('1.2.3.0/24'):getCIDR())
end
function suite:testSubnetGetVersion()
self:assertEquals('IPv4', Subnet.new('1.2.3.0/24'):getVersion())
self:assertEquals('IPv6', Subnet.new('2001:db8::ff00:0:0/96'):getVersion())
end
function suite:testSubnetIsIPv4()
self:assertTrue(Subnet.new('1.2.3.0/24'):isIPv4())
self:assertFalse(Subnet.new('2001:db8::ff00:0:0/96'):isIPv4())
end
function suite:testSubnetIsIPv6()
self:assertTrue(Subnet.new('2001:db8::ff00:0:0/96'):isIPv6())
self:assertFalse(Subnet.new('1.2.3.0/24'):isIPv6())
end
function suite:testSubnetContainsIP()
self:assertTrue(
Subnet.new('1.2.3.0/24'):containsIP(IPAddress.new('1.2.3.4'))
)
self:assertFalse(
Subnet.new('1.2.3.0/24'):containsIP(IPAddress.new('1.2.4.4'))
)
end
function suite:testOverlapsSubnet()
self:assertTrue(
Subnet.new('1.2.0.0/16'):overlapsSubnet(Subnet.new('1.2.3.0/24'))
)
self:assertFalse(
Subnet.new('1.2.0.0/16'):overlapsSubnet(Subnet.new('1.3.3.0/24'))
)
end
return suite