jncornett / googletest

Automatically exported from code.google.com/p/googletest
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

{ASSERT|EXPECT}_[NOT_]NULL(expr) #47

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
I tried to do:

  class Foo { };
  class Bar
  {
  private:
    Foo* m_foo;
  public:
    Bar() : m_foo(0) { }
    Foo* foo(void) { return m_foo; }
  }
  Bar baz;

  EXPECT_EQ(0, baz.foo());

This didn't work until I did this:

  EXPECT_EQ((void*)0, baz.foo());

Because we deal with enough pointers in our code, I've implemented 
{ASSERT|EXPECT}_NULL and {ASSERT|EXPECT}_NOT_NULL. The attached diff 
implements this entirely in <gtest/gtest.h>.

Original issue reported on code.google.com by halosta...@gmail.com on 7 Oct 2008 at 6:44

Attachments:

GoogleCodeExporter commented 9 years ago
EXPECT_EQ(NULL, baz.foo()) is supposed to work.  Which platform/compiler are 
you using?

Thanks again for your contribution.  The next time could you discuss the plan on
googletestframework@googlegroups.com first?  The reason is to make sure you 
don't end
up wasting your time.

In this particular case, we had a discussion before and decided not to implement
ASSERT_NULL and ASSERT_NOT_NULL, as there are already options that don't involve
introducing new macros:

  ASSERT_EQ(NULL, foo);
  ASSERT_TRUE(foo != NULL);
  ASSERT_THAT(foo, NotNull());
etc.

The last one depends on our mocking framework, which will be open-sourced soon. 
 Thanks.

Original comment by shiq...@gmail.com on 8 Oct 2008 at 9:32

GoogleCodeExporter commented 9 years ago
In the end, it wasn't a waste of my time -- it's something that we're going to 
end up
using. We'll end up pulling it into an extra header that we use, instead of in
gtest/gtest.h, but ASSERT_NULL and ASSERT_NOT_NULL seemed better for us. Plus, I
wasn't trying to do NULL, but 0 (e.g., ASSERT_NE(0, baz.foo())) since the C++ 
spec
indicates that NULL as (void*)0 (the C definition) isn't correct.

I encountered this problem with VS2005.

Original comment by halosta...@gmail.com on 8 Oct 2008 at 9:57