r9455: Support for reading the policy database
[ira/wip.git] / source / build / pidl / tests / ndr_string.pl
1 #!/usr/bin/perl
2 # String tests for pidl
3 # (C) 2005 Jelmer Vernooij <jelmer@samba.org>
4 # Published under the GNU General Public License
5 use strict;
6
7 use Parse::Pidl::Test;
8
9 my %settings = Parse::Pidl::Test::GetSettings(@ARGV);
10
11 $settings{'IDL-Arguments'} = ['--quiet', '--parse', '--parser=ndr_test.c', '--header=ndr_test.h'];
12 $settings{'IncludeFiles'} = ['ndr_test.h'];
13 $settings{'ExtraFiles'} = ['ndr_test.c'];
14
15 Parse::Pidl::Test::test_idl("string-pull-empty", \%settings,
16 ' [public] void TestString([in,flag(STR_ASCII|LIBNDR_FLAG_STR_SIZE4)] string data);',
17 '
18         uint8_t data[] = { 0x00, 0x00, 0x00, 0x00 };
19         DATA_BLOB b = { data, 4 };
20         struct ndr_pull *ndr = ndr_pull_init_blob(&b, NULL);
21         struct TestString r;
22         r.in.data = NULL;
23
24         if (NT_STATUS_IS_ERR(ndr_pull_TestString(ndr, NDR_IN, &r))) 
25                 return 1;
26         
27         if (r.in.data == NULL)
28                 return 2;
29
30         if (r.in.data[0] != 0)
31                 return 3;
32 ');
33
34 Parse::Pidl::Test::test_idl("string-ascii-pull", \%settings,
35 '
36         [public] void TestString([in,flag(STR_ASCII|LIBNDR_FLAG_STR_SIZE4)] string data);
37 ',
38 '
39         uint8_t data[] = { 0x03, 0x00, 0x00, 0x00, 
40                                            \'f\', \'o\', \'o\', 0 };
41         DATA_BLOB b = { data, 8 };
42         struct ndr_pull *ndr = ndr_pull_init_blob(&b, NULL);
43         struct TestString r;
44         r.in.data = NULL;
45
46         if (NT_STATUS_IS_ERR(ndr_pull_TestString(ndr, NDR_IN, &r))) 
47                 return 1;
48         
49         if (r.in.data == NULL)
50                 return 2;
51
52         if (strncmp(r.in.data, "foo", 3) != 0)
53                 return 3;
54
55         if (r.in.data[4] != 0)
56                 return 4;
57 ');