You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2011/10/27 03:28:56 UTC
[lucy-commits] svn commit: r1189570 - in
/incubator/lucy/branches/clownfish_lemon/clownfish/t: 105-object_type.t
107-arbitrary_type.t 200-function.t 201-method.t 202-overridden_method.t
203-final_method.t 300-variable.t 400-class.t 600-parser.t
Author: marvin
Date: Thu Oct 27 01:28:56 2011
New Revision: 1189570
URL: http://svn.apache.org/viewvc?rev=1189570&view=rev
Log:
Cut over remaining unit tests to flex/lemon parser.
Modified:
incubator/lucy/branches/clownfish_lemon/clownfish/t/105-object_type.t
incubator/lucy/branches/clownfish_lemon/clownfish/t/107-arbitrary_type.t
incubator/lucy/branches/clownfish_lemon/clownfish/t/200-function.t
incubator/lucy/branches/clownfish_lemon/clownfish/t/201-method.t
incubator/lucy/branches/clownfish_lemon/clownfish/t/202-overridden_method.t
incubator/lucy/branches/clownfish_lemon/clownfish/t/203-final_method.t
incubator/lucy/branches/clownfish_lemon/clownfish/t/300-variable.t
incubator/lucy/branches/clownfish_lemon/clownfish/t/400-class.t
incubator/lucy/branches/clownfish_lemon/clownfish/t/600-parser.t
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/t/105-object_type.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/t/105-object_type.t?rev=1189570&r1=1189569&r2=1189570&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/t/105-object_type.t (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/t/105-object_type.t Thu Oct 27 01:28:56 2011
@@ -16,7 +16,7 @@
use strict;
use warnings;
-use Test::More tests => 61;
+use Test::More tests => 55;
use Clownfish::Type;
use Clownfish::Parser;
@@ -27,9 +27,6 @@ my $parcel = $parser->parse('parcel Neat
or die "failed to process parcel_definition";
for my $bad_specifier (qw( foo fooBar Foo_Bar FOOBAR 1Foo 1FOO )) {
- ok( !$parser->object_type_specifier($bad_specifier),
- "reject bad object_type_specifier $bad_specifier"
- );
eval {
my $type = Clownfish::Type->new_object(
parcel => 'Neato',
@@ -41,9 +38,9 @@ for my $bad_specifier (qw( foo fooBar Fo
}
for my $specifier (qw( Foo FooJr FooIII Foo4th )) {
- is( $parser->object_type_specifier($specifier),
- $specifier, "object_type_specifier: $specifier" );
- is( $parser->object_type_specifier("neato_$specifier"),
+ is( $parser->parse("$specifier*")->get_specifier,
+ "neato_$specifier", "object_type_specifier: $specifier" );
+ is( $parser->parse("neato_$specifier*")->get_specifier,
"neato_$specifier", "object_type_specifier: neato_$specifier" );
my $type = $parser->parse("$specifier*");
ok( $type && $type->is_object, "$specifier*" );
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/t/107-arbitrary_type.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/t/107-arbitrary_type.t?rev=1189570&r1=1189569&r2=1189570&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/t/107-arbitrary_type.t (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/t/107-arbitrary_type.t Thu Oct 27 01:28:56 2011
@@ -49,7 +49,10 @@ my $parser = Clownfish::Parser->new;
for my $specifier (qw( foo_t Sort_compare_t )) {
my $type = $parser->parse($specifier);
ok( $type && $type->is_arbitrary, "arbitrary_type '$specifier'" );
- ok( !$parser->arbitrary_type_specifier( $specifier . "_y_p_e" ),
- "arbitrary_type_specifier guards against partial word matches"
- );
+ SKIP: {
+ skip( "Can't recover from bad specifier", 1 );
+ ok( !$parser->parse( $specifier . "_y_p_e eep;" ),
+ "arbitrary_type_specifier guards against partial word matches"
+ );
+ }
}
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/t/200-function.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/t/200-function.t?rev=1189570&r1=1189569&r2=1189570&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/t/200-function.t (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/t/200-function.t Thu Oct 27 01:28:56 2011
@@ -28,7 +28,7 @@ $parser->parse('parcel Neato;')
my %args = (
parcel => 'Neato',
- return_type => $parser->type('Obj*'),
+ return_type => $parser->parse('Obj*'),
class_name => 'Neato::Foo',
class_cnick => 'Foo',
param_list => $parser->parse('(int32_t some_num)'),
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/t/201-method.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/t/201-method.t?rev=1189570&r1=1189569&r2=1189570&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/t/201-method.t (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/t/201-method.t Thu Oct 27 01:28:56 2011
@@ -27,7 +27,7 @@ $parser->parse('parcel Neato;')
my %args = (
parcel => 'Neato',
- return_type => $parser->type('Obj*'),
+ return_type => $parser->parse('Obj*'),
class_name => 'Neato::Foo',
class_cnick => 'Foo',
param_list => $parser->parse('(Foo *self, int32_t count = 0)'),
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/t/202-overridden_method.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/t/202-overridden_method.t?rev=1189570&r1=1189569&r2=1189570&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/t/202-overridden_method.t (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/t/202-overridden_method.t Thu Oct 27 01:28:56 2011
@@ -26,7 +26,7 @@ $parser->parse('parcel Neato;')
or die "failed to process parcel_definition";
my %args = (
- return_type => $parser->type('Obj*'),
+ return_type => $parser->parse('Obj*'),
class_name => 'Neato::Foo',
class_cnick => 'Foo',
param_list => $parser->parse('(Foo *self)'),
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/t/203-final_method.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/t/203-final_method.t?rev=1189570&r1=1189569&r2=1189570&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/t/203-final_method.t (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/t/203-final_method.t Thu Oct 27 01:28:56 2011
@@ -25,7 +25,7 @@ $parser->parse('parcel Neato;')
or die "failed to process parcel_definition";
my %args = (
- return_type => $parser->type('Obj*'),
+ return_type => $parser->parse('Obj*'),
class_name => 'Neato::Foo',
class_cnick => 'Foo',
param_list => $parser->parse('(Foo* self)'),
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/t/300-variable.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/t/300-variable.t?rev=1189570&r1=1189569&r2=1189570&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/t/300-variable.t (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/t/300-variable.t Thu Oct 27 01:28:56 2011
@@ -26,7 +26,7 @@ my $parser = Clownfish::Parser->new;
$parser->parse('parcel Neato;')
or die "failed to process parcel_definition";
-sub new_type { $parser->type(shift) }
+sub new_type { $parser->parse(shift) }
eval {
my $death = Clownfish::Variable->new(
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/t/400-class.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/t/400-class.t?rev=1189570&r1=1189569&r2=1189570&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/t/400-class.t (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/t/400-class.t Thu Oct 27 01:28:56 2011
@@ -25,18 +25,18 @@ my $parser = Clownfish::Parser->new;
my $thing = Clownfish::Variable->new(
parcel => 'Neato',
class_name => 'Foo',
- type => $parser->type('Thing*'),
+ type => $parser->parse('Thing*'),
micro_sym => 'thing',
);
my $widget = Clownfish::Variable->new(
class_name => 'Widget',
- type => $parser->type('Widget*'),
+ type => $parser->parse('Widget*'),
micro_sym => 'widget',
);
my $tread_water = Clownfish::Function->new(
parcel => 'Neato',
class_name => 'Foo',
- return_type => $parser->type('void'),
+ return_type => $parser->parse('void'),
micro_sym => 'tread_water',
param_list => $parser->parse('()'),
);
@@ -138,11 +138,12 @@ like( $foo_jr->get_autocode, qr/load/i,
is_deeply( $foo->tree_to_ladder, [ $foo, $foo_jr, $final_foo ],
'tree_to_ladder' );
-ok( $parser->class_modifier($_), "class_modifier: $_" )
- for (qw( abstract inert ));
+ok( $parser->parse("$_ class Iam$_ { }")->$_, "class_modifier: $_" )
+ for (qw( final inert ));
-ok( $parser->class_inheritance($_), "class_inheritance: $_" )
- for ( 'inherits Foo', 'inherits Foo::FooJr::FooIII' );
+is( $parser->parse("class Fu::$_ inherits $_ { }")->get_parent_class_name,
+ $_, "class_inheritance: $_" )
+ for ( 'Fooble', 'Foo::FooJr::FooIII' );
my $class_content
= 'public class Foo::Foodie cnick Foodie inherits Foo { private int num; }';
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/t/600-parser.t
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/t/600-parser.t?rev=1189570&r1=1189569&r2=1189570&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/t/600-parser.t (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/t/600-parser.t Thu Oct 27 01:28:56 2011
@@ -16,7 +16,7 @@
use strict;
use warnings;
-use Test::More tests => 96;
+use Test::More tests => 88;
BEGIN { use_ok('Clownfish::Parser') }
@@ -31,59 +31,53 @@ isa_ok( $parser->parse("parcel Crustacea
# Set and leave parcel.
my $parcel = $parser->parse('parcel Crustacean cnick Crust;')
or die "failed to process parcel_definition";
-is( Clownfish::Parser->get_parcel, $parcel,
- "parcel_definition sets internal \$parcel var" );
+is( Clownfish::Parser->get_parcel,
+ $parcel, "parcel_definition sets internal \$parcel var" );
-is( $parser->strip_plain_comments("/*x*/"),
- " ", "comments replaced by spaces" );
-is( $parser->strip_plain_comments("/**x*/"),
- "/**x*/", "docu-comment untouched" );
-is( $parser->strip_plain_comments("/*\n*/"), " \n ", "newline preserved" );
-
-for (qw( foo _foo foo_yoo FOO Foo fOO f00 )) {
- is( $parser->identifier($_), $_, "identifier: $_" );
+for (qw( foo _foo foo_yoo FOO Foo fOO f00 foo_foo_foo )) {
+ my $var = $parser->parse("int32_t $_;");
+ is( $var->micro_sym, $_, "identifier/declarator: $_" );
}
-for (qw( void unsigned float uint32_t int64_t uint8_t bool_t )) {
- ok( !$parser->identifier($_), "reserved word not an identifier: $_" );
+for (qw( void float uint32_t int64_t uint8_t bool_t )) {
+ my $var = $parser->parse("int32_t $_;");
+ ok( !defined($var), "reserved word not parsed as identifier: $_" );
}
-is( $parser->chy_integer_specifier($_), $_, "Charmony integer specifier $_" )
- for qw( bool_t );
+isa_ok( $parser->parse("bool_t"),
+ "Clownfish::Type", "Charmony integer specifier bool_t" );
-is( $parser->object_type_specifier($_), $_, "object_type_specifier $_" )
+is( $parser->parse("$_*")->get_specifier,
+ "crust_$_", "object_type_specifier $_" )
for qw( ByteBuf Obj ANDMatcher );
-is( $parser->type_qualifier($_), $_, "type_qualifier $_" ) for qw( const );
+ok( $parser->parse("const char")->const, "type_qualifier const" );
-is( $parser->exposure_specifier($_), $_, "exposure_specifier $_" )
+ok( $parser->parse("$_ int32_t foo;")->$_, "exposure_specifier $_" )
for qw( public private parcel );
isa_ok( $parser->parse($_), "Clownfish::Type", "type $_" )
- for ( 'const char *', 'Obj*', 'i32_t', 'char[]', 'long[1]',
- 'i64_t[30]' );
-
-is( $parser->declarator($_), $_, "declarator: $_" )
- for ( 'foo', 'bar_bar_bar' );
+ for ( 'const char *', 'Obj*', 'i32_t', 'char[]', 'long[1]', 'i64_t[30]' );
-is( $parser->hex_constant($_), $_, "hex_constant: $_" )
- for (qw( 0x1 0x0a 0xFFFFFFFF ));
+is( $parser->parse("(int32_t foo = $_)")->get_initial_values->[0],
+ $_, "hex_constant: $_" )
+ for (qw( 0x1 0x0a 0xFFFFFFFF -0xFC ));
-is( $parser->integer_constant($_), $_, "integer_constant: $_" )
+is( $parser->parse("(int32_t foo = $_)")->get_initial_values->[0],
+ $_, "integer_constant: $_" )
for (qw( 1 -9999 0 10000 ));
-is( $parser->float_constant($_), $_, "float_constant: $_" )
+is( $parser->parse("(double foo = $_)")->get_initial_values->[0],
+ $_, "float_constant: $_" )
for (qw( 1.0 -9999.999 0.1 0.0 ));
-is( $parser->string_literal($_), $_, "string_literal: $_" )
+is( $parser->parse("(CharBuf *foo = $_)")->get_initial_values->[0],
+ $_, "string_literal: $_" )
for ( q|"blah"|, q|"blah blah"|, q|"\\"blah\\" \\"blah\\""| );
-is( $parser->scalar_constant($_), $_, "scalar_constant: $_" )
- for ( q|"blah"|, 1, 1.2, "0xFC" );
-
my @composites = ( 'int[]', "i32_t **", "Foo **", "Foo ***", "const void *" );
for my $composite (@composites) {
- my $parsed = $parser->type($composite);
+ my $parsed = $parser->parse($composite);
ok( $parsed && $parsed->is_composite, "composite_type: $composite" );
}
@@ -112,26 +106,41 @@ is_deeply(
my %sub_args = ( class => 'Stuff::Obj', cnick => 'Obj' );
-ok( $parser->declaration_statement( $_, 0, %sub_args, inert => 1 ),
- "declaration_statment: $_" )
+$parser->set_class_name('Stuff::Obj');
+$parser->set_class_cnick('Obj');
+ok( $parser->parse($_), "declaration statement: $_" )
for (
'public Foo* Spew_Foo(Obj *self, uint32_t *how_many);',
'private Hash *hash;',
);
-is( $parser->object_type_specifier($_), $_, "object_type_specifier: $_" )
+is( $parser->parse("$_*")->get_specifier,
+ "crust_$_", "object_type_specifier: $_" )
for (qw( Foo FooJr FooIII Foo4th ));
-ok( !$parser->object_type_specifier($_), "illegal object_type_specifier: $_" )
- for (qw( foo fooBar Foo_Bar FOOBAR 1Foo 1FOO ));
+SKIP: {
+ skip( "Can't recover from bad specifier under flex/lemon parser", 6 );
+ ok( !$parser->parse("$_*"), "illegal object_type_specifier: $_" )
+ for (qw( foo fooBar Foo_Bar FOOBAR 1Foo 1FOO ));
+}
-is( $parser->class_name($_), $_, "class_name: $_" )
+is( $parser->parse("class $_ { }")->get_class_name, $_, "class_name: $_" )
for (qw( Foo Foo::FooJr Foo::FooJr::FooIII Foo::FooJr::FooIII::Foo4th ));
-ok( !$parser->class_name($_), "illegal class_name: $_" )
- for (qw( foo fooBar Foo_Bar FOOBAR 1Foo 1FOO ));
+SKIP: {
+ skip( "Can't recover from bad class name under flex/lemon parser", 6 );
+ ok( !$parser->parse("class $_ { }"), "illegal class_name: $_" )
+ for (qw( foo fooBar Foo_Bar FOOBAR 1Foo 1FOO ));
+}
-is( $parser->cnick(qq|cnick $_|), $_, "cnick: $_" ) for (qw( Foo FF ));
+is( $parser->parse(qq|class Foodie$_ cnick $_ { }|)->get_cnick,
+ $_, "cnick: $_" )
+ for (qw( Foo FF ));
+
+SKIP: {
+ skip( "Can't recover from bad cnick under flex/lemon parser", 3 );
+ is( !$parser->parse(qq|class Foodie$_ cnick $_ { }|),
+ "Illegal cnick: $_" )
+ for (qw( foo fOO 1Foo ));
+}
-ok( !$parser->cnick(qq|cnick $_|), "Illegal cnick: $_" )
- for (qw( foo fOO 1Foo ));