aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/test
diff options
context:
space:
mode:
authorGravatar Gil <mcg@google.com>2018-06-12 09:36:08 -0700
committerGravatar GitHub <noreply@github.com>2018-06-12 09:36:08 -0700
commit9e14b80e0716c2be71c6100cad7aa7c61ac46c6e (patch)
tree09d4d4583571b56feb89f809a24626cef14a3356 /Firestore/core/test
parentf5bf0a37a7dd40e7538a1aed77af05471b7fe713 (diff)
Create Status objects from errno (#1374)
* Add a portable interface to strerror * Add Status::FromErrno * Add strerror_test.cc to the Xcode project * Use glibc feature selection macros instead of return-type overloads * Fix tensorflow references
Diffstat (limited to 'Firestore/core/test')
-rw-r--r--Firestore/core/test/firebase/firestore/util/CMakeLists.txt1
-rw-r--r--Firestore/core/test/firebase/firestore/util/status_test.cc23
-rw-r--r--Firestore/core/test/firebase/firestore/util/status_test_util.h32
-rw-r--r--Firestore/core/test/firebase/firestore/util/strerror_test.cc39
4 files changed, 83 insertions, 12 deletions
diff --git a/Firestore/core/test/firebase/firestore/util/CMakeLists.txt b/Firestore/core/test/firebase/firestore/util/CMakeLists.txt
index f540d7c..0345f7c 100644
--- a/Firestore/core/test/firebase/firestore/util/CMakeLists.txt
+++ b/Firestore/core/test/firebase/firestore/util/CMakeLists.txt
@@ -130,6 +130,7 @@ cc_test(
status_test.cc
status_test_util.h
statusor_test.cc
+ strerror_test.cc
string_format_test.cc
string_util_test.cc
DEPENDS
diff --git a/Firestore/core/test/firebase/firestore/util/status_test.cc b/Firestore/core/test/firebase/firestore/util/status_test.cc
index e5cb8dc..686272b 100644
--- a/Firestore/core/test/firebase/firestore/util/status_test.cc
+++ b/Firestore/core/test/firebase/firestore/util/status_test.cc
@@ -16,7 +16,10 @@
#include "Firestore/core/src/firebase/firestore/util/status.h"
+#include <cerrno>
+
#include "Firestore/core/test/firebase/firestore/util/status_test_util.h"
+#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace firebase {
@@ -85,23 +88,31 @@ TEST(Status, EqualsSame) {
}
TEST(Status, EqualsCopy) {
- const Status a(FirestoreErrorCode::InvalidArgument, "Invalid");
- const Status b = a;
+ Status a(FirestoreErrorCode::InvalidArgument, "Invalid");
+ Status b = a;
ASSERT_EQ(a, b);
}
TEST(Status, EqualsDifferentCode) {
- const Status a(FirestoreErrorCode::InvalidArgument, "message");
- const Status b(FirestoreErrorCode::Internal, "message");
+ Status a(FirestoreErrorCode::InvalidArgument, "message");
+ Status b(FirestoreErrorCode::Internal, "message");
ASSERT_NE(a, b);
}
TEST(Status, EqualsDifferentMessage) {
- const Status a(FirestoreErrorCode::InvalidArgument, "message");
- const Status b(FirestoreErrorCode::InvalidArgument, "another");
+ Status a(FirestoreErrorCode::InvalidArgument, "message");
+ Status b(FirestoreErrorCode::InvalidArgument, "another");
ASSERT_NE(a, b);
}
+TEST(Status, FromErrno) {
+ Status a = Status::FromErrno(EEXIST, "Cannot write file");
+ ASSERT_THAT(
+ a.ToString(),
+ testing::MatchesRegex(
+ "Already exists: Cannot write file \\(errno .*: File exists\\)"));
+}
+
} // namespace util
} // namespace firestore
} // namespace firebase
diff --git a/Firestore/core/test/firebase/firestore/util/status_test_util.h b/Firestore/core/test/firebase/firestore/util/status_test_util.h
index 745f3aa..fcf9135 100644
--- a/Firestore/core/test/firebase/firestore/util/status_test_util.h
+++ b/Firestore/core/test/firebase/firestore/util/status_test_util.h
@@ -20,16 +20,36 @@
#include "Firestore/core/src/firebase/firestore/util/status.h"
#include "gtest/gtest.h"
-// Macros for testing the results of functions that return tensorflow::Status.
-#define EXPECT_OK(statement) \
- EXPECT_EQ(::firebase::firestore::util::Status::OK(), (statement))
-#define ASSERT_OK(statement) \
- ASSERT_EQ(::firebase::firestore::util::Status::OK(), (statement))
+namespace firebase {
+namespace firestore {
+namespace util {
+
+inline testing::AssertionResult Equal(Status expected, Status actual) {
+ if (expected != actual) {
+ return testing::AssertionFailure()
+ << "Should have seen status " << expected.ToString() << " but got "
+ << actual.ToString();
+ }
+
+ return testing::AssertionSuccess();
+}
+
+} // namespace util
+} // namespace firestore
+} // namespace firebase
+
+// Macros for testing the results of functions that return util::Status.
+#define EXPECT_OK(statement) \
+ EXPECT_TRUE(::firebase::firestore::util::Equal( \
+ ::firebase::firestore::util::Status::OK(), (statement)));
+#define ASSERT_OK(statement) \
+ ASSERT_TRUE(::firebase::firestore::util::Equal( \
+ ::firebase::firestore::util::Status::OK(), (statement)));
// There are no EXPECT_NOT_OK/ASSERT_NOT_OK macros since they would not
// provide much value (when they fail, they would just print the OK status
// which conveys no more information than EXPECT_FALSE(status.ok());
// If you want to check for particular errors, a better alternative is:
-// EXPECT_EQ(..expected tensorflow::error::Code..., status.code());
+// EXPECT_EQ(..expected FirestoreErrorCode..., status.code());
#endif // FIRESTORE_CORE_TEST_FIREBASE_FIRESTORE_UTIL_STATUS_TEST_UTIL_H_
diff --git a/Firestore/core/test/firebase/firestore/util/strerror_test.cc b/Firestore/core/test/firebase/firestore/util/strerror_test.cc
new file mode 100644
index 0000000..854cb08
--- /dev/null
+++ b/Firestore/core/test/firebase/firestore/util/strerror_test.cc
@@ -0,0 +1,39 @@
+/*
+ * 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 "Firestore/core/src/firebase/firestore/util/strerror.h"
+
+#include "gtest/gtest.h"
+
+namespace firebase {
+namespace firestore {
+namespace util {
+
+TEST(StrErrorTest, ValidErrorCode) {
+ errno = EAGAIN;
+ EXPECT_EQ(StrError(EINTR), strerror(EINTR));
+ EXPECT_EQ(errno, EAGAIN);
+}
+
+TEST(StrErrorTest, InvalidErrorCode) {
+ errno = EBUSY;
+ EXPECT_EQ(StrError(-1), "Unknown error -1");
+ EXPECT_EQ(errno, EBUSY);
+}
+
+} // namespace util
+} // namespace firestore
+} // namespace firebase