aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@google.com>2015-11-16 13:05:37 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-11-16 13:05:37 -0800
commit566b23c571dbec97925ad0c44e744126a62e5a1e (patch)
tree05e55fc33a38394f582b3fae0f91b3f9affaacd3 /tests
parent755c553c17b82bb5de3d9cc8d3b2a866ff9e9e50 (diff)
Revert of skstd -> std for unique_ptr (patchset #9 id:160001 of https://codereview.chromium.org/1436033003/ )
Reason for revert: 10.9 bots are too old too. Original issue's description: > skstd -> std for unique_ptr > > TBR=reed@google.com > No public API changes. > > BUG=skia:4564 > > Committed: https://skia.googlesource.com/skia/+/755c553c17b82bb5de3d9cc8d3b2a866ff9e9e50 TBR=bungeman@google.com,mtklein@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:4564 Review URL: https://codereview.chromium.org/1446413002
Diffstat (limited to 'tests')
-rw-r--r--tests/CPlusPlusEleven.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/CPlusPlusEleven.cpp b/tests/CPlusPlusEleven.cpp
index f7d194a450..5c2123dc47 100644
--- a/tests/CPlusPlusEleven.cpp
+++ b/tests/CPlusPlusEleven.cpp
@@ -27,3 +27,72 @@ DEF_TEST(CPlusPlusEleven_RvalueAndMove, r) {
Moveable src1; Moveable dst1(skstd::move(src1));
Moveable src2, dst2; dst2 = skstd::move(src2);
}
+
+#define TOO_BIG "The unique_ptr was bigger than expected."
+#define WEIRD_SIZE "The unique_ptr was a different size than expected."
+
+DEF_TEST(CPlusPlusEleven_UniquePtr, r) {
+ struct SmallUniquePtr {
+ Moveable* p;
+ };
+ struct BigUniquePtr {
+ void(*d)(Moveable*);
+ Moveable* p;
+ };
+
+ static_assert(sizeof(skstd::unique_ptr<Moveable>) == sizeof(SmallUniquePtr), TOO_BIG);
+ static_assert(sizeof(skstd::unique_ptr<Moveable[]>) == sizeof(SmallUniquePtr), TOO_BIG);
+
+ using proc = void(*)(Moveable*);
+ static_assert(sizeof(skstd::unique_ptr<Moveable, proc>) == sizeof(BigUniquePtr), WEIRD_SIZE);
+ static_assert(sizeof(skstd::unique_ptr<Moveable[], proc>) == sizeof(BigUniquePtr), WEIRD_SIZE);
+
+ {
+ skstd::unique_ptr<Moveable, void(*)(Moveable*)> u(nullptr, deleter<Moveable>);
+ static_assert(sizeof(u) == sizeof(BigUniquePtr), WEIRD_SIZE);
+
+ auto u2 = skstd::move(u);
+ static_assert(sizeof(u2) == sizeof(BigUniquePtr), WEIRD_SIZE);
+ }
+
+ {
+ skstd::unique_ptr<Moveable, void(*)(Moveable*)> u(nullptr, [](Moveable* m){ deleter(m); });
+ static_assert(sizeof(u) == sizeof(BigUniquePtr), WEIRD_SIZE);
+
+ auto u2 = skstd::move(u);
+ static_assert(sizeof(u2) == sizeof(BigUniquePtr), WEIRD_SIZE);
+ }
+
+ {
+ auto d = [](Moveable* m){ deleter(m); };
+ skstd::unique_ptr<Moveable, decltype(d)> u(nullptr, d);
+ static_assert(sizeof(u) == sizeof(SmallUniquePtr), TOO_BIG);
+
+ auto u2 = skstd::move(u);
+ static_assert(sizeof(u2) == sizeof(SmallUniquePtr), TOO_BIG);
+ }
+
+ {
+ skstd::unique_ptr<Moveable, Deleter<Moveable>> u(nullptr, Deleter<Moveable>());
+ static_assert(sizeof(u) == sizeof(SmallUniquePtr), TOO_BIG);
+
+ auto u2 = skstd::move(u);
+ static_assert(sizeof(u2) == sizeof(SmallUniquePtr), TOO_BIG);
+ }
+
+ {
+ skstd::unique_ptr<Moveable, Deleter<Moveable>> u(new Moveable(), Deleter<Moveable>());
+ static_assert(sizeof(u) == sizeof(SmallUniquePtr), TOO_BIG);
+
+ auto u2 = skstd::move(u);
+ static_assert(sizeof(u2) == sizeof(SmallUniquePtr), TOO_BIG);
+ }
+
+ {
+ skstd::unique_ptr<const void, Deleter<const void>> u(new Moveable(), Deleter<const void>());
+ static_assert(sizeof(u) == sizeof(SmallUniquePtr), TOO_BIG);
+
+ auto u2 = skstd::move(u);
+ static_assert(sizeof(u2) == sizeof(SmallUniquePtr), TOO_BIG);
+ }
+}