Index: util/misc/scoped_forbid_return_test.cc |
diff --git a/util/misc/scoped_forbid_return_test.cc b/util/misc/scoped_forbid_return_test.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0349fc1580a1759a405f34904c75449f0f73e4bd |
--- /dev/null |
+++ b/util/misc/scoped_forbid_return_test.cc |
@@ -0,0 +1,59 @@ |
+// Copyright 2014 The Crashpad Authors. All rights reserved. |
+// |
+// 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 "util/misc/scoped_forbid_return.h" |
+ |
+#include "gtest/gtest.h" |
+ |
+namespace { |
+ |
+using namespace crashpad; |
+ |
+enum ForbidReturnType { |
+ kForbidReturnDefault = 0, |
+ kForbidReturnArmed, |
+ kForbidReturnDisarmed, |
+}; |
+ |
+void ScopedForbidReturnHelper(ForbidReturnType type) { |
+ ScopedForbidReturn forbid_return; |
+ |
+ switch (type) { |
+ case kForbidReturnDefault: |
+ break; |
+ case kForbidReturnArmed: |
+ forbid_return.Arm(); |
+ break; |
+ case kForbidReturnDisarmed: |
+ forbid_return.Disarm(); |
+ break; |
+ } |
+} |
+ |
+const char kForbiddenMessage[] = "attempt to exit scope forbidden"; |
+ |
+TEST(ScopedForbidReturnDeathTest, Default) { |
+ ASSERT_DEATH(ScopedForbidReturnHelper(kForbidReturnDefault), |
+ kForbiddenMessage); |
+} |
+ |
+TEST(ScopedForbidReturnDeathTest, Armed) { |
+ ASSERT_DEATH(ScopedForbidReturnHelper(kForbidReturnArmed), kForbiddenMessage); |
+} |
+ |
+TEST(ScopedForbidReturn, Disarmed) { |
+ ScopedForbidReturnHelper(kForbidReturnDisarmed); |
+} |
+ |
+} // namespace |