move most of new_with_options logic into separate publically accessible process_argv...
[gitmo/MooseX-Getopt.git] / t / 011_process_argv.t
diff --git a/t/011_process_argv.t b/t/011_process_argv.t
new file mode 100644 (file)
index 0000000..c56b1fb
--- /dev/null
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Exception;
+
+if ( !eval { require Test::Deep } )
+{
+    plan skip_all => 'Test requires Test::Deep';
+    exit;
+}
+else
+{
+    plan tests => 6;
+}
+
+{
+    package Testing::Foo;
+    use Moose;
+    
+    with 'MooseX::Getopt';
+    
+    has 'bar' => (
+        is       => 'ro',
+        isa      => 'Int',   
+        required => 1,
+    );
+    
+    has 'baz' => (
+        is       => 'ro',
+        isa      => 'Int',   
+        required => 1,        
+    );    
+}
+
+@ARGV = qw(--bar 10 file.dat);
+
+my $pa;
+lives_ok {
+    $pa = Testing::Foo->process_argv(baz => 100);
+} '... this should work';
+isa_ok($pa, 'MooseX::Getopt::ProcessedArgv');
+
+Test::Deep::cmp_deeply($pa->argv_copy, [
+    '--bar',
+    '10',
+    'file.dat'
+], 'argv_copy');
+Test::Deep::cmp_deeply($pa->cli_params, {
+    'bar' => 10
+}, 'cli_params');
+Test::Deep::cmp_deeply($pa->constructor_params, {
+    'baz' => 100
+}, 'constructor_params');
+Test::Deep::cmp_deeply($pa->extra_argv, [
+    'file.dat'
+], 'extra_argv');