| // |
| // Copyright (c) 2016 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // Observer_unittest: |
| // Unit tests for Observers and related classes. |
| |
| #include <gtest/gtest.h> |
| |
| #include "libANGLE/Observer.h" |
| |
| using namespace angle; |
| using namespace testing; |
| |
| namespace |
| { |
| |
| struct ObserverClass : public ObserverInterface |
| { |
| void onSubjectStateChange(const gl::Context *context, |
| SubjectIndex index, |
| SubjectMessage message) override |
| { |
| wasNotified = true; |
| } |
| bool wasNotified = false; |
| }; |
| |
| // Test that Observer/Subject state change notifications work. |
| TEST(ObserverTest, BasicUsage) |
| { |
| Subject subject; |
| ObserverClass observer; |
| ObserverBinding binding(&observer, 0u); |
| |
| binding.bind(&subject); |
| ASSERT_FALSE(observer.wasNotified); |
| subject.onStateChange(nullptr, SubjectMessage::STORAGE_CHANGED); |
| ASSERT_TRUE(observer.wasNotified); |
| } |
| |
| } // anonymous namespace |