diff options
author | Abseil Team <absl-team@google.com> | 2019-06-24 18:35:20 -0700 |
---|---|---|
committer | Shaindel Schwartz <shaindel@google.com> | 2019-06-24 22:04:35 -0400 |
commit | d65e19dfcd8697076f68598c0131c6930cdcd74d (patch) | |
tree | dbbfc92204c9c2f0bc950af9a8f2c26985d8654c /absl/container/inlined_vector_exception_safety_test.cc | |
parent | 5162fc83d2f3b79a9753ed59594c43966afdd37a (diff) | |
download | abseil-d65e19dfcd8697076f68598c0131c6930cdcd74d.tar.gz abseil-d65e19dfcd8697076f68598c0131c6930cdcd74d.tar.bz2 abseil-d65e19dfcd8697076f68598c0131c6930cdcd74d.zip |
Export of internal Abseil changes.
--
2f187776e55fe7741882d64aa4fb04d361dcd1da by Shaindel Schwartz <shaindel@google.com>:
Fix spaces.
PiperOrigin-RevId: 254880665
--
50a2c390c1e56bec574e9418a6d0c5765f2e1d56 by CJ Johnson <johnsoncj@google.com>:
Fixes a ubsan violation bug report: https://github.com/abseil/abseil-cpp/issues/337
PiperOrigin-RevId: 254846112
--
563fee16ee0ac32a93292c3b2d1cf9543bad4758 by CJ Johnson <johnsoncj@google.com>:
In the InlinedVector copy-assignment operator, substitutes-in a call to DeallocateIfAllocated() (which was not previously available)
PiperOrigin-RevId: 254835012
--
d07f4d91b43242c5e8bd90f1e93f55f7972eed04 by Shaindel Schwartz <shaindel@google.com>:
#336
PiperOrigin-RevId: 254833534
--
1ad0fe00169a794176605a897f15fad8625339bd by Shaindel Schwartz <shaindel@google.com>:
#335
PiperOrigin-RevId: 254826748
--
436a29591c60c6ac9bb7b98e4906c0a7466611c1 by Shaindel Schwartz <shaindel@google.com>:
Import of CCTZ from GitHub.
PiperOrigin-RevId: 254820333
--
e782a5387a750319eb6ed5d9927ec2463bd68ebb by CJ Johnson <johnsoncj@google.com>:
Updates the definition of InlinedVector::resize(...) to be exception safe and adds exception safety tests
PiperOrigin-RevId: 254818993
--
6d2f8538fb06a09af47232d86b32dfc020b62133 by CJ Johnson <johnsoncj@google.com>:
Removes unnecessary transaction object from the implementation of InlinedVector::reserve(n)
PiperOrigin-RevId: 254804166
--
9a3a806702679a7442837089469cf171194da776 by Abseil Team <absl-team@google.com>:
Internal Change.
PiperOrigin-RevId: 254489023
--
ded1463ef81f3257645becc6be58df3b433ea21f by CJ Johnson <johnsoncj@google.com>:
Updates the definition of InlinedVector::reserve(size_type) to be exception safe and adds exception safety tests
PiperOrigin-RevId: 254463057
GitOrigin-RevId: 2f187776e55fe7741882d64aa4fb04d361dcd1da
Change-Id: Id41fc5a62c8d71021e803721ecdbfb3ce60ef574
Diffstat (limited to 'absl/container/inlined_vector_exception_safety_test.cc')
-rw-r--r-- | absl/container/inlined_vector_exception_safety_test.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/absl/container/inlined_vector_exception_safety_test.cc b/absl/container/inlined_vector_exception_safety_test.cc index e7c47127..1775699e 100644 --- a/absl/container/inlined_vector_exception_safety_test.cc +++ b/absl/container/inlined_vector_exception_safety_test.cc @@ -259,6 +259,26 @@ TYPED_TEST(TwoSizeTest, Assign) { })); } +TYPED_TEST(TwoSizeTest, Resize) { + using VecT = typename TypeParam::VecT; + using value_type = typename VecT::value_type; + constexpr static auto from_size = TypeParam::GetSizeAt(0); + constexpr static auto to_size = TypeParam::GetSizeAt(1); + + auto tester = testing::MakeExceptionSafetyTester() + .WithInitialValue(VecT{from_size}) + .WithContracts(InlinedVectorInvariants<VecT>, + testing::strong_guarantee); + + EXPECT_TRUE(tester.Test([](VecT* vec) { + vec->resize(to_size); // + })); + + EXPECT_TRUE(tester.Test([](VecT* vec) { + vec->resize(to_size, value_type{}); // + })); +} + TYPED_TEST(OneSizeTest, PopBack) { using VecT = typename TypeParam::VecT; constexpr static auto size = TypeParam::GetSizeAt(0); @@ -285,6 +305,20 @@ TYPED_TEST(OneSizeTest, Clear) { })); } +TYPED_TEST(TwoSizeTest, Reserve) { + using VecT = typename TypeParam::VecT; + constexpr static auto from_size = TypeParam::GetSizeAt(0); + constexpr static auto to_capacity = TypeParam::GetSizeAt(1); + + auto tester = testing::MakeExceptionSafetyTester() + .WithInitialValue(VecT{from_size}) + .WithContracts(InlinedVectorInvariants<VecT>); + + EXPECT_TRUE(tester.Test([](VecT* vec) { + vec->reserve(to_capacity); // + })); +} + TYPED_TEST(OneSizeTest, ShrinkToFit) { using VecT = typename TypeParam::VecT; constexpr static auto size = TypeParam::GetSizeAt(0); |