--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tscrtool/tscrtool.pl Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,313 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# testscrtool.pl
+# This perl file is used to test the scrtool used for generating database.
+# @internalComponent
+#
+
+use strict;
+use warnings;
+use File::Path;
+use File::Copy;
+use Cwd;
+
+my $LOGFD;
+
+#
+# Error Messages
+#
+my $KErrFileOpen = "Error opening file";
+
+#
+# Error Codes
+#
+# General errors
+#
+my %ErrorCode;
+$ErrorCode{"EUnintializedCode"} = -1;
+$ErrorCode{"ENone"} = 0;
+$ErrorCode{"EEnvNotSpecified"} = 1;
+
+# options exception
+$ErrorCode{"EInvalidArgument"} = 10;
+$ErrorCode{"EMandatoryOption"} = 11;
+$ErrorCode{"EMutuallyExclusive"} = 12;
+$ErrorCode{"EFileNotPresent"} = 13;
+$ErrorCode{"EFileExists"} = 14;
+
+# xml exceptions
+$ErrorCode{"EWarning"}=20;
+$ErrorCode{"EError"} = 21;
+$ErrorCode{"EFatalError"} = 22;
+$ErrorCode{"EParseError"} = 23;
+$ErrorCode{"EResetError"} = 24;
+
+# database exceptions
+$ErrorCode{"ELibraryLoadError"}=30;
+$ErrorCode{"ESqlArgumentError"} = 31;
+$ErrorCode{"ESqlNotFoundError"} = 32;
+$ErrorCode{"ESqlCorrupt"} = 33;
+
+
+my $KEndl = "\n";
+my $KSpace = " ";
+my $KHeader = "scrtool Test Suite";
+
+my $KOption = "option";
+my $KResult = "result";
+my $KExpectedResult = "Expected result";
+my $KDbExists = "checkdbexists";
+my $KOutcome = "Outcome";
+my $KPass = "PASS";
+my $KFail = "FAIL";
+my $KAppPath = "$ENV{'EPOCROOT'}epoc32\\tools\\";
+my $KAppName = $KAppPath."scrtool.exe";
+
+my $KPath = "$ENV{'EPOCROOT'}epoc32\\winscw\\c\\tswi\\tscrtool\\";
+my $KInputPath = $KPath."data\\";
+
+my $numTotal = 0;
+my $numPassed = 0;
+my $numFailed = 0;
+
+my @id;
+my @dbpath = 0;
+my @option;
+my @result;
+
+
+################## functions ##################
+
+
+sub main()
+ {
+ InitLogFile();
+ # Display header
+ LogString($KHeader);
+ LogString($KEndl);
+ TestScrTool();
+
+ my $run = "Run: $numTotal\n";
+ my $passed = "Passed: $numPassed\n";
+ my $summary = "$numFailed tests failed out of $numTotal\n";
+ LogString($run);
+ LogString($passed);
+ LogString($summary);
+ }
+
+sub InitLogFile()
+ {
+ my $KLogPath = "$ENV{'EPOCROOT'}epoc32\\winscw\\c\\";
+ if(! -e $KLogPath )
+ {
+ mkdir($KLogPath);
+ }
+ my $KLogFileName = $KLogPath."tscrtool.txt";
+ # Open Log file in append mode
+ unless(open LOGFD, ">>$KLogFileName")
+ {
+ print STDOUT $KErrFileOpen.$KSpace.$KLogFileName.$KEndl;
+ exit;
+ }
+ }
+
+sub TestScrTool()
+ {
+ my $KScriptFile = $KPath."tscrtool.ini";
+ unless(open FD, "<$KScriptFile" )
+ {
+ LogString($KErrFileOpen.$KSpace.$KScriptFile);
+ LogString($KEndl);
+ return;
+ }
+
+ GetInput();
+ close FD;
+
+ my $i = 0;
+ my $id;
+ my %Input;
+
+ while($id[$i])
+ {
+ $Input{$id[$i]}{$KOption} = $option[$i];
+ $Input{$id[$i]}{$KResult} = $result[$i];
+ $Input{$id[$i]}{$KDbExists} = $dbpath[$i];
+ $i = $i + 1;
+ }
+
+ my $completecommand;
+ my $testresult;
+ my $expected;
+
+ for $id ( sort keys % Input )
+ {
+ $numTotal++;
+ $completecommand = $KAppName.$Input{$id}{$KOption};
+ $testresult = system($completecommand);
+ $testresult = $testresult >> 8;
+ $testresult = $testresult;
+ LogString($KEndl."Test ID = $id $KEndl");
+ LogString("$KOption = $Input{$id}{$KOption} $KEndl");
+ LogString("Complete command: ".$completecommand.$KEndl);
+
+ $expected = $Input{$id}{$KResult};
+ my $expectedErrorCode = $ErrorCode{$expected};
+
+ LogString("$KExpectedResult = ".$expectedErrorCode." ($Input{$id}{$KResult})".$KEndl);
+
+ LogString("Actual Result:".$testresult.$KEndl);
+
+ LogString("$KOutcome = ");
+
+ if($testresult == $expectedErrorCode)
+ {
+ if($Input{$id}{$KDbExists} )
+ {
+ my $db = $Input{$id}{$KDbExists};
+ if( -e "$db")
+ {
+ LogString($KPass);
+ $numPassed++;
+ }
+ else
+ {
+ LogString($KFail);
+ $numFailed++;
+ }
+ }
+ else
+ {
+ LogString($KPass);
+ $numPassed++;
+ }
+ }
+ else
+ {
+ LogString($KFail);
+ $numFailed++;
+ }
+ LogString($KEndl);
+ }
+
+
+=comment until cut;
+ for $id ( keys %Input )
+ {
+ print "---------------------", $KEndl;
+ print "Test ID = $id", $KEndl;
+ print "$KOption = $Input{$id}{$KOption}", $KEndl;
+ print "$KResult = $Input{$id}{$KResult}", $KEndl;
+ }
+ print $KEndl, "END OF FILE", $KEndl;
+=cut
+
+}
+
+# Takes a string as it's argument and replaces every instance of %EPOCROOT% in the argument with the relevant environment variable's value.
+sub ReplaceEpocDir
+ {
+ my $string_args = $_[0];
+ my $path_prefix = $ENV{'EPOCROOT'};
+
+ while ()
+ {
+ last if !($string_args =~ s/%EPOCROOT%/$path_prefix/);
+ }
+ return $string_args;
+ }
+
+sub GetInput()
+ {
+ # File descriptor passed by the callee
+
+ my $i = 0;
+ my $startPos;
+ my $endPos;
+
+ while(<FD>)
+ {
+ # Replaces all instances of %EPOCROOT% in $_.
+ $_ = ReplaceEpocDir($_);
+ if ($_ !~/^[\t ]*#/)
+ {
+ if($_ =~/^\[.*\]/)
+ {
+ $startPos = rindex $_, "[";
+ $startPos = $startPos + 1;
+ $endPos = rindex $_, "]";
+ $id[$i] = substr $_, $startPos, $endPos - $startPos;
+ }
+
+ if($_ =~/^$KDbExists/)
+ {
+ $startPos = rindex $_, "=";
+ $startPos = $startPos + 1;
+ $dbpath[$i] = substr $_, $startPos;
+ $dbpath[$i]=~s/\s//g;
+ chomp($dbpath[$i]);
+ }
+
+ if($_ =~/^$KOption/)
+ {
+ $startPos = rindex $_, "=";
+ $startPos = $startPos + 1;
+ $option[$i] = substr $_, $startPos;
+ chomp($option[$i]);
+ }
+
+ if($_ =~/^$KResult/)
+ {
+ $startPos = rindex $_, "=";
+ if($startPos eq -1)
+ {
+ die "Invalid result type";
+ }
+ $startPos = $startPos + 1 ;
+ $result[$i] = substr $_, $startPos;
+ chomp($result[$i]);
+ $i++;
+ }
+
+ } # end of if
+ } # end of while
+ } # end of GetInput()
+
+
+sub CreateFile()
+ {
+
+ my $filename = $_[0];
+ unless(open FILEFD, ">$filename")
+ {
+ LogString($KErrFileOpen.$KSpace.$filename);
+ LogString($KEndl);
+ die;
+ }
+
+ close FILEFD;
+ }
+
+
+
+
+sub LogString()
+ {
+ my @strBuffer = @_;
+ print LOGFD @strBuffer;
+ print STDOUT @strBuffer;
+ }
+
+main();