1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- * Copyright 2018 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "src/core/SkTLazy.h"
- #include "tests/Test.h"
- DEF_TEST(TLazy_copy, r) {
- SkTLazy<int> lazy;
- REPORTER_ASSERT(r, !lazy.isValid());
- REPORTER_ASSERT(r, lazy.getMaybeNull() == nullptr);
- {
- SkTLazy<int> lazy_copy(lazy);
- REPORTER_ASSERT(r, !lazy_copy.isValid());
- REPORTER_ASSERT(r, lazy_copy.getMaybeNull() == nullptr);
- }
- lazy.init(42);
- REPORTER_ASSERT(r, lazy.isValid());
- REPORTER_ASSERT(r, 42 == *lazy.get());
- {
- SkTLazy<int> lazy_copy(lazy);
- REPORTER_ASSERT(r, lazy_copy.isValid());
- REPORTER_ASSERT(r, 42 == *lazy_copy.get());
- REPORTER_ASSERT(r, lazy.get() != lazy_copy.get());
- }
- }
- DEF_TEST(TCopyOnFirstWrite_copy, r) {
- const int v = 42;
- SkTCopyOnFirstWrite<int> cow(v);
- REPORTER_ASSERT(r, 42 == *cow);
- REPORTER_ASSERT(r, &v == cow.get());
- {
- SkTCopyOnFirstWrite<int> cow_copy(cow);
- REPORTER_ASSERT(r, 42 == *cow_copy);
- REPORTER_ASSERT(r, &v == cow_copy.get());
- REPORTER_ASSERT(r, cow.get() == cow_copy.get());
- *cow_copy.writable() = 43;
- REPORTER_ASSERT(r, 42 == *cow);
- REPORTER_ASSERT(r, &v == cow.get());
- REPORTER_ASSERT(r, 43 == *cow_copy);
- REPORTER_ASSERT(r, &v != cow_copy.get());
- REPORTER_ASSERT(r, cow.get() != cow_copy.get());
- }
- *cow.writable() = 43;
- REPORTER_ASSERT(r, 43 == *cow);
- REPORTER_ASSERT(r, &v != cow.get());
- {
- SkTCopyOnFirstWrite<int> cow_copy(cow);
- REPORTER_ASSERT(r, 43 == *cow_copy);
- REPORTER_ASSERT(r, &v != cow_copy.get());
- REPORTER_ASSERT(r, cow.get() != cow_copy.get());
- *cow_copy.writable() = 44;
- REPORTER_ASSERT(r, 43 == *cow);
- REPORTER_ASSERT(r, &v != cow.get());
- REPORTER_ASSERT(r, 44 == *cow_copy);
- REPORTER_ASSERT(r, &v != cow_copy.get());
- REPORTER_ASSERT(r, cow.get() != cow_copy.get());
- }
- }
|