diff options
Diffstat (limited to 'source4/pidl/tests/ndr_simple.pl')
-rwxr-xr-x | source4/pidl/tests/ndr_simple.pl | 70 |
1 files changed, 43 insertions, 27 deletions
diff --git a/source4/pidl/tests/ndr_simple.pl b/source4/pidl/tests/ndr_simple.pl index 96e213ede9..5bdd02b763 100755 --- a/source4/pidl/tests/ndr_simple.pl +++ b/source4/pidl/tests/ndr_simple.pl @@ -4,45 +4,61 @@ # Published under the GNU General Public License use strict; -use Test::Simple tests => 4; +use Test::Simple tests => 6; use FindBin qw($RealBin); use lib "$RealBin/../lib"; use Parse::Pidl::IDL; use Parse::Pidl::NDR; use Parse::Pidl::Samba4::NDR::Parser; +use Parse::Pidl::Samba4::Header; my $pidl = Parse::Pidl::IDL::parse_string( "interface test { void Test(); }; ", "<test>"); ok (defined($pidl)); my $pndr = Parse::Pidl::NDR::Parse($pidl); ok(defined($pndr)); -my ($header,$parser) = Parse::Pidl::Samba4::NDR::Parser($pndr); +my $header = Parse::Pidl::Samba4::Header::Parse($pidl); ok(defined($header)); +my ($ndrheader,$parser) = Parse::Pidl::Samba4::NDR::Parser::Parse($pndr, "foo"); ok(defined($parser)); +ok(defined($ndrheader)); +my $outfile = "test"; -#Parse::Pidl::Test::test_idl( -# # Name -# 'UInt8', -# -# # Settings -# \%settings, -# -# -# # C Test -# ' -# uint8_t data[] = { 0x02 }; -# uint8_t result; -# DATA_BLOB b; -# struct ndr_pull *ndr; -# -# b.data = data; -# b.length = 1; -# ndr = ndr_pull_init_blob(&b, mem_ctx); -# -# if (NT_STATUS_IS_ERR(ndr_pull_uint8(ndr, NDR_SCALARS, &result))) -# return 1; -# -# if (result != 0x02) -# return 2; -#'); +#my $cflags = $ENV{CFLAGS}; +my $cflags = "-Iinclude -I."; + +open CC, "|cc -x c -o $outfile $cflags -"; +#open CC, ">foo"; +print CC "#include \"includes.h\""; +print CC $header; +print CC $ndrheader; +print CC $parser; +print CC + ' +int main(int argc, const char **argv) +{ + uint8_t data[] = { 0x02 }; + uint8_t result; + DATA_BLOB b; + struct ndr_pull *ndr; + TALLOC_CTX *mem_ctx = talloc_init(NULL); + + b.data = data; + b.length = 1; + ndr = ndr_pull_init_blob(&b, mem_ctx); + + if (NT_STATUS_IS_ERR(ndr_pull_uint8(ndr, NDR_SCALARS, &result))) + return 1; + + if (result != 0x02) + return 2; + + talloc_free(mem_ctx); + + return 0; +} +'; +close CC; + +ok(-f $outfile); |