Inline-C

 view release on metacpan or  search on metacpan

t/09parser.t  view on Meta::CPAN

package BAR;

use Inline C => Config =>
    FORCE_BUILD => 1,
    _TESTING    => 1;

main::code (__PACKAGE__, "bar");

########## BAZ::baz ########
package BAZ;

use Inline C => Config =>
    FORCE_BUILD => 1,
    _TESTING    => 1,
    USING       => "Inline::C::Parser::RegExp";

main::code (__PACKAGE__, "baz");

########## BAZ::baz_ ########
# Use same Config options as for BAZ::bar()

main::code (__PACKAGE__, "baz_");

########################################

package main;

use strict;
use warnings;
use Test::More;

is (      foo_ (),       $conf{main}{foo_},      "      foo_     ");
is (      _foo_ (),      $conf{main}{_foo_},     "      _foo_    ");
is (      _foo (),       $conf{main}{_foo},      "      _foo     ");
is (      foo (),        $conf{main}{foo},       "      foo      ");
is (      bar (),        $conf{main}{bar},       "      bar      ");
is (      baz (),        $conf{main}{baz},       "      baz      ");
is (      foobar (),     $conf{main}{foobar},    "      foobar   ");
is (      foobarbaz (),  $conf{main}{foobarbaz}, "      foobarbaz");
is (main::foo_ (),       $conf{main}{foo_},      "main::foo_     ");
is (main::_foo_ (),      $conf{main}{_foo_},     "main::_foo_    ");
is (main::_foo (),       $conf{main}{_foo},      "main::_foo     ");
is (main::foo (),        $conf{main}{foo},       "main::foo      ");
is (main::bar (),        $conf{main}{bar},       "main::bar      ");
is (main::baz (),        $conf{main}{baz},       "main::baz      ");
is (main::foobar (),     $conf{main}{foobar},    "main::foobar   ");
is (main::foobarbaz (),  $conf{main}{foobarbaz}, "main::foobarbaz");
is ( FOO::foo (),        $conf{FOO}{foo},        " FOO::foo      ");
is ( BAR::bar (),        $conf{BAR}{bar},        " BAR::bar      ");
is ( BAZ::baz (),        $conf{BAZ}{baz},        " BAZ::baz      ");
is ( BAZ::baz_ (),       $conf{BAZ}{baz_},       " BAZ::baz_     ");

my $prod = -483840;
my $res =
    main::foo_ () * main::_foo () * main::_foo_ () * main::foo () *
    main::bar () * main::baz () * main::foobar () * main::foobarbaz () *
    FOO::foo () * BAR::bar () * BAZ::baz () * BAZ::baz_ ();

is ($res, $prod, "Returned product");

chomp (my @p = do { local @ARGV = "$TestInlineSetup::DIR/parser_id"; <> });

my $expected_log_lines = 13;
is (scalar @p, $expected_log_lines, "Match number of lines in log");

TODO: {
local $TODO = 'Until pegex is default';
# diag "@p";
is_deeply (\@p, [
    "Inline::C::get_parser called",
    "Inline::C::Parser::Pegex::get_parser called",
    "Inline::C::get_parser called",
    "Inline::C::Parser::Pegex::get_parser called",
    "Inline::C::get_parser called",
    "Inline::C::Parser::Pegex::get_parser called",
    "Inline::C::get_parser called",
    "Inline::C::Parser::Pegex::get_parser called",
    "Inline::C::get_parser called",
    "Inline::C::Parser::Pegex::get_parser called",
    "Inline::C::get_parser called",
    "Inline::C::Parser::Pegex::get_parser called",
    "Inline::C::get_parser called",
    "Inline::C::Parser::Pegex::get_parser called",
    "Inline::C::get_parser called",
    "Inline::C::Parser::Pegex::get_parser called",
    "Inline::C::Parser::RecDescent::get_parser called",
    "Inline::C::get_parser called",
    "Inline::C::Parser::Pegex::get_parser called",
    "Inline::C::Parser::RegExp::get_parser called",
    "Inline::C::Parser::RegExp::get_parser called",
    ], "parser log"
);
}

done_testing ();



( run in 1.398 second using v1.01-cache-2.11-cpan-97f6503c9c8 )