secureswitools/swisistools/test/tscrtool/tscrtool.pl
changeset 0 ba25891c3a9e
--- /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();