e2331765992c900327189745c9ab0e3feb903e3b
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / test-gl-sync-abstraction.h
1 #ifndef __TEST_GL_SYNC_ABSTRACTION_H__
2 #define __TEST_GL_SYNC_ABSTRACTION_H__
3
4 /*
5  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // EXTERNAL INCLUDES
22 #include <sstream>
23 #include <string>
24 #include <map>
25
26 // INTERNAL INCLUDES
27 #include <dali/integration-api/core.h>
28 #include <dali/integration-api/gl-sync-abstraction.h>
29 #include "test-trace-call-stack.h"
30
31 namespace Dali
32 {
33
34 class DALI_IMPORT_API TestSyncObject : public Integration::GlSyncAbstraction::SyncObject
35 {
36 public:
37   TestSyncObject(TraceCallStack& trace);
38   ~TestSyncObject();
39   bool IsSynced();
40   bool synced;
41   TraceCallStack& mTrace;
42 };
43
44 /**
45  * Class to emulate the GL sync functions with tracing
46  */
47 class DALI_IMPORT_API TestGlSyncAbstraction: public Integration::GlSyncAbstraction
48 {
49 public:
50   /**
51    * Constructor
52    */
53   TestGlSyncAbstraction();
54
55   /**
56    * Destructor
57    */
58   ~TestGlSyncAbstraction();
59
60   /**
61    * Initialize the sync objects - clear down the map
62    */
63   void Initialize();
64
65   /**
66    * Create a sync object
67    * @return the sync object
68    */
69   virtual Integration::GlSyncAbstraction::SyncObject* CreateSyncObject( );
70
71   /**
72    * Destroy a sync object
73    * @param[in] syncObject The object to destroy
74    */
75   virtual void DestroySyncObject( Integration::GlSyncAbstraction::SyncObject* syncObject );
76
77
78 public: // TEST FUNCTIONS
79   Integration::GlSyncAbstraction::SyncObject* GetLastSyncObject( );
80
81   /**
82    * Test method to trigger the object sync behaviour.
83    * @param[in]
84    * @param[in] sync The sync value to set
85    */
86   void SetObjectSynced( Integration::GlSyncAbstraction::SyncObject* syncObject, bool sync );
87
88   /**
89    * Turn trace on
90    */
91   void EnableTrace(bool enable);
92
93   /**
94    * Reset the trace callstack
95    */
96   void ResetTrace();
97
98   /**
99    * Get the trace object (allows test case to find methods on it)
100    */
101   TraceCallStack& GetTrace();
102
103 private:
104   typedef std::vector<TestSyncObject*>   SyncContainer;
105   typedef SyncContainer::iterator SyncIter;
106   SyncContainer mSyncObjects;  ///< The sync objects
107   TraceCallStack mTrace; ///< the trace call stack for testing
108 };
109
110 } // Dali
111
112 #endif // __TEST_GL_SYNC_ABSTRACTION_H__