From 411835cd65d407f40636d3a47f382db20ff53317 Mon Sep 17 00:00:00 2001 From: "ftang%netscape.com" Date: Fri, 25 Jun 1999 01:33:14 +0000 Subject: [PATCH] add test application DetectCharset git-svn-id: svn://10.0.0.236/trunk@36811 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/intl/chardet/tests/DetectCharset.cpp | 147 +++++++++++++++++++ mozilla/intl/chardet/tests/makefile.win | 61 ++++++++ 2 files changed, 208 insertions(+) create mode 100644 mozilla/intl/chardet/tests/DetectCharset.cpp create mode 100644 mozilla/intl/chardet/tests/makefile.win diff --git a/mozilla/intl/chardet/tests/DetectCharset.cpp b/mozilla/intl/chardet/tests/DetectCharset.cpp new file mode 100644 index 00000000000..689725f95f9 --- /dev/null +++ b/mozilla/intl/chardet/tests/DetectCharset.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.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ +#include +#include "nsISupports.h" +#include "nsIComponentManager.h" +#include "nsICharsetDetector.h" +#include "nsICharsetDetectionObserver.h" +#include +#include +#include + + +#define MAXBSIZE (1L << 13) + +void usage() { + printf("Usage: DetectFile detector blocksize\n" + " detector: " + "japsm," + "1stblkdbg," + "2ndblkdbg," + "lastblkdbg" + "\n blocksize: 1 ~ %ld\n" + " Data are passed in from STDIN\n" + , MAXBSIZE); +} + +class nsReporter : public nsICharsetDetectionObserver +{ + NS_DECL_ISUPPORTS + public: + nsReporter() { NS_INIT_REFCNT(); }; + virtual ~nsReporter() { }; + + NS_IMETHOD Notify(const char* aCharset, nsDetectionConfident aConf) + { + printf("RESULT CHARSET : %s\n", aCharset); + printf("RESULT Confident : %d\n", aConf); + return NS_OK; + }; +}; + + +NS_IMPL_ISUPPORTS(nsReporter, nsICharsetDetectionObserver::GetIID()) + +nsresult GetDetector(const char* key, nsICharsetDetector** det) +{ + char buf[128]; + strcpy(buf, NS_CHARSET_DETECTOR_PROGID_BASE); + strcat(buf, key); + return nsComponentManager::CreateInstance( + buf, + nsnull, + nsICharsetDetector::GetIID(), + (void**)det); +} + + +nsresult GetObserver(nsICharsetDetectionObserver** aRes) +{ + *aRes = nsnull; + nsReporter* rep = new nsReporter(); + if(rep) { + return rep->QueryInterface(nsICharsetDetectionObserver::GetIID() , + (void**)aRes); + } + return NS_ERROR_OUT_OF_MEMORY; +} + +int main(int argc, char** argv) { + char buf[MAXBSIZE]; + PRUint32 bs; + if( 3 != argc ) + { + usage(); + printf("Need 2 arguments\n"); + return(-1); + } + bs = atoi(argv[2]); + if((bs <1)||(bs>MAXBSIZE)) + { + usage(); + printf("blocksize out of range - %s\n", argv[2]); + return(-1); + } + nsresult rev = NS_OK; + nsICharsetDetector *det = nsnull; + rev = GetDetector(argv[1], &det); + if(NS_FAILED(rev) || (nsnull == det) ){ + usage(); + printf("Invalid Detector - %s\n", argv[1]); + printf("XPCOM ERROR CODE = %x\n", rev); + return(-1); + } + nsICharsetDetectionObserver *obs = nsnull; + rev = GetObserver(&obs); + if(NS_SUCCEEDED(rev)) { + rev = det->Init(obs); + NS_IF_RELEASE(obs); + if(NS_FAILED(rev)) + { + printf("XPCOM ERROR CODE = %x\n", rev); + return(-1); + } + } else { + printf("XPCOM ERROR CODE = %x\n", rev); + return(-1); + } + + size_t sz; + PRBool done = PR_FALSE; + do + { + sz = read(0, buf, bs); + if(sz > 0) { + rev = det->DoIt( buf, sz, &done); + if(NS_FAILED(rev)) + { + printf("XPCOM ERROR CODE = %x\n", rev); + return(-1); + } + } + } while((sz > 0) && (!done)); + rev = det->Done(); + if(NS_FAILED(rev)) + { + printf("XPCOM ERROR CODE = %x\n", rev); + return(-1); + } + + NS_IF_RELEASE(det); + return (0); +} diff --git a/mozilla/intl/chardet/tests/makefile.win b/mozilla/intl/chardet/tests/makefile.win new file mode 100644 index 00000000000..e8e4c5c9f7a --- /dev/null +++ b/mozilla/intl/chardet/tests/makefile.win @@ -0,0 +1,61 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. +DEPTH = ..\..\.. + +IGNORE_MANIFEST=1 + + +MAKE_OBJ_TYPE = EXE +PROG1 = .\$(OBJDIR)\DetectCharset.exe +PROGRAMS = $(PROG1) + +LCFLAGS=-DUSE_NSREG + +REQUIRES=libreg + +LINCS=-I$(PUBLIC)\xpcom -I$(PUBLIC)\unicharutil -I$(PUBLIC)\raptor + +LLIBS= \ + $(DIST)\lib\xpcom.lib \ + $(LIBNSPR) \ + $(DIST)\lib\plc3.lib + +include <$(DEPTH)\config\rules.mak> + +install:: $(PROGRAMS) + -for %p in ($(PROGRAMS)) do $(MAKE_INSTALL) %p $(DIST)\bin + +clobber:: + -for %p in ($(PROGRAMS)) do $(RM) %p $(DIST)\bin\%p + +# Move this into config/obj.inc when it's allowed +.cpp{.\$(OBJDIR)\}.exe: + $(CC) @<<$(CFGFILE) + $(CFLAGS) + $(LCFLAGS) + $(LINCS) + $(LINCS_1) + $(INCS) + $(LLIBS) + $(OS_LIBS) + -Fd$(PDBFILE) + -Fe.\$(OBJDIR)\ + -Fo.\$(OBJDIR)\ + $(CURDIR)$(*B).cpp +<