#!/usr/bin/env perl

use XyceRegression::Tools;

$Tools = XyceRegression::Tools->new();
#$Tools->setFork(1);
#$Tools->setDebug(1);

# The input arguments to this script are set up in 
# Xyce_Test/TestScripts/tsc_run_test_suite and are as follows:
# $1 = location of Xyce binary
# $2 = location of xyce_verify.pl script
# $3 = location of compare script 
# $4 = location of circuit file to test
# $5 = location of gold standard prn file

# If Xyce does not produce a prn file, then we return exit code 10.
# If Xyce succeeds, but the test fails, then we return exit code 2.
# If the shell script fails for some reason, then we return exit code 1.

# Since the shell script runs Xyce and the comparison program, it is
# responsible for capturing any error output from Xyce and the STDOUT & STDERR
# from the comparison program.  The outside script, run_xyce_regression,
# expects the STDERR output from Xyce to go into $CIRFILE.err, the STDOUT
# output from comparison to go into $CIRFILE.prn.out and the STDERR output from
# comparison to go into $CIRFILE.prn.err.  

$XYCE=$ARGV[0];
$XYCE_VERIFY=$ARGV[1];
$XYCE_COMPARE=$ARGV[2];
$CIRFILE=$ARGV[3];
$GOLDPRN=$ARGV[4];

$CIRFILE="Bad_PWL_Source.cir";
$OUTFILE="Bad_PWL_Source.cir.out";
$ERRFILE="Bad_PWL_Source.cir.err";

#rather than use wrapXyce, we'll manually run xyce so that
# wrapXyce doesn't autodetect the intended xyce error here
# In general this isn't a problem except that the _norad builds
# can get flaged as false failures because of this.
#$retval=$Tools->wrapXyce($XYCE,$CIRFILE);
#my $outputCapture = "$CIRFILE > $OUTFILE";
my $CMD = "$XYCE $CIRFILE > \"$OUTFILE\" 2> \"$ERRFILE\"";
$retval = system("$CMD");

#
# skip this test ast Xyce should have exited with an error
# if ($retval != 0) { print "Exit code = $retval\n"; exit $retval; }

#
# now use grep to look for the phrase "Could not parse time/value pairs for piecewise linear function"
#
$expr="Could not parse time/value pairs for piecewise linear function";
open(OUT,"$OUTFILE") or die "Error, cannot open output file $OUTFILE!\n";
$count=0;
while ($line = <OUT>) 
{
  if( $line =~ $expr )
  { 
    $count = $count + 1;
  }
}
close(OUT);

$retcode = 10;
if( $count > 0 )
{
  $retcode = 0
}


print "Exit code = $retcode\n"; 
exit $retcode;

