From ae4b93cd7d47b48b45afda5c5278e94bc4018007 Mon Sep 17 00:00:00 2001 From: "harishd%netscape.com" Date: Fri, 12 Jan 2001 19:23:21 +0000 Subject: [PATCH] Used for regression testing git-svn-id: svn://10.0.0.236/trunk@84873 18797224-902f-48f8-a5cc-f745e15eee43 --- .../htmlparser/tests/logparse/InputFiles.txt | 15 ++ .../htmlparser/tests/logparse/TestParser.cpp | 147 ++++++++++++++++++ .../htmlparser/tests/logparse/TestParser.pl | 35 +++++ .../htmlparser/tests/logparse/InputFiles.txt | 15 ++ .../htmlparser/tests/logparse/TestParser.cpp | 147 ++++++++++++++++++ .../htmlparser/tests/logparse/TestParser.pl | 35 +++++ 6 files changed, 394 insertions(+) create mode 100644 mozilla/htmlparser/tests/logparse/InputFiles.txt create mode 100644 mozilla/htmlparser/tests/logparse/TestParser.cpp create mode 100644 mozilla/htmlparser/tests/logparse/TestParser.pl create mode 100644 mozilla/parser/htmlparser/tests/logparse/InputFiles.txt create mode 100644 mozilla/parser/htmlparser/tests/logparse/TestParser.cpp create mode 100644 mozilla/parser/htmlparser/tests/logparse/TestParser.pl diff --git a/mozilla/htmlparser/tests/logparse/InputFiles.txt b/mozilla/htmlparser/tests/logparse/InputFiles.txt new file mode 100644 index 00000000000..464d5d4caeb --- /dev/null +++ b/mozilla/htmlparser/tests/logparse/InputFiles.txt @@ -0,0 +1,15 @@ +15204.html +35806.html +40809_CR.html +40809_LF.html +47535.html +54845.html +58455.html +badscript.html +bigscript.html +bigtxt.html +comments.html +nulltest.html +option.html +title.html +plaintxt.txt \ No newline at end of file diff --git a/mozilla/htmlparser/tests/logparse/TestParser.cpp b/mozilla/htmlparser/tests/logparse/TestParser.cpp new file mode 100644 index 00000000000..b931377c2f1 --- /dev/null +++ b/mozilla/htmlparser/tests/logparse/TestParser.cpp @@ -0,0 +1,147 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + */ +#include "nsIComponentManager.h" +#include "nsParserCIID.h" +#include "nsIParser.h" +#include "nsILoggingSink.h" +#include "CNavDTD.h" +#include "nsIInputStream.h" +#include "prprf.h" +#include + + +#ifdef XP_PC +#define PARSER_DLL "gkparser.dll" +#endif +#ifdef XP_MAC +#endif +#if defined(XP_UNIX) || defined(XP_BEOS) +#define PARSER_DLL "libhtmlpars"MOZ_DLL_SUFFIX +#endif + +// Class IID's +static NS_DEFINE_IID(kParserCID, NS_PARSER_IID); +static NS_DEFINE_IID(kLoggingSinkCID, NS_LOGGING_SINK_CID); + +// Interface IID's +static NS_DEFINE_IID(kIParserIID, NS_IPARSER_IID); +static NS_DEFINE_IID(kILoggingSinkIID, NS_ILOGGING_SINK_IID); + +//---------------------------------------------------------------------- + +static void SetupRegistry() +{ + nsComponentManager::RegisterComponentLib(kParserCID, NULL, NULL, PARSER_DLL, PR_FALSE, PR_FALSE); + nsComponentManager::RegisterComponentLib(kLoggingSinkCID, NULL, NULL, PARSER_DLL,PR_FALSE,PR_FALSE); +} + +//---------------------------------------------------------------------- + +nsresult ParseData(char* anInputStream,char* anOutputStream) { + nsresult result=NS_OK; + + if(anInputStream && anOutputStream) { + PRFileDesc* in=PR_Open(anInputStream, PR_RDONLY, 777); + + if (!in) { + return NS_ERROR_FAILURE; + } + + nsString stream; + char buffer[1024]; + PRBool done=PR_FALSE; + PRInt32 length=0; + + while(!done) { + length = PR_Read(in, buffer, sizeof(buffer)); + if (length>0) { + stream.AppendWithConversion(buffer,length); + } + else { + done=PR_TRUE; + } + } + + PR_Close(in); + + // Create a parser + nsCOMPtr parser; + result = nsComponentManager::CreateInstance(kParserCID,nsnull,kIParserIID,getter_AddRefs(parser)); + if (NS_SUCCEEDED(result)) { + // Create a sink + nsCOMPtr sink; + result = nsComponentManager::CreateInstance(kLoggingSinkCID,nsnull,kILoggingSinkIID,getter_AddRefs(sink)); + if (NS_SUCCEEDED(result)) { + // Create a dtd + nsCOMPtr dtd; + result=NS_NewNavHTMLDTD(getter_AddRefs(dtd)); + if(NS_SUCCEEDED(result)) { + // Parse the document, having the sink write the data to fp + PRFileDesc* out; + out = PR_Open(anOutputStream, PR_CREATE_FILE|PR_WRONLY, 777); + + //fstream out(anOutputStream,ios::out); + + if (!out) { + return NS_ERROR_FAILURE; + } + + sink->SetOutputStream(out); + parser->RegisterDTD(dtd); + parser->SetContentSink(sink); + result = parser->Parse(stream, 0, NS_ConvertASCIItoUCS2("text/html"), PR_FALSE, PR_TRUE); + + PR_Close(out); + } + else { + cout << "Unable to create a dtd (" << result << ")" < " << endl; + return -1; + } + + int result=0; + + //SetupRegistry(); + + ParseData(argv[1],argv[2]); + + return result; +} diff --git a/mozilla/htmlparser/tests/logparse/TestParser.pl b/mozilla/htmlparser/tests/logparse/TestParser.pl new file mode 100644 index 00000000000..5dffcc9dadf --- /dev/null +++ b/mozilla/htmlparser/tests/logparse/TestParser.pl @@ -0,0 +1,35 @@ +#! /usr/bin/perl + + use Cwd; + + $path=`cd`; + $path=~m/:/; + + $drive=$`; + + die "\nUsage: perl TestParser.pl [-b|-v|-c] \n" + if(@ARGV < 2 || @ARGV > 2); + + open(FILE_LIST,$ARGV[1]) || die "\nCannot open $ARGV[1]\n"; + + if($ARGV[0] eq "-b" || $ARGV[0] eq "-v") { + $ARGV[0]=~s/-//g; # create file extension for the output + + foreach $input() { + @output=split(/\./,$input); + system("$drive://mozilla//dist//WIN32_D.obj//bin//TestParser.exe $input $output[0].$ARGV[0]"); + } + } + elsif($ARGV[0] eq "-c") { + # use windows "fc" to compare files!!! + foreach $input() { + @output=split(/\./,$input); + system("fc $output[0].b $output[0].v"); + } + } + else { + print "\n\"$ARGV[0]\" unknown....\n"; + print "\nUsage: perl TestParser.pl [-b|-v|-c] \n\n"; + } + + close(FILE_LIST); diff --git a/mozilla/parser/htmlparser/tests/logparse/InputFiles.txt b/mozilla/parser/htmlparser/tests/logparse/InputFiles.txt new file mode 100644 index 00000000000..464d5d4caeb --- /dev/null +++ b/mozilla/parser/htmlparser/tests/logparse/InputFiles.txt @@ -0,0 +1,15 @@ +15204.html +35806.html +40809_CR.html +40809_LF.html +47535.html +54845.html +58455.html +badscript.html +bigscript.html +bigtxt.html +comments.html +nulltest.html +option.html +title.html +plaintxt.txt \ No newline at end of file diff --git a/mozilla/parser/htmlparser/tests/logparse/TestParser.cpp b/mozilla/parser/htmlparser/tests/logparse/TestParser.cpp new file mode 100644 index 00000000000..b931377c2f1 --- /dev/null +++ b/mozilla/parser/htmlparser/tests/logparse/TestParser.cpp @@ -0,0 +1,147 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + */ +#include "nsIComponentManager.h" +#include "nsParserCIID.h" +#include "nsIParser.h" +#include "nsILoggingSink.h" +#include "CNavDTD.h" +#include "nsIInputStream.h" +#include "prprf.h" +#include + + +#ifdef XP_PC +#define PARSER_DLL "gkparser.dll" +#endif +#ifdef XP_MAC +#endif +#if defined(XP_UNIX) || defined(XP_BEOS) +#define PARSER_DLL "libhtmlpars"MOZ_DLL_SUFFIX +#endif + +// Class IID's +static NS_DEFINE_IID(kParserCID, NS_PARSER_IID); +static NS_DEFINE_IID(kLoggingSinkCID, NS_LOGGING_SINK_CID); + +// Interface IID's +static NS_DEFINE_IID(kIParserIID, NS_IPARSER_IID); +static NS_DEFINE_IID(kILoggingSinkIID, NS_ILOGGING_SINK_IID); + +//---------------------------------------------------------------------- + +static void SetupRegistry() +{ + nsComponentManager::RegisterComponentLib(kParserCID, NULL, NULL, PARSER_DLL, PR_FALSE, PR_FALSE); + nsComponentManager::RegisterComponentLib(kLoggingSinkCID, NULL, NULL, PARSER_DLL,PR_FALSE,PR_FALSE); +} + +//---------------------------------------------------------------------- + +nsresult ParseData(char* anInputStream,char* anOutputStream) { + nsresult result=NS_OK; + + if(anInputStream && anOutputStream) { + PRFileDesc* in=PR_Open(anInputStream, PR_RDONLY, 777); + + if (!in) { + return NS_ERROR_FAILURE; + } + + nsString stream; + char buffer[1024]; + PRBool done=PR_FALSE; + PRInt32 length=0; + + while(!done) { + length = PR_Read(in, buffer, sizeof(buffer)); + if (length>0) { + stream.AppendWithConversion(buffer,length); + } + else { + done=PR_TRUE; + } + } + + PR_Close(in); + + // Create a parser + nsCOMPtr parser; + result = nsComponentManager::CreateInstance(kParserCID,nsnull,kIParserIID,getter_AddRefs(parser)); + if (NS_SUCCEEDED(result)) { + // Create a sink + nsCOMPtr sink; + result = nsComponentManager::CreateInstance(kLoggingSinkCID,nsnull,kILoggingSinkIID,getter_AddRefs(sink)); + if (NS_SUCCEEDED(result)) { + // Create a dtd + nsCOMPtr dtd; + result=NS_NewNavHTMLDTD(getter_AddRefs(dtd)); + if(NS_SUCCEEDED(result)) { + // Parse the document, having the sink write the data to fp + PRFileDesc* out; + out = PR_Open(anOutputStream, PR_CREATE_FILE|PR_WRONLY, 777); + + //fstream out(anOutputStream,ios::out); + + if (!out) { + return NS_ERROR_FAILURE; + } + + sink->SetOutputStream(out); + parser->RegisterDTD(dtd); + parser->SetContentSink(sink); + result = parser->Parse(stream, 0, NS_ConvertASCIItoUCS2("text/html"), PR_FALSE, PR_TRUE); + + PR_Close(out); + } + else { + cout << "Unable to create a dtd (" << result << ")" < " << endl; + return -1; + } + + int result=0; + + //SetupRegistry(); + + ParseData(argv[1],argv[2]); + + return result; +} diff --git a/mozilla/parser/htmlparser/tests/logparse/TestParser.pl b/mozilla/parser/htmlparser/tests/logparse/TestParser.pl new file mode 100644 index 00000000000..5dffcc9dadf --- /dev/null +++ b/mozilla/parser/htmlparser/tests/logparse/TestParser.pl @@ -0,0 +1,35 @@ +#! /usr/bin/perl + + use Cwd; + + $path=`cd`; + $path=~m/:/; + + $drive=$`; + + die "\nUsage: perl TestParser.pl [-b|-v|-c] \n" + if(@ARGV < 2 || @ARGV > 2); + + open(FILE_LIST,$ARGV[1]) || die "\nCannot open $ARGV[1]\n"; + + if($ARGV[0] eq "-b" || $ARGV[0] eq "-v") { + $ARGV[0]=~s/-//g; # create file extension for the output + + foreach $input() { + @output=split(/\./,$input); + system("$drive://mozilla//dist//WIN32_D.obj//bin//TestParser.exe $input $output[0].$ARGV[0]"); + } + } + elsif($ARGV[0] eq "-c") { + # use windows "fc" to compare files!!! + foreach $input() { + @output=split(/\./,$input); + system("fc $output[0].b $output[0].v"); + } + } + else { + print "\n\"$ARGV[0]\" unknown....\n"; + print "\nUsage: perl TestParser.pl [-b|-v|-c] \n\n"; + } + + close(FILE_LIST);