diff -r 000000000000 -r ba25891c3a9e secureswitools/swisistools/test/tscrtool/tscrtool.pl --- /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() + { + # 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();