#!/usr/bin/perl # '$Id: 80preprocessor.t,v 1.2 2005/06/20 07:36:48 ovid Exp $'; use warnings; use strict; use Test::More tests => 8; #use Test::More qw/no_plan/; use aliased 'AI::Prolog'; my $CLASS; BEGIN { chdir 't' if -d 't'; unshift @INC => '../lib'; $CLASS = 'AI::Prolog::Parser::PreProcessor'; use_ok($CLASS) or die; } can_ok $CLASS, 'process'; is $CLASS->process('foo.'), 'foo.', '... and it should return standard Prolog unchanged.'; my $prolog = < 0, N1 is N-1, factorial(N1,F1), F is N*F1. factorial(0,1). END_PROLOG my $expected = <process($prolog), $expected, '... and math expressions should be transformed correctly'; my $prog = Prolog->new($prolog); $prog->query('factorial(5,X).'); my $result = $prog->results; is $result->[2], 120, '... and we can use pre-processed programs'; $prolog = 'bar(X) :- 3 \= X.'; $expected = 'bar(X) :- ne(3, X).'; is $CLASS->process($prolog), $expected, '... and math expressions should be transformed correctly'; $prog = Prolog->new($prolog); $prog->query('bar(2).'); $result = $prog->results; is $result->[1], 2, '... and we can use pre-processed programs'; $prog->query('bar(3).'); $result = $prog->results; ok ! $result, '... and we can use pre-processed programs';