Merge "Sync test-application" into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / test-application.h
index 49f2b3c..02143a7 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_TEST_APPLICATION_H__
-#define __DALI_TEST_APPLICATION_H__
+#ifndef DALI_TEST_APPLICATION_H
+#define DALI_TEST_APPLICATION_H
 
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  */
 
 // INTERNAL INCLUDES
-#include <test-platform-abstraction.h>
-#include "test-gesture-manager.h"
-#include "test-gl-sync-abstraction.h"
-#include "test-gl-abstraction.h"
-#include "test-render-controller.h"
-#include <dali/public-api/common/dali-common.h>
 #include <dali/integration-api/resource-policies.h>
+#include <dali/integration-api/scene.h>
 #include <dali/integration-api/trace.h>
 
+#include <dali/public-api/common/dali-common.h>
+#include <test-platform-abstraction.h>
+
+#include "test-graphics-controller.h"
+#include "test-render-controller.h"
+
 namespace Dali
 {
-
 class DALI_CORE_API TestApplication : public ConnectionTracker
 {
 public:
-
   // Default values derived from H2 device.
-  static const uint32_t DEFAULT_SURFACE_WIDTH = 480;
+  static const uint32_t DEFAULT_SURFACE_WIDTH  = 480;
   static const uint32_t DEFAULT_SURFACE_HEIGHT = 800;
 
-#ifdef _CPP11
+  static const Rect<int> DEFAULT_SURFACE_RECT;
+
   static constexpr uint32_t DEFAULT_HORIZONTAL_DPI = 220;
   static constexpr uint32_t DEFAULT_VERTICAL_DPI   = 217;
-#else
-  static const uint32_t DEFAULT_HORIZONTAL_DPI = 220;
-  static const uint32_t DEFAULT_VERTICAL_DPI   = 217;
-#endif
 
   static const uint32_t DEFAULT_RENDER_INTERVAL = 1;
 
   static const uint32_t RENDER_FRAME_INTERVAL = 16;
 
-  TestApplication( uint32_t surfaceWidth  = DEFAULT_SURFACE_WIDTH,
-                   uint32_t surfaceHeight = DEFAULT_SURFACE_HEIGHT,
-                   uint32_t horizontalDpi = DEFAULT_HORIZONTAL_DPI,
-                   uint32_t verticalDpi   = DEFAULT_VERTICAL_DPI,
-                   ResourcePolicy::DataRetention policy = ResourcePolicy::DALI_DISCARDS_ALL_DATA);
+  TestApplication(uint32_t surfaceWidth        = DEFAULT_SURFACE_WIDTH,
+                  uint32_t surfaceHeight       = DEFAULT_SURFACE_HEIGHT,
+                  uint32_t horizontalDpi       = DEFAULT_HORIZONTAL_DPI,
+                  uint32_t verticalDpi         = DEFAULT_VERTICAL_DPI,
+                  bool     initialize          = true,
+                  bool     enablePartialUpdate = false);
 
   void Initialize();
-  virtual ~TestApplication();
-  static void LogMessage( Dali::Integration::Log::DebugPriority level, std::string& message );
-  static void LogContext( bool start, const char* tag );
+  void CreateCore();
+  void CreateScene();
+  void InitializeCore();
+  ~TestApplication() override;
+  static void              LogMessage(Dali::Integration::Log::DebugPriority level, std::string& message);
+  static void              LogContext(bool start, const char* tag);
   Dali::Integration::Core& GetCore();
   TestPlatformAbstraction& GetPlatform();
-  TestRenderController& GetRenderController();
-  TestGlAbstraction& GetGlAbstraction();
-  TestGlSyncAbstraction& GetGlSyncAbstraction();
-  TestGestureManager& GetGestureManager();
-  void ProcessEvent(const Integration::Event& event);
-  void SendNotification();
-  void SetSurfaceWidth( uint32_t width, unsigned height );
-  void SetTopMargin( uint32_t margin );
-  bool Render( uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL, const char* location=NULL );
-  uint32_t GetUpdateStatus();
-  bool UpdateOnly( uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL );
-  bool RenderOnly( );
-  void ResetContext();
-  bool GetRenderNeedsUpdate();
-  uint32_t Wait( uint32_t durationToWait );
+  TestRenderController&    GetRenderController();
+  TestGraphicsController&  GetGraphicsController();
+
+  TestGlAbstraction&              GetGlAbstraction();
+  TestGlContextHelperAbstraction& GetGlContextHelperAbstraction();
+  TestGraphicsSyncImplementation& GetGraphicsSyncImpl();
+
+  void        ProcessEvent(const Integration::Event& event);
+  void        SendNotification();
+  bool        Render(uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL, const char* location = NULL);
+  bool        PreRenderWithPartialUpdate(uint32_t intervalMilliseconds, const char* location, std::vector<Rect<int>>& damagedRects);
+  bool        RenderWithPartialUpdate(std::vector<Rect<int>>& damagedRects, Rect<int>& clippingRect);
+  uint32_t    GetUpdateStatus();
+  bool        UpdateOnly(uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL);
+  bool        RenderOnly();
+  void        ResetContext();
+  bool        GetRenderNeedsUpdate();
+  bool        GetRenderNeedsPostRender();
+  uint32_t    Wait(uint32_t durationToWait);
+  static void EnableLogging(bool enabled)
+  {
+    mLoggingEnabled = enabled;
+  }
+
+  Integration::Scene GetScene() const
+  {
+    return mScene;
+  }
 
 private:
-  void DoUpdate( uint32_t intervalMilliseconds, const char* location=NULL );
+  void DoUpdate(uint32_t intervalMilliseconds, const char* location = NULL);
 
 protected:
-  TestPlatformAbstraction   mPlatformAbstraction;
-  TestRenderController      mRenderController;
-  TestGlAbstraction         mGlAbstraction;
-  TestGlSyncAbstraction     mGlSyncAbstraction;
-  TestGestureManager        mGestureManager;
+  TestPlatformAbstraction mPlatformAbstraction;
+  TestRenderController    mRenderController;
+  TestGraphicsController  mGraphicsController;
 
   Integration::UpdateStatus mStatus;
   Integration::RenderStatus mRenderStatus;
 
-  Integration::Core* mCore;
+  Integration::Core*       mCore;
+  Dali::Integration::Scene mScene;
 
   uint32_t mSurfaceWidth;
   uint32_t mSurfaceHeight;
   uint32_t mFrame;
 
-  struct { uint32_t x; uint32_t y; } mDpi;
-  uint32_t mLastVSyncTime;
-  ResourcePolicy::DataRetention mDataRetentionPolicy;
+  Graphics::UniquePtr<Graphics::RenderTarget> mRenderTarget;
+
+  struct
+  {
+    uint32_t x;
+    uint32_t y;
+  } mDpi;
+  uint32_t    mLastVSyncTime;
+  bool        mPartialUpdateEnabled;
+  static bool mLoggingEnabled;
 };
 
-} // Dali
+} // namespace Dali
 
-#endif
+#endif // DALI_TEST_APPLICATION_H