アプリケーションがnullptr固有のptrを返すかどうかをテストしたいと思います。私はいくつかのことを試しましたが、コンパイラーを通過するものは何もありません。誰かがすでにこの仕事をする方法を試し、見つけたことを願っています。私が試したいくつかのこと:
std::unique_ptr<SomeClass> some_class_ptr;
CPPUNIT_ASSERT_EQUAL(std::unique_ptr<SomeClass>(), some_class_ptr);
与える:libcppunit / include / cppunit / TestAssert.h | 49 |エラー:'ost <<x'|の'operator<<'に一致しません
TestAssert.hの内部:
template <class T>
void assertEquals( const T& expected,
const T& actual,
SourceLine sourceLine,
const std::string &message )
{
if ( !assertion_traits<T>::equal(expected,actual) ) // lazy toString conversion...
{
Asserter::failNotEqual( assertion_traits<T>::toString(expected),
assertion_traits<T>::toString(actual),
sourceLine,
message );
}
}
CPPUNIT_ASSERT_EQUAL(nullptr, some_class_ptr);
与える:/tests/SomeTestClass.cpp | 432 |エラー:'assertEquals(std :: nullptr_t、std :: unique_ptr&、CppUnit :: SourceLine、const char [1])'|を呼び出すための一致する関数がありません
CPPUNIT_ASSERT_EQUAL(nullptr, some_class_ptr.get());
与える:/tests/SomeTestClass.cpp | 432 |エラー:'assertEquals(std :: nullptr_t、std :: unique_ptr :: pointer、CppUnit :: SourceLine、const char [1])'|を呼び出すための一致する関数がありません
最初のものは正しいはずだと思いますが、コンパイルされていません。誰かが私にこれのための正しい構造を与えることができますか?