Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
GoogleCodeExporter opened this issue Jul 24, 2015 · 2 comments
Closed

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

GoogleCodeExporter opened this issue Jul 24, 2015 · 2 comments

Comments

@GoogleCodeExporter
Copy link

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
Copy link
Author

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

  • Changed state: WontFix
  • Added labels: Type-Enhancement
  • Removed labels: Type-Defect

@GoogleCodeExporter
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant