class Test : public CppUnit::TestFixture
{ private: void testOString()
{ struct S
{ char a[4];
};
S s{ "x\0y" };
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), OString(s.a).getLength()); // Ideally, the below would work the same as the above. However, the const reference makes // the ConstCharArrayDetector instead of the NonConstCharArrayDetector kick in, so that the // call to OString(r.a) would fire the ConstCharArrayDetector<T>::isValid assert (and in // NDEBUG builds the CPPUNIT_ASSERT_EQUAL would fail with 3 != 1): if ((false))
{
S const& r = s;
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), OString(r.a).getLength());
}
}
void testOUStringChar()
{ struct S
{ char a[4];
};
S s{ "x\0y" }; // This would fail to compile, as there is no OUString ctor taking a // NonConstCharArrayDetector char array: #if0
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), OUString(s.a).getLength()); #endif // Ideally, the below would fail to compile the same as the above. However, the const // reference makes the ConstCharArrayDetector instead of the NonConstCharArrayDetector kick // in, so that the call to OUString(r.a) would fire the ConstCharArrayDetector<T>::isValid // assert (and in NDEBUG builds the CPPUNIT_ASSERT_EQUAL would fail with 3 != 1): if ((false))
{
S const& r = s;
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), OUString(r.a).getLength());
}
}
void testOUStringChar16t()
{ struct S
{
char16_t a[4];
};
S s{ u"x\0y" };
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), OUString(s.a).getLength()); // Ideally, the below would work the same as the above. However, the const reference makes // the ConstCharArrayDetector instead of the NonConstCharArrayDetector kick in, so that the // call to OUString(r.a) would pick the deleted ConstCharArrayDetector overload: // S const& r = s; // CPPUNIT_ASSERT_EQUAL(sal_Int32(1), OUString(r.a).getLength());
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.