r21568: More tests.
authorJelmer Vernooij <jelmer@samba.org>
Tue, 27 Feb 2007 21:37:31 +0000 (21:37 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:48:57 +0000 (14:48 -0500)
(This used to be commit c7bde9c1f537cbcf8e71177e6c3969699c046ecb)

source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm
source4/pidl/tests/wireshark-ndr.pl

index 0374b60132b52fae7150840d59eca9c9be08a7f8..3c38801faea9c545bede2f6158d4a97469aed914 100644 (file)
@@ -18,7 +18,7 @@ package Parse::Pidl::Wireshark::NDR;
 
 use Exporter;
 @ISA = qw(Exporter);
-@EXPORT_OK = qw(field2name @ett %res PrintIdl StripPrefixes %hf_used RegisterInterfaceHandoff $conformance register_hf_field CheckUsed ProcessImport ProcessInclude find_type DumpEttList DumpEttDeclaration DumpHfList DumpHfDeclaration DumpFunctionTable);
+@EXPORT_OK = qw(field2name @ett %res PrintIdl StripPrefixes %hf_used RegisterInterfaceHandoff $conformance register_hf_field CheckUsed ProcessImport ProcessInclude find_type DumpEttList DumpEttDeclaration DumpHfList DumpHfDeclaration DumpFunctionTable register_type register_ett);
 
 use strict;
 use Parse::Pidl qw(error warning);
index cda60c1f5a79d9c3c9cc99619466a9f1b5f0413d..40e22d958ca7241fc90d1ab837e694fddeb593ec 100755 (executable)
@@ -5,12 +5,12 @@
 use strict;
 use warnings;
 
-use Test::More tests => 25;
+use Test::More tests => 40;
 use FindBin qw($RealBin);
 use lib "$RealBin";
 use Util;
 use Parse::Pidl::Util qw(MyDumper);
-use Parse::Pidl::Wireshark::NDR qw(field2name %res PrintIdl StripPrefixes %hf_used RegisterInterfaceHandoff $conformance register_hf_field CheckUsed ProcessImport ProcessInclude find_type DumpEttList DumpEttDeclaration DumpHfList DumpHfDeclaration DumpFunctionTable);
+use Parse::Pidl::Wireshark::NDR qw(field2name %res PrintIdl StripPrefixes %hf_used RegisterInterfaceHandoff $conformance register_hf_field CheckUsed ProcessImport ProcessInclude find_type DumpEttList DumpEttDeclaration DumpHfList DumpHfDeclaration DumpFunctionTable register_type @ett register_ett);
 
 is("Access Mask", field2name("access_mask"));
 is("Accessmask", field2name("AccessMask"));
@@ -45,7 +45,8 @@ is($res{code}, 'void proto_reg_handoff_dcerpc_bla(void)
 is($hf_used{hf_bla_opnum}, 1);
 
 $conformance = {};
-register_hf_field("hf_bla_idx", "bla", "my.filter", "FT_UINT32", "BASE_HEX", "NULL", 0xF, undef);
+is("hf_bla_idx", 
+       register_hf_field("hf_bla_idx", "bla", "my.filter", "FT_UINT32", "BASE_HEX", "NULL", 0xF, undef));
 is_deeply($conformance, {
                header_fields => {
                        "hf_bla_idx" => {
@@ -63,6 +64,61 @@ is_deeply($conformance, {
                fielddescription => {}
 });
 
+$conformance = { fielddescription => { hf_bla_idx => { DESCRIPTION => "Some Description" }}};
+is("hf_bla_idx",
+       register_hf_field("hf_bla_idx", "bla", "my.filter", "FT_UINT32", "BASE_HEX", "NULL", 0xF, undef));
+is_deeply($conformance, {
+               fielddescription => { 
+                       hf_bla_idx => {
+                               DESCRIPTION => "Some Description",
+                               USED => 1
+                       }
+               },
+               header_fields => {
+                       "hf_bla_idx" => {
+                               INDEX => "hf_bla_idx",
+                               NAME => "bla",
+                               FILTER => "my.filter",
+                               BASE_TYPE => "BASE_HEX",
+                               FT_TYPE => "FT_UINT32",
+                               VALSSTRING => "NULL",
+                               BLURB => "Some Description",
+                               MASK => 0xF
+                       }
+               },
+               hf_renames => {},
+});
+
+$conformance = { fielddescription => { hf_bla_idx => { DESCRIPTION => "Some Description" }}};
+is("hf_bla_idx",
+       register_hf_field("hf_bla_idx", "bla", "my.filter", "FT_UINT32", "BASE_HEX", "NULL", 0xF, 
+               "Actual Description"));
+is_deeply($conformance, {
+               fielddescription => { 
+                       hf_bla_idx => { DESCRIPTION => "Some Description" }
+               },
+               header_fields => {
+                       "hf_bla_idx" => {
+                               INDEX => "hf_bla_idx",
+                               NAME => "bla",
+                               FILTER => "my.filter",
+                               BASE_TYPE => "BASE_HEX",
+                               FT_TYPE => "FT_UINT32",
+                               VALSSTRING => "NULL",
+                               BLURB => "Actual Description",
+                               MASK => 0xF
+                       }
+               },
+               hf_renames => {},
+});
+
+
+
+$conformance = { hf_renames => { "hf_bla_idx" => { NEWNAME => "hf_bloe_idx" } } };
+register_hf_field("hf_bla_idx", "bla", "my.filter", "FT_UINT32", "BASE_HEX", "NULL", 0xF, undef);
+is_deeply($conformance, {
+               hf_renames => { hf_bla_idx => { USED => 1, NEWNAME => "hf_bloe_idx" } } });
+
 %hf_used = ( hf_bla => 1 );
 test_warnings("", sub { 
                CheckUsed({ header_fields => { foo => { INDEX => "hf_bla" }}})});
@@ -71,6 +127,64 @@ test_warnings("", sub {
 test_warnings("hf field `hf_bla' not used\n", sub { 
                CheckUsed({ header_fields => { foo => { INDEX => "hf_bla" }}})});
 
+test_warnings("hf field `hf_id' not used\n", 
+       sub { CheckUsed({
+       hf_renames => {
+               hf_id => {
+                       OLDNAME => "hf_id",
+                       NEWNAME => "hf_newid",
+                       USED => 0
+               }
+       }
+}); } );
+
+test_warnings("dissector param never used\n",
+       sub { CheckUsed({
+       dissectorparams => {
+               dissect_foo => {
+                       PARAM => 42,
+                       USED => 0
+               }
+       }
+}); } );
+
+test_warnings("description never used\n",
+       sub { CheckUsed({
+       fielddescription => {
+               hf_bla => {
+                       USED => 0
+               }
+       }
+}); } );
+
+test_warnings("import never used\n",
+       sub { CheckUsed({
+       imports => {
+               bla => {
+                       USED => 0
+               }
+       }
+}); } );
+
+test_warnings("nofile:1: type never used\n",
+       sub { CheckUsed({
+       types => {
+               bla => {
+                       USED => 0,
+                       POS => { FILE => "nofile", LINE => 1 } 
+               }
+       }
+}); } );
+
+test_warnings("True/False description never used\n",
+       sub { CheckUsed({
+       tfs => {
+               hf_bloe => {
+                       USED => 0
+               }
+       }
+}); } );
+
 $res{hdr} = "";
 ProcessImport("security", "bla");
 is($res{hdr}, "#include \"packet-dcerpc-bla.h\"\n\n");
@@ -135,3 +249,26 @@ is(DumpFunctionTable({
        { 0, NULL, NULL, NULL }
 };
 ');
+
+$conformance = {};
+register_type("bla_type", "dissect_bla", "FT_UINT32", "BASE_HEX", 0xFF, "NULL", 4);
+is_deeply($conformance, {
+               types => {
+                       bla_type => {
+                               NAME => "bla_type",
+                               DISSECTOR_NAME => "dissect_bla",
+                               FT_TYPE => "FT_UINT32",
+                               BASE_TYPE => "BASE_HEX",
+                               MASK => 255,
+                               VALSSTRING => "NULL",
+                               ALIGNMENT => 4
+                       }
+               }
+       }
+);
+
+@ett = ();
+register_ett("name");
+is_deeply(\@ett, ["name"]);
+register_ett("leela");
+is_deeply(\@ett, ["name", "leela"]);