fill out operator list and test not-currently-supported operators
Matt S Trout [Sat, 5 Jun 2010 18:12:39 +0000 (19:12 +0100)]
lib/Data/Query/ExprBuilder.pm
t/expr.t

index b1df317..0a2f75e 100644 (file)
@@ -27,7 +27,12 @@ use overload (
         },
       });
     }
-  } qw(==))
+  } qw(+ - * / % ** << >> . < > == != lt le gt ge eq ne)),
+  (map {
+    my $op = $_;
+    $op => sub { die "Can't use operator $op on a ".ref($_[0]) }
+   } qw(<=> cmp x)
+  ),
 ); 
 
 sub new {
index cfbbb4e..cc33fe6 100644 (file)
--- a/t/expr.t
+++ b/t/expr.t
@@ -2,6 +2,7 @@ use strictures 1;
 use Test::More qw(no_plan);
 use Data::Query::ExprBuilder::Identifier;
 use Data::Query::Constants qw(DQ_IDENTIFIER DQ_OPERATOR DQ_VALUE);
+use Test::Exception;
 
 sub expr (&) {
   _mk_expr($_[0]);
@@ -81,3 +82,7 @@ expr_is { 3 == $_->foo }
     ],
   },
   'Operand reversed equality ok';
+
+throws_ok {
+  expr { $_->foo <=> 3 }
+} qr/\QCan't use operator <=>/, 'Exception on bad operator';