+void memStream::Ctor_InFromIn()
+{
+ wxMemoryInputStream *pMemInStream1 = DoCreateInStream();
+ wxMemoryInputStream *pMemInStream2 = new wxMemoryInputStream(*pMemInStream1);
+ CPPUNIT_ASSERT(pMemInStream2->IsOk());
+ CPPUNIT_ASSERT_EQUAL(pMemInStream1->GetLength(), pMemInStream2->GetLength());
+ wxFileOffset len = pMemInStream2->GetLength();
+ char *dat = new char[len];
+ pMemInStream2->Read(dat, len);
+ CPPUNIT_ASSERT_EQUAL(len, (wxFileOffset)pMemInStream2->LastRead());
+ wxStreamBuffer *buf = pMemInStream1->GetInputStreamBuffer();
+ void *pIn = buf->GetBufferStart();
+ CPPUNIT_ASSERT(memcmp(pIn, dat, len) == 0);
+ delete pMemInStream2;
+
+ wxFileOffset len2 = len / 2;
+ CPPUNIT_ASSERT(len2);
+ CPPUNIT_ASSERT(pMemInStream1->SeekI(-len2, wxFromCurrent) != wxInvalidOffset);
+ pIn = buf->GetBufferPos();
+ pMemInStream2 = new wxMemoryInputStream(*pMemInStream1, len2);
+ CPPUNIT_ASSERT(pMemInStream2->IsOk());
+ CPPUNIT_ASSERT_EQUAL((wxFileOffset)len2, pMemInStream2->GetLength());
+ pMemInStream2->Read(dat, len2);
+ CPPUNIT_ASSERT_EQUAL(len2, (wxFileOffset)pMemInStream2->LastRead());
+ CPPUNIT_ASSERT(memcmp(pIn, dat, len2) == 0);
+
+ delete[] dat;
+ delete pMemInStream2;
+ delete pMemInStream1;
+}
+