svn commit: samba r20631 - in branches/SAMBA_4_0/source/pidl: lib/Parse/Pidl tests

jelmer at samba.org jelmer at samba.org
Tue Jan 9 15:50:37 GMT 2007


Author: jelmer
Date: 2007-01-09 15:50:36 +0000 (Tue, 09 Jan 2007)
New Revision: 20631

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20631

Log:
Add some tests for the ndr parser.

Added:
   branches/SAMBA_4_0/source/pidl/tests/ndr.pl
Modified:
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Util.pm


Changeset:
Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm	2007-01-09 13:24:33 UTC (rev 20630)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm	2007-01-09 15:50:36 UTC (rev 20631)
@@ -35,6 +35,7 @@
 $VERSION = '0.01';
 @ISA = qw(Exporter);
 @EXPORT = qw(GetPrevLevel GetNextLevel ContainsDeferred ContainsString);
+ at EXPORT_OK = qw(GetElementLevelTable ParseElement);
 
 use strict;
 use Parse::Pidl qw(warning fatal);
@@ -837,7 +838,7 @@
 	return unless defined $e->{PROPERTIES};
 
 	foreach my $key (keys %{$e->{PROPERTIES}}) {
-		fatal($e, el_name($e) . ": unknown property '$key'")
+		warning($e, el_name($e) . ": unknown property '$key'")
 			unless defined($property_list{$key});
 
    		fatal($e, el_name($e) . ": property '$key' not allowed on '$t'")

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Util.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Util.pm	2007-01-09 13:24:33 UTC (rev 20630)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Util.pm	2007-01-09 15:50:36 UTC (rev 20631)
@@ -6,7 +6,7 @@
 
 require Exporter;
 @ISA = qw(Exporter);
- at EXPORT = qw(has_property property_matches ParseExpr is_constant make_str print_uuid);
+ at EXPORT = qw(has_property property_matches ParseExpr is_constant make_str print_uuid MyDumper);
 use vars qw($VERSION);
 $VERSION = '0.01';
 

Added: branches/SAMBA_4_0/source/pidl/tests/ndr.pl
===================================================================
--- branches/SAMBA_4_0/source/pidl/tests/ndr.pl	2007-01-09 13:24:33 UTC (rev 20630)
+++ branches/SAMBA_4_0/source/pidl/tests/ndr.pl	2007-01-09 15:50:36 UTC (rev 20631)
@@ -0,0 +1,154 @@
+#!/usr/bin/perl
+# (C) 2007 Jelmer Vernooij <jelmer at samba.org>
+# Published under the GNU General Public License
+use strict;
+use warnings;
+
+use Test::More tests => 9;
+use FindBin qw($RealBin);
+use lib "$RealBin";
+use Util;
+use Parse::Pidl::Util qw(MyDumper);
+use Parse::Pidl::NDR qw(GetElementLevelTable ParseElement);
+
+# Case 1
+
+my $e = {
+	'FILE' => 'foo.idl',
+	'NAME' => 'v',
+	'PROPERTIES' => {},
+	'POINTERS' => 0,
+	'TYPE' => 'uint8',
+	'LINE' => 42 };
+
+is_deeply(GetElementLevelTable($e), [
+	{
+		'IS_DEFERRED' => 0,
+		'LEVEL_INDEX' => 0,
+		'DATA_TYPE' => 'uint8',
+		'CONVERT_FROM' => undef,
+		'CONTAINS_DEFERRED' => 0,
+		'TYPE' => 'DATA',
+		'IS_SURROUNDING' => 0,
+		'CONVERT_TO' => undef
+	}
+]);
+
+my $ne = ParseElement($e);
+is($ne->{ORIGINAL}, $e);
+is($ne->{NAME}, "v");
+is($ne->{ALIGN}, 1);
+is($ne->{TYPE}, "uint8");
+is_deeply($ne->{LEVELS},  [
+	{
+		'IS_DEFERRED' => 0,
+		'LEVEL_INDEX' => 0,
+		'DATA_TYPE' => 'uint8',
+		'CONVERT_FROM' => undef,
+		'CONTAINS_DEFERRED' => 0,
+		'TYPE' => 'DATA',
+		'IS_SURROUNDING' => 0,
+		'CONVERT_TO' => undef
+	}
+]);
+
+# Case 2 : pointers
+#
+$e = {
+	'FILE' => 'foo.idl',
+	'NAME' => 'v',
+	'PROPERTIES' => {},
+	'POINTERS' => 1,
+	'TYPE' => 'uint8',
+	'LINE' => 42 };
+
+is_deeply(GetElementLevelTable($e), [
+	{
+		LEVEL_INDEX => 0,
+		IS_DEFERRED => 0,
+		TYPE => 'POINTER',
+		POINTER_TYPE => undef,
+		POINTER_INDEX => 0,
+		LEVEL => 'EMBEDDED'
+	},
+	{
+		'IS_DEFERRED' => 1,
+		'LEVEL_INDEX' => 1,
+		'DATA_TYPE' => 'uint8',
+		'CONVERT_FROM' => undef,
+		'CONTAINS_DEFERRED' => 0,
+		'TYPE' => 'DATA',
+		'IS_SURROUNDING' => 0,
+		'CONVERT_TO' => undef
+	}
+]);
+
+# Case 3 : double pointers
+#
+$e = {
+	'FILE' => 'foo.idl',
+	'NAME' => 'v',
+	'PROPERTIES' => {},
+	'POINTERS' => 2,
+	'TYPE' => 'uint8',
+	'LINE' => 42 };
+
+is_deeply(GetElementLevelTable($e), [
+	{
+		LEVEL_INDEX => 0,
+		IS_DEFERRED => 0,
+		TYPE => 'POINTER',
+		POINTER_TYPE => undef,
+		POINTER_INDEX => 0,
+		LEVEL => 'EMBEDDED'
+	},
+	{
+		LEVEL_INDEX => 1,
+		IS_DEFERRED => 1,
+		TYPE => 'POINTER',
+		POINTER_TYPE => undef,
+		POINTER_INDEX => 1,
+		LEVEL => 'EMBEDDED'
+	},
+	{
+		'IS_DEFERRED' => 1,
+		'LEVEL_INDEX' => 2,
+		'DATA_TYPE' => 'uint8',
+		'CONVERT_FROM' => undef,
+		'CONTAINS_DEFERRED' => 0,
+		'TYPE' => 'DATA',
+		'IS_SURROUNDING' => 0,
+		'CONVERT_TO' => undef
+	}
+]);
+
+# Case 2 : ref pointers
+#
+$e = {
+	'FILE' => 'foo.idl',
+	'NAME' => 'v',
+	'PROPERTIES' => {"ref" => 1},
+	'POINTERS' => 1,
+	'TYPE' => 'uint8',
+	'LINE' => 42 };
+
+is_deeply(GetElementLevelTable($e), [
+	{
+		LEVEL_INDEX => 0,
+		IS_DEFERRED => 0,
+		TYPE => 'POINTER',
+		POINTER_TYPE => "ref",
+		POINTER_INDEX => 0,
+		LEVEL => 'EMBEDDED'
+	},
+	{
+		'IS_DEFERRED' => 1,
+		'LEVEL_INDEX' => 1,
+		'DATA_TYPE' => 'uint8',
+		'CONVERT_FROM' => undef,
+		'CONTAINS_DEFERRED' => 0,
+		'TYPE' => 'DATA',
+		'IS_SURROUNDING' => 0,
+		'CONVERT_TO' => undef
+	}
+]);


Property changes on: branches/SAMBA_4_0/source/pidl/tests/ndr.pl
___________________________________________________________________
Name: svn:executable
   + *



More information about the samba-cvs mailing list