+void ConvAutoTestCase::TestTextStream(const char *src,
+ size_t srclength,
+ const wxString& line1,
+ const wxString& line2)
+{
+ wxMemoryInputStream instream(src, srclength);
+ wxTextInputStream text(instream);
+
+ CPPUNIT_ASSERT_EQUAL( line1, text.ReadLine() );
+ CPPUNIT_ASSERT_EQUAL( line2, text.ReadLine() );
+}
+
+// the first line of the teststring used in the following functions is an
+// 'a' followed by a Japanese hiragana A (u+3042).
+// The second line is a single Greek beta (u+03B2). There is no blank line
+// at the end.
+
+namespace
+{
+
+const wxString line1 = wxString::FromUTF8("a\xe3\x81\x82");
+const wxString line2 = wxString::FromUTF8("\xce\xb2");
+
+} // anonymous namespace
+
+void ConvAutoTestCase::StreamUTF8NoBOM()
+{
+ // currently this test doesn't work because without the BOM wxConvAuto
+ // decides that the string is in Latin-1 after finding the first (but not
+ // the two subsequent ones which are part of the same UTF-8 sequence!)
+ // 8-bit character
+ //
+ // FIXME: we need to fix this at wxTextInputStream level, see #11570
+#if 0
+ TestTextStream("\x61\xE3\x81\x82\x0A\xCE\xB2",
+ 7, line1, line2);
+#endif
+}
+
+void ConvAutoTestCase::StreamUTF8()
+{
+ TestTextStream("\xEF\xBB\xBF\x61\xE3\x81\x82\x0A\xCE\xB2",
+ 10, line1, line2);
+}
+
+void ConvAutoTestCase::StreamUTF16LE()
+{
+ TestTextStream("\xFF\xFE\x61\x00\x42\x30\x0A\x00\xB2\x03",
+ 10, line1, line2);
+}