r21534: Add some more tests for wireshark.
[Samba/ekacnet.git] / source4 / pidl / tests / wireshark-ndr.pl
blob02eabb894263348bf773c275985fde37753f1f9d
1 #!/usr/bin/perl
2 # (C) 2007 Jelmer Vernooij <jelmer@samba.org>
3 # Published under the GNU General Public License
4 # test parsing wireshark conformance files
5 use strict;
6 use warnings;
8 use Test::More tests => 11;
9 use FindBin qw($RealBin);
10 use lib "$RealBin";
11 use Util;
12 use Parse::Pidl::Util qw(MyDumper);
13 use Parse::Pidl::Wireshark::NDR qw(field2name %res PrintIdl StripPrefixes %hf_used RegisterInterfaceHandoff $conformance register_hf_field CheckUsed);
15 is("Access Mask", field2name("access_mask"));
16 is("Accessmask", field2name("AccessMask"));
18 $res{code} = "";
19 PrintIdl("foo\nbar\n");
20 is("/* IDL: foo */
21 /* IDL: bar */
23 ", $res{code});
25 is("bla_foo", StripPrefixes("bla_foo", []));
26 is("foo", StripPrefixes("bla_foo", ["bla"]));
27 is("foo_bla", StripPrefixes("foo_bla", ["bla"]));
29 %hf_used = ();
30 $res{code} = "";
31 RegisterInterfaceHandoff({});
32 is($res{code}, "");
33 ok(not defined($hf_used{hf_bla_opnum}));
35 %hf_used = ();
36 $res{code} = "";
37 RegisterInterfaceHandoff({UUID => "uuid", NAME => "bla"});
38 is($res{code}, 'void proto_reg_handoff_dcerpc_bla(void)
40 dcerpc_init_uuid(proto_dcerpc_bla, ett_dcerpc_bla,
41 &uuid_dcerpc_bla, ver_dcerpc_bla,
42 bla_dissectors, hf_bla_opnum);
44 ');
45 is($hf_used{hf_bla_opnum}, 1);
47 $conformance = {};
48 register_hf_field("hf_bla_idx", "bla", "my.filter", "FT_UINT32", "BASE_HEX", "NULL", 0xF, undef);
49 is_deeply($conformance, {
50 header_fields => {
51 "hf_bla_idx" => {
52 INDEX => "hf_bla_idx",
53 NAME => "bla",
54 FILTER => "my.filter",
55 BASE_TYPE => "BASE_HEX",
56 FT_TYPE => "FT_UINT32",
57 VALSSTRING => "NULL",
58 BLURB => undef,
59 MASK => 0xF
62 hf_renames => {},
63 fielddescription => {}
64 });
66 %hf_used = ( hf_bla => 1 );
67 test_warnings("", sub {
68 CheckUsed({ header_fields => { INDEX => "hf_bla" }})});
70 %hf_used = ( );
71 test_warnings("nofile:0: hf field `hf_bla' not used\n", sub {
72 CheckUsed({ header_fields => { INDEX => "hf_bla" }})});