summaryrefslogtreecommitdiff
path: root/source4/build/pidl/tests/ndr_array.pl
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-05-28 23:38:52 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:17:10 -0500
commit1deb402445c07dae69c4637a1a4b191f10b0bee1 (patch)
treea00a004c5215201499cdc22eba01b66961e7f680 /source4/build/pidl/tests/ndr_array.pl
parent26ced62131962d92d45b8a383d3ecf4c9af56d02 (diff)
downloadsamba-1deb402445c07dae69c4637a1a4b191f10b0bee1.tar.gz
samba-1deb402445c07dae69c4637a1a4b191f10b0bee1.tar.bz2
samba-1deb402445c07dae69c4637a1a4b191f10b0bee1.zip
r7059: Use namespaces for pidl and the build system, so we can later on
call out to the build system to compile the various pidl tests (without having to rely on shared library support). Initial work on an ndr_array test. (This used to be commit 2b08c4b92b4f56180c123a502bdcc6c40188c07f)
Diffstat (limited to 'source4/build/pidl/tests/ndr_array.pl')
-rwxr-xr-xsource4/build/pidl/tests/ndr_array.pl47
1 files changed, 47 insertions, 0 deletions
diff --git a/source4/build/pidl/tests/ndr_array.pl b/source4/build/pidl/tests/ndr_array.pl
new file mode 100755
index 0000000000..bd78f3432a
--- /dev/null
+++ b/source4/build/pidl/tests/ndr_array.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+# Array testing
+# (C) 2005 Jelmer Vernooij <jelmer@samba.org>
+# Published under the GNU General Public License
+use strict;
+
+use FindBin qw($RealBin);
+use lib "$RealBin/../..";
+use test;
+
+my %settings = Test::GetSettings(@ARGV);
+$settings{'IDL-Arguments'} = ['--quiet', '--parse', '--parser=ndr_test.c', '--header=ndr_test.h'];
+$settings{'IncludeFiles'} = ['ndr_test.h'];
+$settings{'ExtraFiles'} = ['ndr_test.c'];
+
+Test::test_idl(
+ # Name
+ 'Fixed-Array',
+
+ # Settings
+ \%settings,
+
+ # IDL
+ '[public] void Test([in] uint8 x[10]);',
+
+ # C Test
+ '
+ uint8_t data[] = {1,2,3,4,5,6,7,8,9,10};
+ int i;
+ DATA_BLOB b;
+ struct ndr_pull *ndr;
+ struct Test r;
+
+ b.data = data;
+ b.length = 10;
+ ndr = ndr_pull_init_blob(&b, mem_ctx);
+
+ if (NT_STATUS_IS_ERR(ndr_pull_Test(ndr, NDR_IN, &r)))
+ return 1;
+
+ if (ndr->offset != 10)
+ return 2;
+
+ for (i = 0; i < 10; i++) {
+ if (r.in.x[i] != i+1) return 3;
+ }
+');