Re: pointer check in unit tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Miklos, Stephan, Mike,

I have kept all those asserts for now.

Changing ScBootstrapFixture::loadDoc would be a separate task anyway.

Kind regards
Regina

Mike Kaganski schrieb am 03-Nov-20 um 10:22:
On 03.11.2020 11:37, Miklos Vajna wrote:
Hi Regina,

On Mon, Nov 02, 2020 at 07:52:54PM +0100, Regina Henschel <rb.henschel@xxxxxxxxxxx> wrote:
ScDocShellRef xDocSh = loadDoc("tdf137020_FlipVertical.", FORMAT_ODS);
CPPUNIT_ASSERT_MESSAGE("Failed to load tdf137020_FlipVertical.ods",
xDocSh.is());
ScDocument& rDoc = xDocSh->GetDocument();
ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
CPPUNIT_ASSERT_MESSAGE("No SdDrawLayer", pDrawLayer);
SdrPage* pPage = pDrawLayer->GetPage(0);
CPPUNIT_ASSERT_MESSAGE("No draw page", pPage);
CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(1), pPage->GetObjCount() );
SdrObject* pObj =  pPage->GetObj(0);
CPPUNIT_ASSERT_MESSAGE("No object", pObj);

Can I drop the CPPUNIT_ASSERT in these cases? They have nothing to do with the test itself, but check only the pointers, which appear on the way to the
object, which I want to test.

The benefit of such explicit asserts is that they document your
assumptions and if they are not held, then a test failure log will show
this failure explicitly.

If you don't do that, we'll only see that the test crashed.

I believe that in most cases this benefit is larger than the cost of the
noise in the code.

(If you see a case where a pointer is returned and it can't be ever
nullptr, then we should fix the return type to a be reference. Caolan
did lots of fixes like that recently.)

Note also that all calls to ScBootstrapFixture::loadDoc currently either assert on its result, or dereference it unconditionally; so this function may be improved to include the assert inside, and guarantee the validity of returned result. One assert less in unit test code :-)


_______________________________________________
LibreOffice mailing list
LibreOffice@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/libreoffice




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux