Added new test harness
[platform/core/uifw/dali-adaptor.git] / automated-tests / src / dali-adaptor / dali-test-suite-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 Flora License, Version 1.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://floralicense.org/license/
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 // EXTERNAL INCLUDES
21 #include <sstream>
22 #include <string>
23 #include <map>
24
25 // INTERNAL INCLUDES
26 #include <dali/dali.h>
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__