+++ /dev/null
-#! /usr/bin/perl
-
-$release_files = 'source/utf8.h source/utf8/core.h source/utf8/checked.h source/utf8/unchecked.h doc/utf8cpp.html doc/ReleaseNotes';
-
-# First get the latest version
-`svn update`;
-
-# Then construct the name of the zip file
-$argc = @ARGV;
-if ($argc > 0) {
- $zip_name = $ARGV[0];
-}
-else {
- $zip_name = "utf8";
-}
-
-# Zip the files to an archive
-`zip $zip_name $release_files`;
+++ /dev/null
-CC = g++
-CFLAGS = -O3
-
-iconvtest: iconvtest.cpp ../../source/utf8.h timer.h ../../source/utf8/core.h ../../source/utf8/checked.h ../../source/utf8/unchecked.h
- $(CC) $(CFLAGS) iconvtest.cpp -oiconvtest
+++ /dev/null
-#include <iconv.h>
-#include <string.h>
-#include "../../source/utf8.h"
-#include "timer.h"
-#include <fstream>
-#include <algorithm>
-#include <vector>
-using namespace std;
-
-using namespace utf8;
-
-int main(int argc, char** argv)
-{
- if (argc != 2) {
- cout << "\nUsage: iconvtest filename\n";
- return 0;
- }
- const char* test_file_path = argv[1];
- // Open the test file (UTF-8 encoded text)
- ifstream fs8(test_file_path, ios::binary);
- if (!fs8.is_open()) {
- cout << "Could not open " << test_file_path << endl;
- return 0;
- }
- // get length
- fs8.seekg(0, ios::end);
- int length = fs8.tellg();
- fs8.seekg(0, ios::beg);
-
- // allocate the buffer (no vector - we are benchmarking conversions, not STL
- char* buf = new char[length];
- char* end_buf = buf + length;
- // fill the data
- fs8.read(buf, length);
- fs8.close();
- // the UTF-16 result will not be larger than this (I hope :) )
- vector<unsigned char> temputf16;
- utf8::utf8to16(buf, end_buf, back_inserter(temputf16));
- int wlength = temputf16.size();
- unsigned short* utf16buf = new unsigned short[wlength];
-
- cout << "UTF8 to UTF-16\n";
- {
- memset (utf16buf, 0 , wlength * sizeof(unsigned short));
- // utf-8 cpp:
- cout << "utf8::utf8to16: ";
- timer t(cout);
- utf8::utf8to16(buf, buf + length, utf16buf);
- t.print_time();
- }
-
- {
- memset (utf16buf, 0 , wlength * sizeof(unsigned short));
- // utf-8 cpp:
- cout << "unchecked::utf8to16: ";
- timer t(cout);
- utf8::unchecked::utf8to16(buf, buf + length, utf16buf);
- t.print_time();
- }
-
- // the UTF-16 result will not be larger than this (I hope :) )
- unsigned short* utf16iconvbuf = new unsigned short[wlength];
- {
- memset (utf16iconvbuf, 0 , wlength * sizeof(unsigned short));
- // iconv
- cout << "iconv: ";
-
- iconv_t cd = iconv_open("UTF-16LE", "UTF-8");
- if (cd == iconv_t(-1)) {
- cout << "Error openning the iconv stream";
- return 0;
- }
- char* inbuf = buf;
- size_t in_bytes_left = length;
- char* outbuf = (char*)utf16iconvbuf;
- size_t out_bytes_left = wlength * sizeof (unsigned short);
- {
- timer t(cout);
- iconv(cd, &inbuf, &in_bytes_left, &outbuf, &out_bytes_left);
- t.print_time();
- }
- iconv_close(cd);
- }
-
- // just check the correctness while we are here:
- if (!equal(utf16buf, utf16buf + wlength, utf16iconvbuf))
- cout << "Different result!!!\n";
-
- // the other way around
- cout << "UTF16 to UTF-8\n";
- {
- //iconv
- memset(buf, 0, length);
- cout<< "iconv: ";
-
- iconv_t cd = iconv_open("UTF-8", "UTF-16LE");
- if (cd == iconv_t(-1)) {
- cout << "Error openning the iconv stream";
- return 0;
- }
- char* inbuf = (char*)utf16buf;
- size_t in_bytes_left = wlength * sizeof(unsigned short);
- char* outbuf =buf;
- size_t out_bytes_left = length;
- {
- timer t(cout);
- iconv(cd, &inbuf, &in_bytes_left, &outbuf, &out_bytes_left);
- t.print_time();
- }
- iconv_close(cd);
- }
-
- {
- memset (buf, 0 , length);
- // utf-8 cpp:
- cout << "unchecked::utf16to8: ";
- timer t(cout);
- utf8::unchecked::utf16to8(utf16buf, utf16buf + wlength, buf);
- t.print_time();
- }
-
- {
- memset (buf, 0 , length);
- cout << "utf16to8: ";
- timer t(cout);
- utf8::utf16to8(utf16buf, utf16buf + wlength, buf);
- t.print_time();
- }
-
- delete [] buf;
- delete [] utf16buf;
-}
+++ /dev/null
-#include <ctime>
-#include <iostream>
-struct timer {
- timer(std::ostream& report) : report(report)
- {start = std::clock();}
-
- void print_time()
- {
- using namespace std;
- clock_t now = clock();
- unsigned milliseconds = (now - start)*1000 / CLOCKS_PER_SEC;
- report << "Spent " << milliseconds << "ms here\n";
- }
-
- std::clock_t start;
- std::ostream& report;
-
-private:
- // just to surpress a VC++ 8.0 warning
- timer& operator = (const timer&);
- timer(const timer&);
-};
+++ /dev/null
-#include <windows.h>
-#include "../../source/utf8.h"
-#include "timer.h"
-#include <fstream>
-#include <algorithm>
-#include <vector>
-using namespace std;
-
-using namespace utf8;
-
-int main(int argc, char** argv)
-{
- if (argc != 2) {
- cout << "\nUsage: win32test filename\n";
- return 0;
- }
- const char* test_file_path = argv[1];
- // Open the test file (UTF-8 encoded text)
- ifstream fs8(test_file_path, ios::binary);
- if (!fs8.is_open()) {
- cout << "Could not open " << test_file_path << endl;
- return 0;
- }
- // get length
- fs8.seekg(0, ios::end);
- int length = fs8.tellg();
- fs8.seekg(0, ios::beg);
-
- // allocate the buffer (no vector - we are benchmarking conversions, not STL
- char* buf = new char[length];
- // fill the data
- fs8.read(buf, length);
- fs8.close();
- cout << "UTF8 > UTF16\n";
- // the UTF-16 result will not be larger than this (I hope :) )
- vector<wchar_t> temputf16;
- utf8::utf8to16(buf, buf + length, back_inserter(temputf16));
- vector<wchar_t>::size_type wlength = temputf16.size();
- wchar_t* utf16buf = new wchar_t[wlength];
-
- {
- memset (utf16buf, 0 , wlength * sizeof(wchar_t));
- // utf-8 cpp:
- cout << "utf8::utf8to16: ";
- timer t(cout);
- utf8::utf8to16(buf, buf + length, utf16buf);
- t.print_time();
- }
-
- {
- memset (utf16buf, 0 , wlength * sizeof(wchar_t));
- // utf-8 cpp:
- cout << "unchecked::utf8to16: ";
- timer t(cout);
- utf8::unchecked::utf8to16(buf, buf + length, utf16buf);
- t.print_time();
- }
- // the UTF-16 result will not be larger than this (I hope :) )
- wchar_t* utf16iconvbuf = new wchar_t[wlength];
- {
- memset (utf16iconvbuf, 0 , wlength * sizeof(wchar_t));
- // win32
- cout << "win32: ";
-
- {
- timer t(cout);
- MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, buf, length, utf16iconvbuf, int(wlength));
- t.print_time();
- }
-
- }
-
- // just check the correctness while we are here:
- if (!equal(utf16buf, utf16buf + wlength, utf16iconvbuf))
- cout << "Different result!!!";
-
- // the other way around
- cout << "UTF16 to UTF-8\n";
- {
- //win32
- memset(buf, 0, length);
- cout<< "win32: ";
-
- {
- timer t(cout);
- WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, utf16buf, int(wlength), buf, length, NULL, NULL);
- t.print_time();
- }
- }
-
- {
- memset (buf, 0 , length);
- // utf-8 cpp:
- cout << "unchecked::utf16to8: ";
- timer t(cout);
- utf8::unchecked::utf16to8(utf16buf, utf16buf + wlength, buf);
- t.print_time();
- }
-
- {
- memset (buf, 0 , length);
- cout << "utf16to8: ";
- timer t(cout);
- utf8::utf16to8(utf16buf, utf16buf + wlength, buf);
- t.print_time();
- }
-
- delete [] buf;
- delete [] utf16buf;
-}
+++ /dev/null
-#! /usr/bin/perl
-
-$report_name = './report.txt';
-
-# Create the report file
-die if !open(REPORT, ">$report_name");
-
-# First, build everything
-print REPORT "==================Make output==================\n";
-close($report_name);
-
-`make >> $report_name`;
-die if !open(REPORT, ">>$report_name");
-print REPORT "==================End of Make output==================\n";
-print REPORT "\n";
-# Now, run individual tests and create the report
-print REPORT "==================Smoke Test ==================\n";
-close($report_name);
-chdir 'smoke_test';
-`./smoketest >> ../$report_name`;
-chdir '..';
-die if !open(REPORT, ">>$report_name");
-print REPORT "==================End of smoke test==================\n";
-print REPORT "\n";
-print REPORT "==================Regression Test ==================\n";
-close($report_name);
-chdir 'regression_tests';
-`./regressiontest >> ../$report_name`;
-chdir '..';
-die if !open(REPORT, ">>$report_name");
-print REPORT "==================End of regression test==================\n";
-print REPORT "\n";
-print REPORT "==================Negative Test ==================\n";
-close($report_name);
-chdir 'negative';
-`./negative ../../test_data/negative/utf8_invalid.txt >> ../$report_name`;
-chdir '..';
-die if !open(REPORT, ">>$report_name");
-print REPORT "==================End of negative test==================\n";
-print REPORT "\n";
-print REPORT "==================utf8reader runs ==================\n";
-close($report_name);
-chdir 'utf8reader';
-`./utf8reader ../../test_data/utf8samples/quickbrown.txt >> ../$report_name`;
-`./utf8reader ../../test_data/utf8samples/Unicode_transcriptions.html >> ../$report_name`;
-`./utf8reader ../../test_data/utf8samples/UTF-8-demo.txt >> ../$report_name`;
-chdir '..';
-die if !open(REPORT, ">>$report_name");
-print REPORT "==================End of utf8reader runs==================\n";
-print REPORT "\n";