Index: /trunk/PS-IPP-Metadata-Config/t/03_metadata.t
===================================================================
--- /trunk/PS-IPP-Metadata-Config/t/03_metadata.t	(revision 10185)
+++ /trunk/PS-IPP-Metadata-Config/t/03_metadata.t	(revision 10186)
@@ -3,5 +3,5 @@
 # Copyright (C) 2005  Joshua Hoblitt
 #
-# $Id: 03_metadata.t,v 1.4 2006-10-12 02:08:51 jhoblitt Exp $
+# $Id: 03_metadata.t,v 1.5 2006-11-25 01:01:08 jhoblitt Exp $
 
 use strict;
@@ -12,5 +12,5 @@
 #$::RD_TRACE = 1;
 
-use Test::More tests => 9;
+use Test::More tests => 13;
 use PS::IPP::Metadata::Config;
 
@@ -28,5 +28,40 @@
     my $config = $config_parser->parse( $example );
 
-    ok( defined( $config ), "SDRS example");
+    ok( defined( $config ), "SDRS example parsed");
+
+    my $tree = [
+        {
+            name    => 'CELL',
+            class   => 'metadata',
+            value   => [
+                {
+                    name    => 'EXTNAME',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'CCD00'
+                },
+                {
+                    name    => 'BIASSEC',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'BSEC-00'
+                },
+                {
+                    name    => 'CHIP',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'CHIP.00'
+                },
+                {
+                    name    => 'NCELL',
+                    class   => 'scalar',
+                    class   => 'S32',
+                    value   => 24,
+                },
+            ],
+        }
+    ];
+
+    is_deeply( $config, $tree, "SDRS example structure");
 }
 
@@ -42,5 +77,45 @@
     my $config = $config_parser->parse( $example );
 
-    ok( defined( $config ), "SDRS example + comments");
+    ok( defined( $config ), "SDRS example + comments parsed");
+
+    my $tree = [
+        {
+            name    => 'CELL',
+            class   => 'metadata',
+            value   => [
+                {
+                    name    => 'EXTNAME',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'CCD00',
+                    comment => 'bar',
+                },
+                {
+                    name    => 'BIASSEC',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'BSEC-00',
+                    comment => 'baz',
+                },
+                {
+                    name    => 'CHIP',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'CHIP.00',
+                    comment => 'zab',
+                },
+                {
+                    name    => 'NCELL',
+                    class   => 'scalar',
+                    class   => 'S32',
+                    value   => 24,
+                    comment => 'rab',
+                },
+            ],
+            comment => 'foo',
+        }
+    ];
+
+    is_deeply( $config, $tree, "SDRS example + comments structure");
 }
 
@@ -61,5 +136,63 @@
     my $config = $config_parser->parse( $example );
 
-    ok( defined( $config ), "nested metadata");
+    ok( defined( $config ), "nested metadata parsed");
+
+    my $tree = [
+        {
+            name    => 'CELL',
+            class   => 'metadata',
+            value   => [
+                {
+                    name    => 'FOO',
+                    class   => 'metdata',
+                    value   => [
+                        {
+                            name    => 'BAR',
+                            class   => 'scalar',
+                            class   => 'STR',
+                            value   => 'BAZ',
+                        },
+                        {
+                            name    => 'BAR',
+                            class   => 'scalar',
+                            class   => 'STR',
+                            value   => 'PONG',
+                        },
+                    ],
+                },
+                {
+                    name    => 'EXTNAME',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'CCD00',
+                    comment => 'bar',
+                },
+                {
+                    name    => 'BIASSEC',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'BSEC-00',
+                    comment => 'baz',
+                },
+                {
+                    name    => 'CHIP',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'CHIP.00',
+                    comment => 'zab',
+                },
+                {
+                    name    => 'NCELL',
+                    class   => 'scalar',
+                    class   => 'S32',
+                    value   => 24,
+                    comment => 'rab',
+                },
+            ],
+            comment => 'foo',
+        }
+    ];
+
+    is_deeply( $config, $tree, "nested metadata structure");
 }
 
@@ -94,4 +227,117 @@
 
     ok( defined( $config ), "deeply nested metadata");
+
+    my $tree = [
+        {
+            name    => 'FOO1',
+            class   => 'metadata',
+            value   => [
+                {
+                    name    => 'FOO2',
+                    class   => 'metdata',
+                    value   => [
+                        {
+                            name    => 'FOO3',
+                            class   => 'metdata',
+                            value   => [
+                                {
+                                    name    => 'FOO4',
+                                    class   => 'metdata',
+                                    value   => [
+                                        {
+                                            name    => 'FOO5',
+                                            class   => 'metdata',
+                                            value   => [
+                                                {
+                                                    name    => 'FOO6',
+                                                    class   => 'metdata',
+                                                    value   => [
+                                                        {
+                                                            name    => 'BAR',
+                                                            class   => 'scalar',
+                                                            class   => 'STR',
+                                                            value   => 'BAZ',
+                                                        },
+                                                        {
+                                                            name    => 'BAR',
+                                                            class   => 'scalar',
+                                                            class   => 'STR',
+                                                            value   => 'PONG',
+                                                        },
+                                                    ],
+                                                },
+                                                {
+                                                    name    => 'BAR',
+                                                    class   => 'scalar',
+                                                    class   => 'STR',
+                                                    value   => 'BAZ',
+                                                },
+                                                {
+                                                    name    => 'BAR',
+                                                    class   => 'scalar',
+                                                    class   => 'STR',
+                                                    value   => 'PONG',
+                                                },
+                                            ],
+                                        },
+                                        {
+                                            name    => 'BAR',
+                                            class   => 'scalar',
+                                            class   => 'STR',
+                                            value   => 'BAZ',
+                                        },
+                                        {
+                                            name    => 'BAR',
+                                            class   => 'scalar',
+                                            class   => 'STR',
+                                            value   => 'PONG',
+                                        },
+                                    ],
+                                },
+                                {
+                                    name    => 'BAR',
+                                    class   => 'scalar',
+                                    class   => 'STR',
+                                    value   => 'BAZ',
+                                },
+                                {
+                                    name    => 'BAR',
+                                    class   => 'scalar',
+                                    class   => 'STR',
+                                    value   => 'PONG',
+                                },
+                            ],
+                        },
+                        {
+                            name    => 'BAR',
+                            class   => 'scalar',
+                            class   => 'STR',
+                            value   => 'BAZ',
+                        },
+                        {
+                            name    => 'BAR',
+                            class   => 'scalar',
+                            class   => 'STR',
+                            value   => 'PONG',
+                        },
+                    ],
+                },
+                {
+                    name    => 'BAR',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'BAZ',
+                },
+                {
+                    name    => 'BAR',
+                    class   => 'scalar',
+                    class   => 'STR',
+                    value   => 'PONG',
+                },
+            ],
+        },
+    ];
+
+    is_deeply( $config, $tree, "nested metadata structure");
 }
 
