view src/parallel_execution/perlTests/Interface.t @ 693:aeab4866ee36

defined separate_code_and_data_gear_after_parse test
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 21 Aug 2020 17:07:01 +0900
parents 39f856a85565
children 89abde9fb7ce
line wrap: on
line source

#!/usr/bin/env perl
use strict;
use warnings;
use FindBin;

use Test::More  tests => 3; #subtests

use_ok "Gears::Interface"; #use test

subtest 'parse' => sub {
  subtest 'file_checking' => sub {
    plan tests => 2;

    eval { Gears::Interface->parse("nonexistent_file.c") };
    ok $@;
    like( $@, qr/invalid filepath/ );
  };

  subtest 'parsing_stack' => sub {
    plan tests => 1;

    my $stack_header = "$FindBin::Bin/../Stack.h";
    my $expand = {
          name => 'Stack',
          file_name => $stack_header,
          content => [
                         'union Data* stack;',
                         'union Data* data;',
                         'union Data* data1;',
                         'enum Code whenEmpty;',
                         'enum Code clear;',
                         'enum Code push;',
                         'enum Code pop;',
                         'enum Code pop2;',
                         'enum Code isEmpty;',
                         'enum Code get;',
                         'enum Code get2;',
                         'enum Code next;'
                       ]
     };

     my $res = Gears::Interface->parse($stack_header);

     is_deeply ($res, $expand, "parsing stack.h");
  };
};


subtest 'separate_code_and_data_gear_after_parse' => sub {
  subtest 'Queue' => sub {
    plan tests => 1;

    my $queue_header = "$FindBin::Bin/../Queue.h";

    my $expand = {
            'data' => [
                        'union Data* queue;',
                        'union Data* data;'
                      ],
            'content' => [
                           'enum Code whenEmpty;',
                           'enum Code clear;',
                           'union Data* queue;',
                           'enum Code put;',
                           'union Data* data;',
                           'enum Code take;',
                           'enum Code isEmpty;',
                           'enum Code next;'
                         ],
            'file_name' => $queue_header,
            'name' => 'Queue',
            'codes' => [
                         {
                           'args' => '...',
                           'name' => 'whenEmpty'
                         },
                         {
                           'args' => 'Impl* queue, __code next(...)',
                           'name' => 'clear'
                         },
                         {
                           'name' => 'put',
                           'args' => 'Impl* queue, union Data* data, __code next(...)'
                         },
                         {
                           'args' => 'Impl* queue, __code next(union Data* data, ...)',
                           'name' => 'take'
                         },
                         {
                           'name' => 'isEmpty',
                           'args' => 'Impl* queue, __code next(...), __code whenEmpty(...)'
                         },
                         {
                           'name' => 'next',
                           'args' => '...'
                         }
                       ],
            'hasOutputArgs' => {
                                 'take' => {
                                             'Data' => 'union',
                                             'data' => '*'
                                           }
                               }
          };

          my $res = Gears::Interface->separate_code_and_data_gear_after_parse($queue_header);

          is_deeply ($res, $expand, "parsing Queue.h");
      };

};