From d439bbccd4b90583a89d209d2cc81308aabca8ac Mon Sep 17 00:00:00 2001 From: Gil Date: Tue, 22 May 2018 13:21:08 -0700 Subject: Add a HARD_ASSERT C++ assertion macro (#1304) * Add HARD_ASSERT * Use HARD_ASSERT * Remove FIREBASE_ASSERT * Remove StringPrintf --- .../test/firebase/firestore/util/CMakeLists.txt | 5 +- .../test/firebase/firestore/util/assert_test.cc | 63 ----------------- .../firebase/firestore/util/hard_assert_test.cc | 52 +++++++++++++++ .../firebase/firestore/util/string_printf_test.cc | 78 ---------------------- 4 files changed, 54 insertions(+), 144 deletions(-) delete mode 100644 Firestore/core/test/firebase/firestore/util/assert_test.cc create mode 100644 Firestore/core/test/firebase/firestore/util/hard_assert_test.cc delete mode 100644 Firestore/core/test/firebase/firestore/util/string_printf_test.cc (limited to 'Firestore/core/test') diff --git a/Firestore/core/test/firebase/firestore/util/CMakeLists.txt b/Firestore/core/test/firebase/firestore/util/CMakeLists.txt index c133e23..bcb1c84 100644 --- a/Firestore/core/test/firebase/firestore/util/CMakeLists.txt +++ b/Firestore/core/test/firebase/firestore/util/CMakeLists.txt @@ -23,7 +23,7 @@ if(APPLE) cc_test( firebase_firestore_util_log_apple_test SOURCES - assert_test.cc + hard_assert_test.cc log_test.cc DEPENDS firebase_firestore_util_log_apple @@ -33,7 +33,7 @@ endif(APPLE) cc_test( firebase_firestore_util_log_stdio_test SOURCES - assert_test.cc + hard_assert_test.cc log_test.cc DEPENDS firebase_firestore_util_log_stdio @@ -130,7 +130,6 @@ cc_test( status_test_util.h statusor_test.cc string_format_test.cc - string_printf_test.cc string_util_test.cc DEPENDS absl_base diff --git a/Firestore/core/test/firebase/firestore/util/assert_test.cc b/Firestore/core/test/firebase/firestore/util/assert_test.cc deleted file mode 100644 index fb15e61..0000000 --- a/Firestore/core/test/firebase/firestore/util/assert_test.cc +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2018 Google - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "Firestore/core/src/firebase/firestore/util/firebase_assert.h" -#include "gtest/gtest.h" - -namespace firebase { -namespace firestore { -namespace util { - -namespace { - -void AssertWithExpression(bool condition) { - FIREBASE_ASSERT_WITH_EXPRESSION(condition, 1 + 2 + 3); -} - -void Assert(bool condition) { - FIREBASE_ASSERT(condition == true); -} - -void AssertMessageWithExpression(bool condition) { - FIREBASE_ASSERT_MESSAGE_WITH_EXPRESSION(condition, 1 + 2 + 3, "connection %s", - condition ? "succeeded" : "failed"); -} - -} // namespace - -TEST(Assert, WithExpression) { - AssertWithExpression(true); - - EXPECT_ANY_THROW(AssertWithExpression(false)); -} - -TEST(Assert, Vanilla) { - Assert(true); - - EXPECT_ANY_THROW(Assert(false)); -} - -TEST(Assert, WithMessageAndExpression) { - AssertMessageWithExpression(true); - - EXPECT_ANY_THROW(AssertMessageWithExpression(false)); -} - -} // namespace util -} // namespace firestore -} // namespace firebase diff --git a/Firestore/core/test/firebase/firestore/util/hard_assert_test.cc b/Firestore/core/test/firebase/firestore/util/hard_assert_test.cc new file mode 100644 index 0000000..fab6475 --- /dev/null +++ b/Firestore/core/test/firebase/firestore/util/hard_assert_test.cc @@ -0,0 +1,52 @@ +/* + * Copyright 2018 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include "Firestore/core/src/firebase/firestore/util/hard_assert.h" +#include "gtest/gtest.h" + +namespace firebase { +namespace firestore { +namespace util { + +namespace { + +void Assert(bool condition) { + HARD_ASSERT(condition == true); +} + +void AssertWithMessage(bool condition) { + HARD_ASSERT(condition, "condition %s", condition ? "succeeded" : "failed"); +} + +} // namespace + +TEST(HardAssertTest, Vanilla) { + Assert(true); + + EXPECT_ANY_THROW(Assert(false)); +} + +TEST(HardAssertTest, WithMessage) { + AssertWithMessage(true); + + EXPECT_ANY_THROW(AssertWithMessage(false)); +} + +} // namespace util +} // namespace firestore +} // namespace firebase diff --git a/Firestore/core/test/firebase/firestore/util/string_printf_test.cc b/Firestore/core/test/firebase/firestore/util/string_printf_test.cc deleted file mode 100644 index 14cc9c8..0000000 --- a/Firestore/core/test/firebase/firestore/util/string_printf_test.cc +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2017 Google - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Firestore/core/src/firebase/firestore/util/string_printf.h" - -#include "gtest/gtest.h" - -namespace firebase { -namespace firestore { -namespace util { - -TEST(StringPrintf, Empty) { - EXPECT_EQ("", StringPrintf("")); - EXPECT_EQ("", StringPrintf("%s", std::string().c_str())); - EXPECT_EQ("", StringPrintf("%s", "")); -} - -TEST(StringAppendFTest, Empty) { - std::string value("Hello"); - const char* empty = ""; - StringAppendF(&value, "%s", empty); - EXPECT_EQ("Hello", value); -} - -TEST(StringAppendFTest, EmptyString) { - std::string value("Hello"); - StringAppendF(&value, "%s", ""); - EXPECT_EQ("Hello", value); -} - -TEST(StringAppendFTest, String) { - std::string value("Hello"); - StringAppendF(&value, " %s", "World"); - EXPECT_EQ("Hello World", value); -} - -TEST(StringAppendFTest, Int) { - std::string value("Hello"); - StringAppendF(&value, " %d", 123); - EXPECT_EQ("Hello 123", value); -} - -TEST(StringPrintf, DontOverwriteErrno) { - // Check that errno isn't overwritten unless we're printing - // something significantly larger than what people are normally - // printing in their badly written PLOG() statements. - errno = ECHILD; - std::string value = StringPrintf("Hello, %s!", "World"); - EXPECT_EQ(ECHILD, errno); -} - -TEST(StringPrintf, LargeBuf) { - // Check that the large buffer is handled correctly. - size_t n = 2048; - char* buf = new char[n + 1]; - memset(buf, ' ', n); - buf[n] = 0; - std::string value = StringPrintf("%s", buf); - EXPECT_EQ(buf, value); - delete[] buf; -} - -} // namespace util -} // namespace firestore -} // namespace firebase -- cgit v1.2.3