summaryrefslogtreecommitdiff
path: root/source4/pidl/tests
diff options
context:
space:
mode:
Diffstat (limited to 'source4/pidl/tests')
-rwxr-xr-xsource4/pidl/tests/ndr_simple.pl70
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);