test generated line numbers
[p5sagit/Function-Parameters.git] / t / lineno.t
diff --git a/t/lineno.t b/t/lineno.t
new file mode 100644 (file)
index 0000000..40ac0be
--- /dev/null
@@ -0,0 +1,63 @@
+use warnings;
+use strict;
+
+use Test::More tests => 8;
+
+use Function::Parameters;
+
+fun actual_location_of_line_with($marker) {
+       seek DATA, 0, 0 or die "seek DATA: $!";
+       my $loc = 0;
+       while (my $line = readline DATA) {
+               $loc++;
+               index($line, $marker) >= 0
+                       and return $loc;
+       }
+       undef
+}
+
+fun test_loc($marker) {
+       my $expected = actual_location_of_line_with $marker;
+       defined $expected or die "$marker: something done fucked up";
+       my $got = (caller)[2];
+       is $got, $expected, "location of '$marker'";
+}
+
+fun () {
+       test_loc 'LX simple';
+}->();
+
+test_loc 'LX -- 1';
+
+fun 
+ (
+   )
+     {
+       test_loc 'LX creative formatting'; }
+->
+(
+ );
+
+test_loc 'LX -- 2';
+
+fun () {
+       fun () {
+               test_loc 'LX nested';
+       }->()
+}->();
+
+test_loc 'LX -- 3';
+
+TODO: {
+       local $TODO = 'expressions break line numbers???';
+
+       0
+       , fun {
+                       test_loc 'LX assign';
+               }->()
+       ;
+
+       test_loc 'LX -- 4';
+}
+
+__DATA__