summaryrefslogtreecommitdiff
path: root/libicui18n/tests/basic
diff options
context:
space:
mode:
Diffstat (limited to 'libicui18n/tests/basic')
-rw-r--r--libicui18n/tests/basic/buildfile8
-rw-r--r--libicui18n/tests/basic/driver.cpp85
-rw-r--r--libicui18n/tests/basic/testscript7
3 files changed, 100 insertions, 0 deletions
diff --git a/libicui18n/tests/basic/buildfile b/libicui18n/tests/basic/buildfile
new file mode 100644
index 0000000..d4e9ead
--- /dev/null
+++ b/libicui18n/tests/basic/buildfile
@@ -0,0 +1,8 @@
+# file : tests/basic/buildfile
+# copyright : Copyright (c) 2009-2019 Code Synthesis Tools CC
+# license : Unicode License; see accompanying LICENSE file
+
+import libs = libicui18n%lib{icui18n}
+import libs += libicuuc%lib{icuuc}
+
+exe{driver}: {hxx cxx}{*} $libs testscript
diff --git a/libicui18n/tests/basic/driver.cpp b/libicui18n/tests/basic/driver.cpp
new file mode 100644
index 0000000..f9bf704
--- /dev/null
+++ b/libicui18n/tests/basic/driver.cpp
@@ -0,0 +1,85 @@
+// file : tests/basic/driver.cpp
+// copyright : Copyright (c) 2009-2019 Code Synthesis Tools CC
+// license : Unicode License; see accompanying LICENSE file
+
+#include <string>
+#include <memory> // unique_ptr
+#include <cassert>
+#include <iostream>
+#include <stdexcept> // runtime_error
+
+#include <unicode/utypes.h>
+#include <unicode/uclean.h>
+
+#include <unicode/datefmt.h>
+#include <unicode/calendar.h>
+#include <unicode/timezone.h>
+#include <unicode/bytestream.h>
+
+// Usage: argv[0] <locale>
+//
+// Print the full 01/01/2020 00:00 time in Berlin's timezone using the
+// specified locale.
+//
+int
+main (int argc, char* argv[])
+{
+ using namespace std;
+ using namespace icu;
+
+ assert (argc == 2);
+ const char* locale (argv[1]);
+
+ UErrorCode e (U_ZERO_ERROR);
+
+ auto validate = [&e] (const char* what)
+ {
+ if (U_FAILURE (e))
+ throw runtime_error (string (what) + " failed: " + u_errorName (e));
+ };
+
+ int r (0);
+
+ try
+ {
+ unique_ptr<Calendar> cal (Calendar::createInstance (e));
+ validate ("Calendar::createInstance()");
+
+ cal->adoptTimeZone (TimeZone::createTimeZone ("Europe/Berlin"));
+ cal->clear ();
+ cal->set (2020, Calendar::JANUARY, 1);
+
+ UDate date (cal->getTime (e));
+ validate ("Calendar::getTime()");
+
+ unique_ptr<DateFormat> fmt (
+ DateFormat::createDateTimeInstance (DateFormat::kFull,
+ DateFormat::kFull,
+ locale));
+
+ fmt->setCalendar (*cal);
+
+ UnicodeString us;
+ fmt->format(date, us, e);
+ validate ("DateFormat::format()");
+
+ string s;
+ StringByteSink<string> bs (&s);
+ us.toUTF8 (bs);
+
+ cout << s << endl;
+ }
+ catch (const runtime_error& e)
+ {
+ cerr << e.what () << endl;
+
+ r = 1;
+ }
+
+ // Free any heap storage that has been potentially allocated and held by the
+ // ICU library.
+ //
+ u_cleanup ();
+
+ return r;
+}
diff --git a/libicui18n/tests/basic/testscript b/libicui18n/tests/basic/testscript
new file mode 100644
index 0000000..dc6fad8
--- /dev/null
+++ b/libicui18n/tests/basic/testscript
@@ -0,0 +1,7 @@
+# file : tests/basic/testscript
+# copyright : Copyright (c) 2016-2019 Code Synthesis Ltd
+# license : Unicode License; see accompanying LICENSE file
+
+$* "de" >>EOO
+Mittwoch, 1. Januar 2020 um 00:00:00 Mitteleuropäische Normalzeit
+EOO