1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2016 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker // Observer_unittest: 7*8975f5c5SAndroid Build Coastguard Worker // Unit tests for Observers and related classes. 8*8975f5c5SAndroid Build Coastguard Worker 9*8975f5c5SAndroid Build Coastguard Worker #include <gtest/gtest.h> 10*8975f5c5SAndroid Build Coastguard Worker 11*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Observer.h" 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Worker using namespace angle; 14*8975f5c5SAndroid Build Coastguard Worker using namespace testing; 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker namespace 17*8975f5c5SAndroid Build Coastguard Worker { 18*8975f5c5SAndroid Build Coastguard Worker 19*8975f5c5SAndroid Build Coastguard Worker struct ObserverClass : public ObserverInterface 20*8975f5c5SAndroid Build Coastguard Worker { onSubjectStateChange__anon33bef6d90111::ObserverClass21*8975f5c5SAndroid Build Coastguard Worker void onSubjectStateChange(SubjectIndex index, SubjectMessage message) override 22*8975f5c5SAndroid Build Coastguard Worker { 23*8975f5c5SAndroid Build Coastguard Worker wasNotified = true; 24*8975f5c5SAndroid Build Coastguard Worker } 25*8975f5c5SAndroid Build Coastguard Worker bool wasNotified = false; 26*8975f5c5SAndroid Build Coastguard Worker }; 27*8975f5c5SAndroid Build Coastguard Worker 28*8975f5c5SAndroid Build Coastguard Worker // Test that Observer/Subject state change notifications work. TEST(ObserverTest,BasicUsage)29*8975f5c5SAndroid Build Coastguard WorkerTEST(ObserverTest, BasicUsage) 30*8975f5c5SAndroid Build Coastguard Worker { 31*8975f5c5SAndroid Build Coastguard Worker Subject subject; 32*8975f5c5SAndroid Build Coastguard Worker ObserverClass observer; 33*8975f5c5SAndroid Build Coastguard Worker ObserverBinding binding(&observer, 0u); 34*8975f5c5SAndroid Build Coastguard Worker 35*8975f5c5SAndroid Build Coastguard Worker binding.bind(&subject); 36*8975f5c5SAndroid Build Coastguard Worker ASSERT_FALSE(observer.wasNotified); 37*8975f5c5SAndroid Build Coastguard Worker subject.onStateChange(SubjectMessage::SubjectChanged); 38*8975f5c5SAndroid Build Coastguard Worker ASSERT_TRUE(observer.wasNotified); 39*8975f5c5SAndroid Build Coastguard Worker } 40*8975f5c5SAndroid Build Coastguard Worker 41*8975f5c5SAndroid Build Coastguard Worker } // anonymous namespace 42