diff --git a/binding/erlang/test/ip2region_xdb_test.erl b/binding/erlang/test/ip2region_xdb_test.erl index 1ce5a70..cf3084c 100644 --- a/binding/erlang/test/ip2region_xdb_test.erl +++ b/binding/erlang/test/ip2region_xdb_test.erl @@ -1,16 +1,43 @@ -module(ip2region_xdb_test). --include_lib("eunit/include/eunit.hrl"). -header_parse_test() -> - HeaderBin = <<3:16/little, 1:16/little, 123456:32/little, - 1000:32/little, 2000:32/little, 6:16/little, 4:16/little, - 0:((256-20)*8)>>, +-include_lib("eunit/include/eunit.hrl"). +-include("ip2region.hrl"). + +valid_v4_header_test() -> + HeaderBin = <<2:16/little, 1:16/little, 0:32/little, + 256:32/little, 1024:32/little, + ?IP_VERSION_4:16/little, 4:16/little>>, + {ok, Header} = ip2region_xdb:parse_header(HeaderBin), + ?assertEqual(2, ip2region_xdb:header_version(Header)), + ?assertEqual(1, ip2region_xdb:header_index_policy(Header)), + ?assertEqual(256, ip2region_xdb:header_start_index_ptr(Header)), + ?assertEqual(1024, ip2region_xdb:header_end_index_ptr(Header)), + ?assertEqual(?IP_VERSION_4, ip2region_xdb:header_ip_version(Header)), + ?assertEqual(4, ip2region_xdb:header_runtime_ptr_bytes(Header)). + +valid_v6_header_test() -> + HeaderBin = <<3:16/little, 1:16/little, 0:32/little, + 256:32/little, 1024:32/little, + ?IP_VERSION_6:16/little, 4:16/little>>, {ok, Header} = ip2region_xdb:parse_header(HeaderBin), ?assertEqual(3, ip2region_xdb:header_version(Header)), - ?assertEqual(6, ip2region_xdb:header_ip_version(Header)), - ?assertEqual(1000, ip2region_xdb:header_start_index_ptr(Header)), - ?assertEqual(2000, ip2region_xdb:header_end_index_ptr(Header)). + ?assertEqual(?IP_VERSION_6, ip2region_xdb:header_ip_version(Header)). -version_constants_test() -> - ?assertEqual(14, ip2region_xdb:segment_index_size(ipv4)), - ?assertEqual(38, ip2region_xdb:segment_index_size(ipv6)). +invalid_header_test() -> + ?assertEqual({error, invalid_header}, ip2region_xdb:parse_header(<<0:128>>)). + +table_helpers_test_() -> + [ + ?_assertEqual(?XDB_VECTOR_INDEX_V4, ip2region_xdb:vector_index_table(ipv4)), + ?_assertEqual(?XDB_VECTOR_INDEX_V6, ip2region_xdb:vector_index_table(ipv6)), + ?_assertEqual(?XDB_SEGMENT_INDEX_V4, ip2region_xdb:segment_index_table(ipv4)), + ?_assertEqual(?XDB_SEGMENT_INDEX_V6, ip2region_xdb:segment_index_table(ipv6)), + ?_assertEqual(?IP2REGION_CACHE_V4, ip2region_xdb:cache_table(ipv4)), + ?_assertEqual(?IP2REGION_CACHE_V6, ip2region_xdb:cache_table(ipv6)) + ]. + +segment_index_size_test_() -> + [ + ?_assertEqual(14, ip2region_xdb:segment_index_size(ipv4)), + ?_assertEqual(38, ip2region_xdb:segment_index_size(ipv6)) + ].