모듈:IP/테스트 케이스

Module
-- [Module]의 유닛 테스트:IP]] [Talk]페이지를 클릭하여 테스트를 수행합니다.  -- 유닛 테스트 모듈 셋업 현지의 스크리분토 유닛 = 요구하다('모듈:스크리분토 유닛') 현지의 스위트 = 스크리분토 유닛:신규()  -- 타겟 모듈 셋업 현지의 아이피 = 요구하다('모듈:IP') 현지의 IP 주소 = 아이피.IP 주소 현지의 서브넷 = 아이피.서브넷 현지의 IPv4 컬렉션 = 아이피.IPv4 컬렉션 현지의 IPv6 수집 = 아이피.IPv6 수집  -- 상수 현지의 IP_ADDRESS_CLASS = 'IPAddress' 현지의 IP_ADDRESS_OBJECT = 'ipAddress' 현지의 서브넷 클래스 = '서브넷' 현지의 서브넷_오브젝트 = '실패' 현지의 IPV4COLLECTION_CLASS = 'IPv4 컬렉션' 현지의 IPV4COLLECTION_OBJECT = 'ipv4 컬렉션' 현지의 IPV6 COLLECTION_CLASS = 'IPv6 컬렉션' 현지의 IPV6 COLLECTION_OBJECT = 'ipv6 컬렉션'  ------------------------------------------------------------------------------- -- 도우미 메서드 -------------------------------------------------------------------------------  기능. 스위트:assert Error(아스텐 에러)(메세지, 평지, ...)  현지의 성공., 리트 = pcall(...)  자신:assert False(거짓)(성공.)  자신:assert String 포함(메세지, 리트, 평지) 끝.  기능. 스위트:assert Not Error(ASST Not 오류)(...)  현지의 성공. = pcall(...)  자신:assert True(참)(성공.) 끝.  기능. 스위트:assertSelfParameterError(학급, obj명, 방법, ...)  현지의 메세지 = string.format(   'IP: 잘못된 %s 개체입니다.콜론 대신 점으로 %s를 호출했습니까?즉, %s:%s() 대신 %s.%s()?,   학급, 방법, obj명, 방법, obj명, 방법  )  자신:assert Error(아스텐 에러)(메세지, 진실의, ...) 끝.  기능. 스위트:assertTypeError(ASST타입에러)(argIdx, 기능명, 기대됩니다, 받았다, ...)  현지의 메세지 = string.format(   "bad 인수 #%d to '%s'(%s 예상, %s 취득),   argIdx, 기능명, 기대됩니다, 받았다  )  자신:assert Error(아스텐 에러)(메세지, 진실의, ...) 끝.  기능. 스위트:assert Object Error(ASST 오브젝트 오류)(argIdx, 기능명, 클래스명, ...)  현지의 메세지 = string.format(   "bad 인수 #%d to '%s'(유효한 %s 개체가 아님)",   argIdx, 기능명, 클래스명  )  자신:assert Error(아스텐 에러)(메세지, 진실의, ...) 끝.  기능. 스위트:assert IPString 오류(ipStr, ...)  현지의 메세지 = string.format("%s는 잘못된 IP 주소입니다.", ipStr)  자신:assert Error(아스텐 에러)(메세지, 진실의, ...) 끝.  기능. 스위트:assertCIDRStringError(CID String 오류)(cidr, ...)  현지의 메세지 = string.format("%s는 비활성 CIDR 문자열입니다.", cidr)  자신:assert Error(아스텐 에러)(메세지, 진실의, ...) 끝.  기능. 스위트:assert Metable Protected(assert Metable 보호)(obj)  자신:assert Error(아스텐 에러)('보호된 메타블을 변경할 수 없습니다.', 진실의, 기능. ()   설정 가능한(obj, {})  끝.) 끝.  기능. 스위트:assert Not Metable(측정 불가)()  자신:assert False(거짓)(유형() == '테이블' 그리고. 유형(.__eq) == '기능') 끝.  기능. 스위트:아사트 오브젝트(, ...)  자신:assert True(참)(유형() == '테이블')  위해서 i, 방법  아이페어{...} 하다   자신:assert True(참)(유형([방법]) == '기능')  끝. 끝.  기능. 스위트:assertIPAddressObject()  스위트:아사트 오브젝트(, 'IP를 취득하다', 'InSubnet') 끝.  기능. 스위트:assert Subnet Object(서브넷 오브젝트)()  스위트:아사트 오브젝트(, 'getCIDR', '오디오'IP') 끝.  기능. 스위트:assert Collection 객체()  스위트:아사트 오브젝트(, 'add IP', '서브넷 추가') 끝.  기능. 스위트:assertIPv4CollectionObject()  자신:assert Collection 객체()  자신:assert Equals(동일)(「IPv4」, :getVersion()) 끝.  기능. 스위트:assertIPv6CollectionObject()  자신:assert Collection 객체()  자신:assert Equals(동일)(「IPv6」, :getVersion()) 끝.  기능. 스위트:assertRangesEqual(기대됩니다, 실제.)  자신:assert True(참)(#기대됩니다 == #실제.)  위해서 i = 1, #기대됩니다 하다   현지의 예상 범위 = 기대됩니다[i]   현지의 실제 범위 = 실제.[i]   자신:assert Equals(동일)(예상 범위[1], 실제 범위[1])   자신:assert Equals(동일)(예상 범위[2], 실제 범위[2])  끝. 끝.  ------------------------------------------------------------------------------- -- IPAddress 테스트 -------------------------------------------------------------------------------  기능. 스위트:테스트 IPConstructor()  현지의 기능. assert Valid(유효)아이피(아이피)   자신:assertIPAddressObject(IP 주소.신규(아이피))  끝.  assert Valid(유효)아이피('1.2.3.4')  assert Valid(유효)아이피('0.0.0.0')  assert Valid(유효)아이피('255.255.255.255')  assert Valid(유효)아이피('::')  assert Valid(유효)아이피('fff:fff:fff:fff:fff:fff:fff:fff')  assert Valid(유효)아이피('2001::f:1234') 끝.  기능. 스위트:test Invalid(테스트 무효)IP()  현지의 기능. assert 무효아이피(아이피)   자신:assert Error(아스텐 에러)(    string.format("%s는 잘못된 IP 주소입니다.", 아이피),    진실의,    기능. ()     IP 주소.신규(아이피)    끝.   )  끝.  assert 무효아이피('')  assert 무효아이피('푸')  assert 무효아이피('01.02.03.04')  assert 무효아이피('256.256.256.256')  assert 무효아이피('1.2.3')  assert 무효아이피('1.2.3.4.5')  assert 무효아이피('-1.2.3.4')  assert 무효아이피(':')  -- TODO: 다음 테스트에 대해 어떻게 해야 할지 결정합니다.  -- 단언하다Invalid IP('::')  assert 무효아이피('2001::f:1234')  assert 무효아이피('2001:g::') 끝.  기능. 스위트:테스트 IPConstructor Errors()  자신:assertTypeError(ASST타입에러)(   1, 'IPAddress.new', '문자열, '실패',   기능. ()    IP 주소.신규(진실의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, 'IPAddress.new', '문자열, '숫자',   기능. ()    IP 주소.신규(7)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, 'IPAddress.new', '문자열, '실패',   기능. ()    IP 주소.신규()   끝.  )  자신:assert Error(아스텐 에러)(   "foo"는 잘못된 IP 주소입니다.",   진실의,   기능. ()    IP 주소.신규('푸')   끝.  ) 끝.  기능. 스위트:테스트 IPEquals()  자신:assert True(참)(IP 주소.신규('1.2.3.4') == IP 주소.신규('1.2.3.4'))  자신:assert False(거짓)(IP 주소.신규('1.2.3.5') == IP 주소.신규('1.2.3.4'))  자신:assert True(참)(IP 주소.신규('2001:a1:b2::') == IP 주소.신규('2001:a1:b2::'))  자신:assert True(참)(IP 주소.신규('::') == IP 주소.신규('0:0:0:0:0:0:0:0')) 끝.  기능. 스위트:테스트 IPLess Than()  자신:assert False(거짓)(IP 주소.신규('1.2.3.4') < IP 주소.신규('1.2.3.4'))  자신:assert False(거짓)(IP 주소.신규('1.2.3.5') < IP 주소.신규('1.2.3.4'))  자신:assert True(참)(IP 주소.신규('1.2.3.3') < IP 주소.신규('1.2.3.4'))  자신:assert True(참)(IP 주소.신규('2.0.0.0') < IP 주소.신규('10.0.0.0'))  자신:assert True(참)(IP 주소.신규('2001:a1:b2::') < IP 주소.신규('2001:a1:b2::1'))  자신:assert True(참)(IP 주소.신규('2001:b::') < IP 주소.신규('2001:10::')) 끝.  기능. 스위트:테스트 IPLess Than Or Equal To()  자신:assert True(참)(IP 주소.신규('1.2.3.4') <=> IP 주소.신규('1.2.3.4'))  자신:assert False(거짓)(IP 주소.신규('1.2.3.5') <=> IP 주소.신규('1.2.3.4'))  자신:assert True(참)(IP 주소.신규('1.2.3.3') <=> IP 주소.신규('1.2.3.4')) 끝.  기능. 스위트:테스트 IPToString()  자신:assert Equals(동일)('1.2.3.4', 스트링(IP 주소.신규('1.2.3.4')))  자신:assert Equals(동일)('2001:a1:b2::', 스트링(IP 주소.신규('2001:a1:b2:0:0:0:0:0:0:0:0'))) 끝.  기능. 스위트:테스트 콘센트아이피()  자신:assert Equals(동일)(   '1.2.3.45.6.7.8',   IP 주소.신규('1.2.3.4') .. IP 주소.신규('5.6.7.8')  )  자신:assert Equals(동일)('1.2.3.4 foo', IP 주소.신규('1.2.3.4') .. '푸') 끝.  기능. 스위트:테스트 GetIP()  자신:assert Equals(동일)('1.2.3.4', IP 주소.신규('1.2.3.4'):IP를 취득하다()) 끝.  기능. 스위트:테스트 Get IPErrors()  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, 'IP를 취득하다',   기능. ()    IP 주소.신규('1.2.3.4').IP를 취득하다()   끝.  )  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, 'IP를 취득하다',   기능. ()    IP 주소.신규('1.2.3.4').IP를 취득하다(IP 주소.신규('5.6.7.8'))   끝.  ) 끝.  기능. 스위트:test Get Version()  자신:assert Equals(동일)(「IPv4」, IP 주소.신규('1.2.3.4'):getVersion())  자신:assert Equals(동일)(「IPv6」, IP 주소.신규('2001:db8::ff00:12:3456'):getVersion()) 끝.  기능. 스위트:testGetVersionErrors()  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, '버전 취득',   기능. ()    IP 주소.신규('1.2.3.4').getVersion()   끝.  )  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, '버전 취득',   기능. ()    IP 주소.신규('1.2.3.4').getVersion(IP 주소.신규('5.6.7.8'))   끝.  ) 끝.  기능. 스위트:테스트 ISIPv4()  자신:assert True(참)(IP 주소.신규('1.2.3.4'):ISIPv4())  자신:assert False(거짓)(IP 주소.신규('2001:db8::ff00:12:3456'):ISIPv4()) 끝.  기능. 스위트:testIsIPv4Errors()  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, 「isIPv4」,   기능. ()    IP 주소.신규('1.2.3.4').ISIPv4()   끝.  )  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, 「isIPv4」,   기능. ()    IP 주소.신규('1.2.3.4').ISIPv4(IP 주소.신규('5.6.7.8'))   끝.  ) 끝.  기능. 스위트:테스트 ISIPv6()  자신:assert True(참)(IP 주소.신규('2001:db8::ff00:12:3456'):IPv6())  자신:assert False(거짓)(IP 주소.신규('1.2.3.4'):IPv6()) 끝.  기능. 스위트:testIsIPv6Errors()  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, 「isIPv6」,   기능. ()    IP 주소.신규('1.2.3.4').IPv6()   끝.  )  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, 「isIPv6」,   기능. ()    IP 주소.신규('1.2.3.4').IPv6(IP 주소.신규('5.6.7.8'))   끝.  ) 끝.  기능. 스위트:testIsInSubnet()  자신:assert True(참)(IP 주소.신규('1.2.3.4'):is In Subnet(서브넷.신규('1.2.3.0/24')))  자신:assert False(거짓)(IP 주소.신규('1.2.3.4'):is In Subnet(서브넷.신규('1.2.4.0/24'))) 끝.  기능. 스위트:testIsInSubnetFromString()  자신:assert True(참)(IP 주소.신규('1.2.3.4'):is In Subnet('1.2.3.0/24'))  자신:assert False(거짓)(IP 주소.신규('1.2.3.4'):is In Subnet('1.2.4.0/24')) 끝.  기능. 스위트:testIsInSubnetErrors()  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, 'InSubnet',   기능. ()    IP 주소.신규('1.2.3.4').is In Subnet()   끝.  )  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, 'InSubnet',   기능. ()    IP 주소.신규('1.2.3.4').is In Subnet(IP 주소.신규('5.6.7.8'))   끝.  )  자신:assertTypeError(ASST타입에러)(   1, 'InSubnet', '문자열 또는 테이블', '실패',   기능. ()    IP 주소.신규('1.2.3.4'):is In Subnet(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, 'InSubnet', '문자열 또는 테이블', '실패',   기능. ()    IP 주소.신규('1.2.3.4'):is In Subnet()   끝.  )  자신:assertCIDRStringError(CID String 오류)(   '푸',   기능. ()    IP 주소.신규('1.2.3.4'):is In Subnet('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, 'InSubnet', '서브넷',   기능. ()    IP 주소.신규('1.2.3.4'):is In Subnet{후우 = '바'}   끝.  ) 끝.  기능. 스위트:test Get Subnet()  자신:assert Equals(동일)(   '1.2.3.0/24',   IP 주소.신규('1.2.3.4'):서브넷을 취득하다(24):CIDR을 취득하다()  )  자신:assert Equals(동일)(   '1.2.3.128/25',   IP 주소.신규('1.2.3.130'):서브넷을 취득하다(25):CIDR을 취득하다()  ) 끝.  기능. 스위트:testGetSubnetErrors()  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, '서브넷을 얻다',   기능. ()    IP 주소.신규('1.2.3.4').서브넷을 취득하다(24)   끝.  )  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, '서브넷을 얻다',   기능. ()    IP 주소.신규('1.2.3.4').서브넷을 취득하다(IP 주소.신규('5.6.7.8'), 24)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '서브넷을 얻다', '숫자', '실패',   기능. ()    IP 주소.신규('1.2.3.4'):서브넷을 취득하다(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '서브넷을 얻다', '숫자', '실패',   기능. ()    IP 주소.신규('1.2.3.4'):서브넷을 취득하다()   끝.  ) 끝.  기능. 스위트:test Get SubnetIPv4 Number Errors(IPv4 번호 오류)()  현지의 메세지 = "getSubnet'에 대한 잘못된 인수 #1(0에서 32 사이의 정수여야 함)"  자신:assert Error(아스텐 에러)(메세지, 진실의, 기능. ()   IP 주소.신규('1.2.3.4'):서브넷을 취득하다(33)  끝.)  자신:assert Error(아스텐 에러)(메세지, 진실의, 기능. ()   IP 주소.신규('1.2.3.4'):서브넷을 취득하다(-1)  끝.)  자신:assert Error(아스텐 에러)(메세지, 진실의, 기능. ()   IP 주소.신규('1.2.3.4'):서브넷을 취득하다(24.5)  끝.) 끝.  기능. 스위트:test Get SubnetIPv6 Number Errors(IPv6 번호 오류)()  현지의 메세지 = "getSubnet'에 대한 잘못된 인수 #1(0에서 128 사이의 정수여야 함)"  자신:assert Error(아스텐 에러)(메세지, 진실의, 기능. ()   IP 주소.신규('2001:db8::ff00:12:3456'):서브넷을 취득하다(129)  끝.)  자신:assert Error(아스텐 에러)(메세지, 진실의, 기능. ()   IP 주소.신규('2001:db8::ff00:12:3456'):서브넷을 취득하다(-1)  끝.)  자신:assert Error(아스텐 에러)(메세지, 진실의, 기능. ()   IP 주소.신규('2001:db8::ff00:12:3456'):서브넷을 취득하다(112.5)  끝.) 끝.  기능. 스위트:테스트 Get Next아이피()  자신:assert Equals(동일)('1.2.3.5', 스트링(IP 주소.신규('1.2.3.4'):Next IP를 취득하다()))  자신:assert Equals(동일)(   IP 주소.신규('2001:db8::ff00:12:3457'),   IP 주소.신규('2001:db8::ff00:12:3456'):Next IP를 취득하다()  ) 끝.  기능. 스위트:testGetNextIP 랩어라운드()  자신:assert Equals(동일)(   IP 주소.신규('0.0.0.0'),   IP 주소.신규('255.255.255.255'):Next IP를 취득하다()  )  자신:assert Equals(동일)(   '::',   스트링(IP 주소.신규('fff:fff:fff:fff:fff:fff:fff:fff'):Next IP를 취득하다())  ) 끝.  기능. 스위트:testGetNextIPErrors()  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, '다음으로 이동'IP',   기능. ()    IP 주소.신규('1.2.3.4').Next IP를 취득하다()   끝.  )  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, '다음으로 이동'IP',   기능. ()    IP 주소.신규('1.2.3.4').Next IP를 취득하다(IP 주소.신규('5.6.7.8'))   끝.  ) 끝.  기능. 스위트:testGetPrevious(이전 설정)아이피()  자신:assert Equals(동일)(   IP 주소.신규('1.2.3.3'),   IP 주소.신규('1.2.3.4'):이전을 취득하다아이피()  )  자신:assert Equals(동일)(   IP 주소.신규('2001:db8::ff00:12:3455'),   IP 주소.신규('2001:db8::ff00:12:3456'):이전을 취득하다아이피()  ) 끝.  기능. 스위트:testGetPrevious(이전 설정)IP 어라운드()  자신:assert Equals(동일)(   IP 주소.신규('255.255.255.255'),   IP 주소.신규('0.0.0.0'):이전을 취득하다아이피()  )  자신:assert Equals(동일)(   IP 주소.신규('fff:fff:fff:fff:fff:fff:fff:fff'),   IP 주소.신규('::'):이전을 취득하다아이피()  ) 끝.  기능. 스위트:testGetPrevious(이전 설정)IPErrors(IPErrors)()  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, '이전 상태로 되돌아가다'IP',   기능. ()    IP 주소.신규('1.2.3.4').이전을 취득하다아이피()   끝.  )  자신:assertSelfParameterError(   IP_ADDRESS_CLASS, IP_ADDRESS_OBJECT, '이전 상태로 되돌아가다'IP',   기능. ()    IP 주소.신규('1.2.3.4').이전을 취득하다아이피(IP 주소.신규('5.6.7.8'))   끝.  ) 끝.  기능. 스위트:testGetIPMetable()  자신:assert Not Metable(측정 불가)(getmetable(IP 주소.신규('1.2.3.4'))) 끝.  기능. 스위트:test Set IPMetable()  자신:assert Metable Protected(assert Metable 보호)(IP 주소.신규('1.2.3.4')) 끝.  ------------------------------------------------------------------------------- -- 서브넷 테스트 -------------------------------------------------------------------------------  기능. 스위트:testValidCIDR()  현지의 기능. assertValidCIDR(cidr)   자신:assert True(참)(유형(서브넷.신규(cidr)) == '테이블')  끝.  assertValidCIDR('1.2.3.0/24')  assertValidCIDR(' 1.2.3.0/24 ')  assertValidCIDR('0.0.0.0/0')  assertValidCIDR('0.0.0.0/32')  assertValidCIDR('255.255.255.255/32')  assertValidCIDR('2001:db8::ff00:12:0/syslog')  assertValidCIDR('2001:DB8::FF00:12:0/122')  assertValidCIDR('::/0')  assertValidCIDR('::/128') 끝.  기능. 스위트:test InvalidCIDR()  현지의 기능. assert Invalid CIDR(cidr)   자신:assert Error(아스텐 에러)(    string.format("%s는 비활성 CIDR 문자열입니다.", cidr),    진실의,    기능. ()     서브넷.신규(cidr)    끝.   )  끝.  assert Invalid CIDR('푸')  assert Invalid CIDR('0/0')  assert Invalid CIDR('/24')  assert Invalid CIDR('1.2.3/24')  assert Invalid CIDR(':/0')  assert Invalid CIDR('1.2.3.4')  assert Invalid CIDR('0.0.0.0/33')  assert Invalid CIDR('0.0.0.0/-1')  assert Invalid CIDR('256.0.0.0/24')  assert Invalid CIDR('1.2.3.4/24')  assert Invalid CIDR('1.2.3.0/16')  assert Invalid CIDR('0.0.0.0/01') -- 비트 길이의 선두 0  assert Invalid CIDR('2001:db8::ff00:12:3456')  assert Invalid CIDR('2001:db8::ff00:12:0/foo')  assert Invalid CIDR('::/-1')  assert Invalid CIDR('::/129')  assert Invalid CIDR('ggg:db8::ff00:12:0/syslog')  assert Invalid CIDR('2001:db8::ff00:12:3456/syslog')  assert Invalid CIDR('2001:db8::ff00:12:0/syslog') 끝.  기능. 스위트:test Subnet Constructor Errors()  자신:assertTypeError(ASST타입에러)(   1, 'Subnet.new', '문자열, '실패',   기능. ()    서브넷.신규(진실의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, 'Subnet.new', '문자열, '숫자',   기능. ()    서브넷.신규(7)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, 'Subnet.new', '문자열, '실패',   기능. ()    서브넷.신규()   끝.  ) 끝.  기능. 스위트:test Subnet Equals(서브넷 등)()  자신:assert True(참)(서브넷.신규('1.2.3.0/24') == 서브넷.신규('1.2.3.0/24'))  자신:assert False(거짓)(서브넷.신규('1.2.3.0/24') == 서브넷.신규('1.2.0.0/16')) 끝.  기능. 스위트:테스트 Concat Subnet()  자신:assert Equals(동일)(   '1.2.3.0/244.5.6.0/24',   서브넷.신규('1.2.3.0/24') .. 서브넷.신규('4.5.6.0/24')  )  자신:assert Equals(동일)('1.2.3.0/24 foo', 서브넷.신규('1.2.3.0/24') .. '푸')  자신:assert Equals(동일)('foo 1.2.3.0/24', '푸' .. 서브넷.신규('1.2.3.0/24')) 끝.  기능. 스위트:test Subnet To String()  자신:assert Equals(동일)('1.2.3.0/24', 스트링(서브넷.신규('1.2.3.0/24')))  자신:assert Equals(동일)(   '2001:db8::ff00:12:0/syslog',   스트링(서브넷.신규('2001:db8::ff00:12:0/syslog'))  ) 끝.  기능. 스위트:test Subnet Getmetable()  자신:assert Not Metable(측정 불가)(getmetable(서브넷.신규('1.2.3.0/24'))) 끝.  기능. 스위트:test Subnet Setmetable()  자신:assert Metable Protected(assert Metable 보호)(서브넷.신규('1.2.3.0/24')) 끝.  기능. 스위트:test Subnet Get Prefix()  자신:assert Equals(동일)(   IP 주소.신규('1.2.3.0'),   서브넷.신규('1.2.3.0/24'):get Prefix(프리픽스)()  ) 끝.  기능. 스위트:test Subnet Get Prefix Errors()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '취득 프리픽스',   기능. ()    서브넷.신규('1.2.3.0/24').get Prefix(프리픽스)()   끝.  )  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '취득 프리픽스',   기능. ()    서브넷.신규('1.2.3.0/24').get Prefix(프리픽스)(서브넷.신규('4.5.6.0/24'))   끝.  ) 끝.  기능. 스위트:test Subnet Get Highest아이피()  자신:assert Equals(동일)(   IP 주소.신규('1.2.3.255'),   서브넷.신규('1.2.3.0/24'):가장 높은 값을 취득아이피()  ) 끝.  기능. 스위트:test Get Highest(최고)IPFrom Get Subnet()  자신:assert Equals(동일)(   IP 주소.신규('1.2.3.255'),   IP 주소.신규('1.2.3.4'):서브넷을 취득하다(24):가장 높은 값을 취득아이피()  ) 끝.  기능. 스위트:test Subnet Get HighestIPErrors(IPErrors)()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '최고값 취득'IP',   기능. ()    서브넷.신규('1.2.3.0/24').가장 높은 값을 취득아이피()   끝.  )  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '최고값 취득'IP',   기능. ()    서브넷.신규('1.2.3.0/24').가장 높은 값을 취득아이피(서브넷.신규('4.5.6.0/24'))   끝.  ) 끝.  기능. 스위트:test Subnet Get Bit Length()  자신:assert Equals(동일)(24, 서브넷.신규('1.2.3.0/24'):getBitLength()) 끝.  기능. 스위트:test Subnet Get Bit Length Errors()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '비트 길이 가져오기',   기능. ()    서브넷.신규('1.2.3.0/24').getBitLength()   끝.  ) 끝.  기능. 스위트:test Subnet Get CIDR()  자신:assert Equals(동일)('1.2.3.0/24', 서브넷.신규('1.2.3.0/24'):CIDR을 취득하다()) 끝.  기능. 스위트:testGetCIDRErrors()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, 'getCIDR',   기능. ()    서브넷.신규('1.2.3.0/24').CIDR을 취득하다()   끝.  )  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, 'getCIDR',   기능. ()    서브넷.신규('1.2.3.0/24').CIDR을 취득하다(서브넷.신규('4.5.6.0/24'))   끝.  ) 끝.  기능. 스위트:test Subnet Get Version()  자신:assert Equals(동일)(「IPv4」, 서브넷.신규('1.2.3.0/24'):getVersion())  자신:assert Equals(동일)(「IPv6」, 서브넷.신규('2001:db8::ff00:0:0/96'):getVersion()) 끝.  기능. 스위트:test Subnet Get Version Errors()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '버전 취득',   기능. ()    서브넷.신규('1.2.3.0/24').getVersion()   끝.  )  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '버전 취득',   기능. ()    서브넷.신규('1.2.3.0/24').getVersion(서브넷.신규('4.5.6.0/24'))   끝.  ) 끝.  기능. 스위트:테스트 서브넷IPv4()  자신:assert True(참)(서브넷.신규('1.2.3.0/24'):ISIPv4())  자신:assert False(거짓)(서브넷.신규('2001:db8::ff00:0:0/96'):ISIPv4()) 끝.  기능. 스위트:테스트 서브넷IPv4 에러()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, 「isIPv4」,   기능. ()    서브넷.신규('1.2.3.0/24').ISIPv4()   끝.  )  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, 「isIPv4」,   기능. ()    서브넷.신규('1.2.3.0/24').ISIPv4(서브넷.신규('4.5.6.0/24'))   끝.  ) 끝.  기능. 스위트:테스트 서브넷IPv6()  자신:assert True(참)(서브넷.신규('2001:db8::ff00:0:0/96'):IPv6())  자신:assert False(거짓)(서브넷.신규('1.2.3.0/24'):IPv6()) 끝.  기능. 스위트:테스트 서브넷IPv6 에러()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, 「isIPv6」,   기능. ()    서브넷.신규('1.2.3.0/24').IPv6()   끝.  )  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, 「isIPv6」,   기능. ()    서브넷.신규('1.2.3.0/24').IPv6(서브넷.신규('4.5.6.0/24'))   끝.  ) 끝.  기능. 스위트:test Subnet 포함아이피()  자신:assert True(참)(   서브넷.신규('1.2.3.0/24'):포함하다아이피(IP 주소.신규('1.2.3.4'))  )  자신:assert False(거짓)(   서브넷.신규('1.2.3.0/24'):포함하다아이피(IP 주소.신규('1.2.4.4'))  ) 끝.  기능. 스위트:test Subnet 포함IPErrors(IPErrors)()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '오디오'IP',   기능. ()    서브넷.신규('1.2.3.0/24').포함하다아이피(IP 주소.신규('1.2.3.4'))   끝.  )  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '오디오'IP',   기능. ()    서브넷.신규('1.2.3.0/24').포함하다아이피(     서브넷.신규('4.5.6.0/24'),     IP 주소.신규('1.2.3.4')    )   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '오디오'IP', '문자열 또는 테이블', '실패',   기능. ()    서브넷.신규('1.2.3.0/24'):포함하다아이피(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '오디오'IP', '문자열 또는 테이블', '실패',   기능. ()    서브넷.신규('1.2.3.0/24'):포함하다아이피()   끝.  )  자신:assert IPString 오류(   '푸',   기능. ()    서브넷.신규('1.2.3.0/24'):포함하다아이피('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, '오디오'IP', 'IPAddress',   기능. ()    서브넷.신규('1.2.3.0/24'):포함하다아이피{후우 = '바'}   끝.  ) 끝.  기능. 스위트:test Overlaps Subnet()  자신:assert True(참)(   서브넷.신규('1.2.0.0/16'):중복 서브넷(서브넷.신규('1.2.3.0/24'))  )  자신:assert False(거짓)(   서브넷.신규('1.2.0.0/16'):중복 서브넷(서브넷.신규('1.3.3.0/24'))  ) 끝.  기능. 스위트:testOverlapsSubnetErrors()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '오버랩 서브넷',   기능. ()    서브넷.신규('1.2.3.0/24').중복 서브넷(서브넷.신규('1.2.0.0/16'))   끝.  )  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '오버랩 서브넷',   기능. ()    서브넷.신규('1.2.3.0/24').중복 서브넷(     서브넷.신규('4.5.6.0/24'),     서브넷.신규('1.2.0.0/16')    )   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '오버랩 서브넷', '문자열 또는 테이블', '실패',   기능. ()    서브넷.신규('1.2.3.0/24'):중복 서브넷(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '오버랩 서브넷', '문자열 또는 테이블', '실패',   기능. ()    서브넷.신규('1.2.3.0/24'):중복 서브넷()   끝.  )  자신:assertCIDRStringError(CID String 오류)(   '푸',   기능. ()    서브넷.신규('1.2.3.0/24'):중복 서브넷('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, '오버랩 서브넷', '서브넷',   기능. ()    서브넷.신규('1.2.3.0/24'):중복 서브넷{후우 = '바'}   끝.  ) 끝.  기능. 스위트:테스트 Walk Subnet()  하다   현지의 IPS = {}   위해서 아이피  서브넷.신규('1.2.3.0/30'):걸어.() 하다    IPS[#IPS + 1] = 스트링(아이피)   끝.   자신:assert Equals(동일)(    '1.2.3.0 1.2.3.1 1.2.3.2 1.2.3.3',    table.concat(IPS, ' ')   )  끝.  하다   현지의 IPS = {}   위해서 아이피  서브넷.신규('2001:db8::ff00:0:0/syslog'):걸어.() 하다    IPS[#IPS + 1] = 스트링(아이피)   끝.   자신:assert Equals(동일)(    '2001:db8::ff00:0:0 2001:db8:ff00:0:1 2001:db8:ff00:0:2 2001:db8:ff00:0:0:3',    table.concat(IPS, ' ')   )  끝. 끝.  기능. 스위트:testWalkSubnetErrors()  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '걷다',   기능. ()    서브넷.신규('1.2.3.0/24').걸어.()   끝.  )  자신:assertSelfParameterError(   서브넷 클래스, 서브넷_오브젝트, '걷다',   기능. ()    서브넷.신규('1.2.3.0/24').걸어.(서브넷.신규('4.5.6.0/24'))   끝.  ) 끝.  ------------------------------------------------------------------------------- -- IPv4 Collection 테스트 -------------------------------------------------------------------------------  기능. 스위트:testIPv4CollectionConstructor()  자신:assertIPv4CollectionObject(IPv4 컬렉션.신규()) 끝.  기능. 스위트:test IPv4 Collection Get Version()  자신:assert Equals(동일)(「IPv4」, IPv4 컬렉션.신규():getVersion()) 끝.  기능. 스위트:test IPv4 Collection Add아이피()  자신:assert Not Error(ASST Not 오류)(기능. () IPv4 컬렉션.신규():add IP('1.2.3.4') 끝.)  자신:assert Not Error(ASST Not 오류)(기능. () IPv4 컬렉션.신규():add IP(IP 주소.신규('1.2.3.4')) 끝.)  스위트:assert IPString 오류(   '푸',   기능. ()    IPv4 컬렉션.신규():add IP(IP 주소.신규('푸'))   끝.  )  스위트:assert IPString 오류(   '1.2.3.0/24',   기능. ()    IPv4 컬렉션.신규():add IP(IP 주소.신규('1.2.3.0/24'))   끝.  ) 끝.  기능. 스위트:test IPv4 Collection AddIPChaining()  자신:assert Not Error(ASST Not 오류)(기능. ()   IPv4 컬렉션.신규()    :add IP('1.2.3.4')    :add IP('5.6.7.8')  끝.) 끝.  기능. 스위트:test IPv4 Collection AddIPErrors(IPErrors)()  자신:assertTypeError(ASST타입에러)(   1, 'add IP', '문자열 또는 테이블', '실패',   기능. ()    IPv4 컬렉션.신규():add IP(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, 'add IP', '문자열 또는 테이블', '실패',   기능. ()    IPv4 컬렉션.신규():add IP()   끝.  )  자신:assert IPString 오류(   '푸',   기능. ()    IPv4 컬렉션.신규():add IP('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, 'add IP', 'IPAddress',   기능. ()    IPv4 컬렉션.신규():add IP{후우 = '바'}   끝.  ) 끝.  기능. 스위트:test IPv4 Collection Add Subnet()  자신:assert Not Error(ASST Not 오류)(기능. () IPv4 컬렉션.신규():addSubnet(서브넷 추가)('1.2.3.0/24') 끝.)  자신:assert Not Error(ASST Not 오류)(기능. () IPv4 컬렉션.신규():addSubnet(서브넷 추가)(서브넷.신규('1.2.3.0/24')) 끝.)  스위트:assertCIDRStringError(CID String 오류)(   '푸',   기능. ()    IPv4 컬렉션.신규():addSubnet(서브넷 추가)('푸')   끝.  )  스위트:assertCIDRStringError(CID String 오류)(   '1.2.3.4',   기능. ()    IPv4 컬렉션.신규():addSubnet(서브넷 추가)('1.2.3.4')   끝.  ) 끝.  기능. 스위트:test IPv4 Collection Add Subnet Chaining()  자신:assert Not Error(ASST Not 오류)(기능. ()   IPv4 컬렉션.신규()    :addSubnet(서브넷 추가)('1.2.3.0/24')    :addSubnet(서브넷 추가)('5.6.7.0/24')  끝.) 끝.  기능. 스위트:test IPv4 Collection Add Subnet Errors()  자신:assertTypeError(ASST타입에러)(   1, '서브넷 추가', '문자열 또는 테이블', '실패',   기능. ()    IPv4 컬렉션.신규():addSubnet(서브넷 추가)(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '서브넷 추가', '문자열 또는 테이블', '실패',   기능. ()    IPv4 컬렉션.신규():addSubnet(서브넷 추가)()   끝.  )  자신:assertCIDRStringError(CID String 오류)(   '푸',   기능. ()    IPv4 컬렉션.신규():addSubnet(서브넷 추가)('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, '서브넷 추가', '서브넷',   기능. ()    IPv4 컬렉션.신규():addSubnet(서브넷 추가){후우 = '바'}   끝.  ) 끝.  기능. 스위트:testIPv4Collection 포함아이피()  현지의 수집 = IPv4 컬렉션.신규()  수집:add IP('1.2.3.4')  자신:assert Equals(동일)(진실의, 수집:포함하다아이피('1.2.3.4'))  자신:assert Equals(동일)(진실의, 수집:포함하다아이피(IP 주소.신규('1.2.3.4')))  자신:assert Equals(동일)(거짓의, 수집:포함하다아이피('1.2.3.5')) 끝.  기능. 스위트:testIPv4Collection 포함IPErrors(IPErrors)()  자신:assertTypeError(ASST타입에러)(   1, '오디오'IP', '문자열 또는 테이블', '실패',   기능. ()    IPv4 컬렉션.신규():포함하다아이피(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '오디오'IP', '문자열 또는 테이블', '실패',   기능. ()    IPv4 컬렉션.신규():포함하다아이피()   끝.  )  자신:assert IPString 오류(   '푸',   기능. ()    IPv4 컬렉션.신규():포함하다아이피('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, '오디오'IP', 'IPAddress',   기능. ()    IPv4 컬렉션.신규():포함하다아이피{후우 = '바'}   끝.  ) 끝.  기능. 스위트:test IPv4 Collection Get Ranges()  현지의 수집 = IPv4 컬렉션.신규()  수집:addSubnet(서브넷 추가)('1.2.0.0/24')  수집:addSubnet(서브넷 추가)('1.2.1.0/24')  자신:assertRangesEqual(   {{IP 주소.신규('1.2.0.0'), IP 주소.신규('1.2.1.255')}},   수집:범위 설정()  )  수집:addSubnet(서브넷 추가)('1.2.10.0/24')  자신:assertRangesEqual(   {    {IP 주소.신규('1.2.0.0'), IP 주소.신규('1.2.1.255')},    {IP 주소.신규('1.2.10.0'), IP 주소.신규('1.2.10.255')},   },   수집:범위 설정()  ) 끝.  기능. 스위트:test IPv4 Collection Overlaps Subnet()  현지의 수집 = IPv4 컬렉션.신규()  자신:assert Equals(동일)(거짓의, 수집:중복 서브넷('1.2.3.0/24'))  수집:add IP('1.2.3.4')  자신:assert Equals(동일)(진실의, 수집:중복 서브넷('1.2.3.0/24'))  자신:assert Equals(동일)(거짓의, 수집:중복 서브넷('5.6.7.0/24')) 끝.  기능. 스위트:testIPv4CollectionOverlapsSubnetObjects()  현지의 수집 = IPv4 컬렉션.신규()  자신:assert Equals(동일)(거짓의, 수집:중복 서브넷(서브넷.신규('1.2.3.0/24')))  수집:add IP('1.2.3.4')  자신:assert Equals(동일)(진실의, 수집:중복 서브넷(서브넷.신규('1.2.3.0/24')))  자신:assert Equals(동일)(거짓의, 수집:중복 서브넷(서브넷.신규('5.6.7.0/24'))) 끝.  기능. 스위트:test IPv4 Collection Overlaps Subnet Errors()  자신:assertTypeError(ASST타입에러)(   1, '오버랩 서브넷', '문자열 또는 테이블', '실패',   기능. ()    IPv4 컬렉션.신규():중복 서브넷(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '오버랩 서브넷', '문자열 또는 테이블', '실패',   기능. ()    IPv4 컬렉션.신규():중복 서브넷()   끝.  )  자신:assertCIDRStringError(CID String 오류)(   '푸',   기능. ()    IPv4 컬렉션.신규():중복 서브넷('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, '오버랩 서브넷', '서브넷',   기능. ()    IPv4 컬렉션.신규():중복 서브넷{후우 = '바'}   끝.  ) 끝.  기능. 스위트:test IPv4 Collection Add From String()  현지의 수집 = IPv4 컬렉션.신규()  수집:addFromString('foo 1.2.3.4 bar 5.6.7.0/24 baz')  자신:assert True(참)(수집:포함하다아이피('1.2.3.4'))  자신:assert True(참)(수집:중복 서브넷('5.6.7.0/24')) 끝.  기능. 스위트:test IPv4 Collection Add From String Chaining()  자신:assert Not Error(ASST Not 오류)(기능. ()   IPv4 컬렉션.신규()    :addFromString('foo 1.2.3.4')    :addFromString('바 5.6.7.8')  끝.) 끝.  기능. 스위트:test IPv4 Collection Add From String Errors()  자신:assertTypeError(ASST타입에러)(   1, '시작 문자열 추가', '문자열, '실패',   기능. ()    IPv4 컬렉션.신규():addFromString(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '시작 문자열 추가', '문자열, '실패',   기능. ()    IPv4 컬렉션.신규():addFromString()   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '시작 문자열 추가', '문자열, '테이블',   기능. ()    IPv4 컬렉션.신규():addFromString{}   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '시작 문자열 추가', '문자열, '숫자',   기능. ()    IPv4 컬렉션.신규():addFromString(7)   끝.  ) 끝.  ------------------------------------------------------------------------------- -- IPv6 Collection 테스트 -------------------------------------------------------------------------------  기능. 스위트:test IPv6 Collection Constructor()  자신:assertIPv6CollectionObject(IPv6 수집.신규()) 끝.  기능. 스위트:test IPv6 Collection Get Version()  자신:assert Equals(동일)(「IPv6」, IPv6 수집.신규():getVersion()) 끝.  기능. 스위트:test IPv6 Collection Add아이피()  자신:assert Not Error(ASST Not 오류)(기능. () IPv6 수집.신규():add IP('2001:db8::ff00:12:3456') 끝.)  자신:assert Not Error(ASST Not 오류)(기능. () IPv6 수집.신규():add IP(IP 주소.신규('2001:db8::ff00:12:3456')) 끝.)  스위트:assert IPString 오류(   '푸',   기능. ()    IPv6 수집.신규():add IP(IP 주소.신규('푸'))   끝.  )  스위트:assert IPString 오류(   '2001:db8::ff00:12:0/112',   기능. ()    IPv6 수집.신규():add IP(IP 주소.신규('2001:db8::ff00:12:0/112'))   끝.  ) 끝.  기능. 스위트:test IPv6 Collection AddIPChaining()  자신:assert Not Error(ASST Not 오류)(기능. ()   IPv6 수집.신규()    :add IP('2001:db8::ff00:0:1234')    :add IP('2001:db8::ff00:0:5678')  끝.) 끝.  기능. 스위트:test IPv6 Collection AddIPErrors(IPErrors)()  자신:assertTypeError(ASST타입에러)(   1, 'add IP', '문자열 또는 테이블', '실패',   기능. ()    IPv6 수집.신규():add IP(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, 'add IP', '문자열 또는 테이블', '실패',   기능. ()    IPv6 수집.신규():add IP()   끝.  )  자신:assert IPString 오류(   '푸',   기능. ()    IPv6 수집.신규():add IP('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, 'add IP', 'IPAddress',   기능. ()    IPv6 수집.신규():add IP{후우 = '바'}   끝.  ) 끝.  기능. 스위트:test IPv6 Collection Add Subnet()  자신:assert Not Error(ASST Not 오류)(기능. () IPv6 수집.신규():addSubnet(서브넷 추가)('2001:db8::ff00:12:0/112') 끝.)  자신:assert Not Error(ASST Not 오류)(기능. () IPv6 수집.신규():addSubnet(서브넷 추가)(서브넷.신규('2001:db8::ff00:12:0/112')) 끝.)  스위트:assertCIDRStringError(CID String 오류)(   '푸',   기능. ()    IPv6 수집.신규():addSubnet(서브넷 추가)('푸')   끝.  )  스위트:assertCIDRStringError(CID String 오류)(   '2001:db8::ff00:12:3456',   기능. ()    IPv6 수집.신규():addSubnet(서브넷 추가)('2001:db8::ff00:12:3456')   끝.  ) 끝.  기능. 스위트:test IPv6 Collection Add Subnet Chaining()  자신:assert Not Error(ASST Not 오류)(기능. ()   IPv6 수집.신규()    :addSubnet(서브넷 추가)('2001:db8::ff00:0:0/112')    :addSubnet(서브넷 추가)('2001:db8::ff00:1:0/112')  끝.) 끝.  기능. 스위트:test IPv6 Collection Add Subnet Errors()  자신:assertTypeError(ASST타입에러)(   1, '서브넷 추가', '문자열 또는 테이블', '실패',   기능. ()    IPv6 수집.신규():addSubnet(서브넷 추가)(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '서브넷 추가', '문자열 또는 테이블', '실패',   기능. ()    IPv6 수집.신규():addSubnet(서브넷 추가)()   끝.  )  자신:assertCIDRStringError(CID String 오류)(   '푸',   기능. ()    IPv6 수집.신규():addSubnet(서브넷 추가)('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, '서브넷 추가', '서브넷',   기능. ()    IPv6 수집.신규():addSubnet(서브넷 추가){후우 = '바'}   끝.  ) 끝.  기능. 스위트:testIPv6Collection 포함아이피()  현지의 수집 = IPv6 수집.신규()  수집:add IP('2001:db8::ff00:12:3456')  자신:assert Equals(동일)(진실의, 수집:포함하다아이피('2001:db8::ff00:12:3456'))  자신:assert Equals(동일)(진실의, 수집:포함하다아이피(IP 주소.신규('2001:db8::ff00:12:3456')))  자신:assert Equals(동일)(거짓의, 수집:포함하다아이피('1.2.3.5')) 끝.  기능. 스위트:testIPv6Collection 포함IPErrors(IPErrors)()  자신:assertTypeError(ASST타입에러)(   1, '오디오'IP', '문자열 또는 테이블', '실패',   기능. ()    IPv6 수집.신규():포함하다아이피(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '오디오'IP', '문자열 또는 테이블', '실패',   기능. ()    IPv6 수집.신규():포함하다아이피()   끝.  )  자신:assert IPString 오류(   '푸',   기능. ()    IPv6 수집.신규():포함하다아이피('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, '오디오'IP', 'IPAddress',   기능. ()    IPv6 수집.신규():포함하다아이피{후우 = '바'}   끝.  ) 끝.  기능. 스위트:test IPv6 Collection Get Ranges()  현지의 수집 = IPv6 수집.신규()  수집:addSubnet(서브넷 추가)('2001:db8::ff00:0:0/112')  수집:addSubnet(서브넷 추가)('2001:db8::ff00:1:0/112')  자신:assertRangesEqual(   {{IP 주소.신규('2001:db8::ff00:0:0'), IP 주소.신규('2001:db8::ff00:1:fffff')}},   수집:범위 설정()  )  수집:addSubnet(서브넷 추가)('2001:db8::ff00:10:0/112')  자신:assertRangesEqual(   {    {IP 주소.신규('2001:db8::ff00:0:0'), IP 주소.신규('2001:db8::ff00:1:fffff')},    {IP 주소.신규('2001:db8::ff00:10:0'), IP 주소.신규('2001:db8::ff00:10:fff')},   },   수집:범위 설정()  ) 끝.  기능. 스위트:test IPv6 Collection Overlaps Subnet()  현지의 수집 = IPv6 수집.신규()  자신:assert Equals(동일)(거짓의, 수집:중복 서브넷('2001:db8::ff00:12:0/112'))  수집:add IP('2001:db8::ff00:12:3456')  자신:assert Equals(동일)(진실의, 수집:중복 서브넷('2001:db8::ff00:12:0/112'))  자신:assert Equals(동일)(거짓의, 수집:중복 서브넷('2001:db8::ff00:34:0/112')) 끝.  기능. 스위트:test IPv6 Collection Overlaps Subnet Objects()  현지의 수집 = IPv6 수집.신규()  자신:assert Equals(동일)(거짓의, 수집:중복 서브넷(서브넷.신규('2001:db8::ff00:12:0/112')))  수집:add IP('2001:db8::ff00:12:3456')  자신:assert Equals(동일)(진실의, 수집:중복 서브넷(서브넷.신규('2001:db8::ff00:12:0/112')))  자신:assert Equals(동일)(거짓의, 수집:중복 서브넷(서브넷.신규('2001:db8::ff00:34:0/112'))) 끝.  기능. 스위트:test IPv6 Collection Overlaps Subnet Errors()  자신:assertTypeError(ASST타입에러)(   1, '오버랩 서브넷', '문자열 또는 테이블', '실패',   기능. ()    IPv6 수집.신규():중복 서브넷(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '오버랩 서브넷', '문자열 또는 테이블', '실패',   기능. ()    IPv6 수집.신규():중복 서브넷()   끝.  )  자신:assertCIDRStringError(CID String 오류)(   '푸',   기능. ()    IPv6 수집.신규():중복 서브넷('푸')   끝.  )  자신:assert Object Error(ASST 오브젝트 오류)(   1, '오버랩 서브넷', '서브넷',   기능. ()    IPv6 수집.신규():중복 서브넷{후우 = '바'}   끝.  ) 끝.  기능. 스위트:test IPv6 Collection Add From String()  현지의 수집 = IPv6 수집.신규()  수집:addFromString('foo 2001:db8::ff00:12:3456 bar 2001:db8::ff00:34:0/112 baz')  자신:assert True(참)(수집:포함하다아이피('2001:db8::ff00:12:3456'))  자신:assert True(참)(수집:중복 서브넷('2001:db8::ff00:34:0/112')) 끝.  기능. 스위트:test IPv6 Collection Add From String Starting Colon()  현지의 수집 = IPv6 수집.신규()  수집:addFromString(':12:1234 foo')  자신:assert True(참)(수집:포함하다아이피('::12:1234')) 끝.  기능. 스위트:test IPv6 Collection Add From String Starting들여쓰기()  현지의 수집 = IPv6 수집.신규()  수집:addFromString(':앞서 말씀드렸듯이 2001:db8::ff00:12:3456은 차단되어야 합니다.~~~~')  자신:assert True(참)(수집:포함하다아이피('2001:db8::ff00:12:3456'))  자신:assert False(거짓)(수집:포함하다아이피('::')) 끝.  기능. 스위트:test IPv6 Collection Add From String Chaining()  자신:assert Not Error(ASST Not 오류)(기능. ()   IPv6 수집.신규()    :addFromString('foo 2001:db8:ff00:0:1234')    :addFromString('bar 2001:db8::ff00:0:5678')  끝.) 끝.  기능. 스위트:test IPv6 Collection Add From String Errors()  자신:assertTypeError(ASST타입에러)(   1, '시작 문자열 추가', '문자열, '실패',   기능. ()    IPv6 수집.신규():addFromString(거짓의)   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '시작 문자열 추가', '문자열, '실패',   기능. ()    IPv6 수집.신규():addFromString()   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '시작 문자열 추가', '문자열, '테이블',   기능. ()    IPv6 수집.신규():addFromString{}   끝.  )  자신:assertTypeError(ASST타입에러)(   1, '시작 문자열 추가', '문자열, '숫자',   기능. ()    IPv6 수집.신규():addFromString(7)   끝.  ) 끝.  돌아가다 스위트