diff options
author | mtklein <mtklein@chromium.org> | 2015-09-09 09:09:53 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-09 09:09:53 -0700 |
commit | 6c59d80858f453a426df9b07fdf3a8cc01e0b906 (patch) | |
tree | 1fc4c3c03062744c4382a40e608bdb147bebad09 /tests | |
parent | 336cda3fc0e01cd80212e0ac133d65b60824868e (diff) |
Port uses of SkLazyPtr to SkOncePtr.
This gives SkOncePtr a non-trivial destructor that uses std::default_delete
by default. This is overrideable, as seen in SkColorTable.
SK_DECLARE_STATIC_ONCE_PTR still just leaves its pointers hanging at EOP.
BUG=skia:
No public API changes.
TBR=reed@google.com
Committed: https://skia.googlesource.com/skia/+/a1254acdb344174e761f5061c820559dab64a74c
Review URL: https://codereview.chromium.org/1322933005
Diffstat (limited to 'tests')
-rw-r--r-- | tests/LazyPtrTest.cpp | 70 | ||||
-rw-r--r-- | tests/OncePtrTest.cpp | 2 |
2 files changed, 0 insertions, 72 deletions
diff --git a/tests/LazyPtrTest.cpp b/tests/LazyPtrTest.cpp deleted file mode 100644 index c6ffd72e25..0000000000 --- a/tests/LazyPtrTest.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2014 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "Test.h" -#include "SkLazyPtr.h" -#include "SkRunnable.h" -#include "SkTaskGroup.h" - -namespace { - -struct CreateIntFromFloat { - CreateIntFromFloat(float val) : fVal(val) {} - int* operator()() const { return new int((int)fVal); } - float fVal; -}; - -// As a template argument this must have external linkage. -void custom_destroy(int* ptr) { *ptr = 99; } - -} // namespace - -DEF_TEST(LazyPtr, r) { - // Basic usage: calls new int. - SkLazyPtr<int> lazy; - int* ptr = lazy.get(); - REPORTER_ASSERT(r, ptr); - REPORTER_ASSERT(r, lazy.get() == ptr); - - // Advanced usage: calls a functor. - SkLazyPtr<int> lazyFunctor; - int* six = lazyFunctor.get(CreateIntFromFloat(6.4f)); - REPORTER_ASSERT(r, six); - REPORTER_ASSERT(r, 6 == *six); - - // Just makes sure this is safe. - SkLazyPtr<double> neverRead; - - // SkLazyPtr supports custom destroy methods. - { - SkLazyPtr<int, custom_destroy> customDestroy; - ptr = customDestroy.get(); - // custom_destroy called here. - } - REPORTER_ASSERT(r, ptr); - REPORTER_ASSERT(r, 99 == *ptr); - // Since custom_destroy didn't actually delete ptr, we do now. - delete ptr; -} - -DEF_TEST(LazyPtr_Threaded, r) { - static const int kRacers = 321; - - // Race to intialize the pointer by calling .get(). - SkLazyPtr<int> lazy; - int* seen[kRacers]; - - sk_parallel_for(kRacers, [&](int i) { - seen[i] = lazy.get(); - }); - - // lazy.get() should return the same pointer to all threads. - for (int i = 1; i < kRacers; i++) { - REPORTER_ASSERT(r, seen[i] != nullptr); - REPORTER_ASSERT(r, seen[i] == seen[0]); - } -} diff --git a/tests/OncePtrTest.cpp b/tests/OncePtrTest.cpp index 1b348dfd2d..b1e4e5d1ae 100644 --- a/tests/OncePtrTest.cpp +++ b/tests/OncePtrTest.cpp @@ -28,8 +28,6 @@ DEF_TEST(OncePtr, r) { REPORTER_ASSERT(r, *n == 5); }); REPORTER_ASSERT(r, calls.load() == 1); - - delete (int*)once; } /* TODO(mtklein): next CL |