/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
*
*/
-#include <iostream>
#include <stdlib.h>
+#include <iostream>
+
+#include <toolkit-event-thread-callback.h>
+#include <toolkit-timer.h>
+
#include <dali-toolkit-test-suite-utils.h>
+
#include <dali-toolkit/dali-toolkit.h>
-#include <test-application.h>
-#include <dali-toolkit/devel-api/controls/canvas-view/canvas-view.h>
-#include <dali/devel-api/adaptor-framework/canvas-renderer-shape.h>
+#include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/internal/controls/canvas-view/canvas-view-impl.h>
+#include <dali-toolkit/internal/controls/canvas-view/canvas-view-rasterize-task.h>
+#include <dali/devel-api/adaptor-framework/canvas-renderer/canvas-renderer-shape.h>
+#include <dali/devel-api/adaptor-framework/canvas-renderer/canvas-renderer.h>
+#include <dali/public-api/images/pixel-data.h>
+#include <dali/public-api/adaptor-framework/async-task-manager.h>
using namespace Dali;
using namespace Toolkit;
namespace
{
-
-
} // namespace
void utc_dali_toolkit_canvasview_startup(void)
int UtcDaliCanvasViewConstructorP(void)
{
ToolkitTestApplication application;
- CanvasView canvasView;
+ CanvasView canvasView;
- DALI_TEST_CHECK( !canvasView );
+ DALI_TEST_CHECK(!canvasView);
END_TEST;
}
int UtcDaliCanvasViewMoveAssignment(void)
{
ToolkitTestApplication application;
- CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
- CanvasView moved = std::move( canvasView );
- DALI_TEST_CHECK( moved );
- DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
- DALI_TEST_CHECK( !canvasView );
+ CanvasView moved = std::move(canvasView);
+ DALI_TEST_CHECK(moved);
+ DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
+ DALI_TEST_CHECK(!canvasView);
END_TEST;
}
int UtcDaliCanvasViewAssignmentConstructorP(void)
{
ToolkitTestApplication application;
- CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
- CanvasView copy( canvasView );
- DALI_TEST_CHECK( copy );
+ CanvasView copy(canvasView);
+ DALI_TEST_CHECK(copy);
- DALI_TEST_CHECK( canvasView == copy );
+ DALI_TEST_CHECK(canvasView == copy);
END_TEST;
}
int UtcDaliCanvasViewAssignmentOperatorP(void)
{
ToolkitTestApplication application;
- const CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ const CanvasView canvasView = CanvasView::New(Vector2(100, 100));
CanvasView assign;
- DALI_TEST_CHECK( !assign );
+ DALI_TEST_CHECK(!assign);
- assign = canvasView ;
- DALI_TEST_CHECK( assign == canvasView);
+ assign = canvasView;
+ DALI_TEST_CHECK(assign == canvasView);
END_TEST;
}
int UtcDaliCanvasViewNewP(void)
{
ToolkitTestApplication application;
- CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
- DALI_TEST_CHECK( canvasView );
+ DALI_TEST_CHECK(canvasView);
+ END_TEST;
+}
+
+int UtcDaliCanvasViewNewWithoutViewboxP(void)
+{
+ ToolkitTestApplication application;
+ CanvasView canvasView = CanvasView::New();
+
+ DALI_TEST_CHECK(canvasView);
END_TEST;
}
int UtcDaliCanvasViewDownCastP(void)
{
ToolkitTestApplication application;
- CanvasView canvasView = CanvasView::New(Vector2(100,100));
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
BaseHandle object(canvasView);
- CanvasView canvasView2 = CanvasView::DownCast( object );
+ CanvasView canvasView2 = CanvasView::DownCast(object);
DALI_TEST_CHECK(canvasView2);
- CanvasView canvasView3 = DownCast< CanvasView >(object);
+ CanvasView canvasView3 = DownCast<CanvasView>(object);
DALI_TEST_CHECK(canvasView3);
END_TEST;
}
int UtcDaliCanvasViewDownCastN(void)
{
ToolkitTestApplication application;
- BaseHandle unInitializedObject;
+ BaseHandle unInitializedObject;
- CanvasView canvasView1 = CanvasView::DownCast( unInitializedObject );
- DALI_TEST_CHECK( !canvasView1 );
+ CanvasView canvasView1 = CanvasView::DownCast(unInitializedObject);
+ DALI_TEST_CHECK(!canvasView1);
- CanvasView canvasView2 = DownCast< CanvasView >( unInitializedObject );
- DALI_TEST_CHECK( !canvasView2 );
+ CanvasView canvasView2 = DownCast<CanvasView>(unInitializedObject);
+ DALI_TEST_CHECK(!canvasView2);
END_TEST;
}
int UtcDaliCanvasViewAddP(void)
{
ToolkitTestApplication application;
- CanvasView canvasView = CanvasView::New(Vector2(100,100));
- DALI_TEST_CHECK( canvasView );
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ DALI_TEST_CHECK(canvasView);
Dali::CanvasRenderer::Shape shape = Dali::CanvasRenderer::Shape::New();
int UtcDaliCanvasViewAddN(void)
{
ToolkitTestApplication application;
- CanvasView canvasView = CanvasView::New(Vector2(100,100));
- DALI_TEST_CHECK( canvasView );
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ DALI_TEST_CHECK(canvasView);
Dali::CanvasRenderer::Shape shape;
END_TEST;
}
+int UtcDaliCanvasViewRemoveP(void)
+{
+ ToolkitTestApplication application;
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ DALI_TEST_CHECK(canvasView);
+
+ Dali::CanvasRenderer::Shape shape = Dali::CanvasRenderer::Shape::New();
+
+ canvasView.AddDrawable(shape);
+
+ DALI_TEST_CHECK(canvasView.RemoveDrawable(shape));
+
+ END_TEST;
+}
+
+int UtcDaliCanvasViewRemoveN(void)
+{
+ ToolkitTestApplication application;
+
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ DALI_TEST_CHECK(canvasView);
+
+ Dali::CanvasRenderer::Shape shape = Dali::CanvasRenderer::Shape::New();
+
+ DALI_TEST_CHECK(!canvasView.RemoveDrawable(shape));
+
+ END_TEST;
+}
+
+int UtcDaliCanvasViewRemoveAllP(void)
+{
+ ToolkitTestApplication application;
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ DALI_TEST_CHECK(canvasView);
+
+ Dali::CanvasRenderer::Shape shape = Dali::CanvasRenderer::Shape::New();
+
+ canvasView.AddDrawable(shape);
+
+ canvasView.RemoveAllDrawables();
+
+ END_TEST;
+}
+
+int UtcDaliCanvasViewRemoveAllN(void)
+{
+ ToolkitTestApplication application;
+
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ DALI_TEST_CHECK(canvasView);
+
+ canvasView.RemoveAllDrawables();
+
+ END_TEST;
+}
+
int UtcDaliCanvasViewChangeSizeP(void)
{
ToolkitTestApplication application;
- CanvasView canvasView = CanvasView::New(Vector2(100,100));
- DALI_TEST_CHECK( canvasView );
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ DALI_TEST_CHECK(canvasView);
application.GetScene().Add(canvasView);
- application.SendNotification();
- application.Render();
canvasView.SetProperty(Actor::Property::SIZE, Vector2(300, 300));
application.Render();
Property::Value pv = canvasView.GetProperty(Actor::Property::SIZE);
- Vector3 v3;
+ Vector3 v3;
pv.Get(v3);
- DALI_TEST_EQUALS( v3, Vector3(300, 300, 0), TEST_LOCATION );
+ DALI_TEST_EQUALS(v3, Vector3(300, 300, 0), TEST_LOCATION);
END_TEST;
}
{
ToolkitTestApplication application;
- CanvasView canvasView = CanvasView::New(Vector2(100,100));
- DALI_TEST_CHECK( canvasView );
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ DALI_TEST_CHECK(canvasView);
application.GetScene().Add(canvasView);
- application.SendNotification();
- application.Render();
canvasView.SetProperty(Actor::Property::SIZE, Vector2(-999, -999));
application.Render();
Property::Value pv = canvasView.GetProperty(Actor::Property::SIZE);
- Vector3 v3;
+ Vector3 v3;
pv.Get(v3);
- DALI_TEST_EQUALS( v3, Vector3(-999, -999, 0), TEST_LOCATION );
+ DALI_TEST_EQUALS(v3, Vector3(-999, -999, 0), TEST_LOCATION);
+
+ END_TEST;
+}
+
+bool gRasterizationCompletedSignal = false;
+void rasteriztionCompleted(IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task)
+{
+ gRasterizationCompletedSignal = true;
+}
+
+int UtcDaliCanvasViewRasterizeTaskP(void)
+{
+ ToolkitTestApplication application;
+
+ Dali::Toolkit::Internal::CanvasView* dummyInternalCanvasView = new Dali::Toolkit::Internal::CanvasView(Vector2(100, 100));
+ DALI_TEST_CHECK(dummyInternalCanvasView);
+
+ Dali::CanvasRenderer dummyCanvasRenderer = Dali::CanvasRenderer::New(Vector2(100, 100));
+ DALI_TEST_CHECK(dummyCanvasRenderer);
+
+ IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task = new Dali::Toolkit::Internal::CanvasRendererRasterizingTask(dummyCanvasRenderer, MakeCallback(rasteriztionCompleted));
+ DALI_TEST_CHECK(task);
+
+ END_TEST;
+}
+
+int UtcDaliCanvasViewRasterizeTaskAddTaskP(void)
+{
+ ToolkitTestApplication application;
+
+ Dali::Toolkit::Internal::CanvasView* dummyInternalCanvasView = new Dali::Toolkit::Internal::CanvasView(Vector2(100, 100));
+ DALI_TEST_CHECK(dummyInternalCanvasView);
+
+ Dali::CanvasRenderer dummyCanvasRenderer = Dali::CanvasRenderer::New(Vector2(100, 100));
+ DALI_TEST_CHECK(dummyCanvasRenderer);
+
+ IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task = new Dali::Toolkit::Internal::CanvasRendererRasterizingTask(dummyCanvasRenderer, MakeCallback(rasteriztionCompleted));
+ DALI_TEST_CHECK(task);
+
+ IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task2 = new Dali::Toolkit::Internal::CanvasRendererRasterizingTask(dummyCanvasRenderer, MakeCallback(rasteriztionCompleted));
+ DALI_TEST_CHECK(task2);
+
+ Dali::AsyncTaskManager asyncTaskManager = Dali::AsyncTaskManager::Get();
+ DALI_TEST_CHECK(asyncTaskManager);
+
+ asyncTaskManager.AddTask(task);
+ asyncTaskManager.AddTask(task2);
+
+ END_TEST;
+}
+
+int UtcDaliCanvasViewRasterizeTaskAddRemoveTaskP(void)
+{
+ ToolkitTestApplication application;
+
+ Dali::Toolkit::Internal::CanvasView* dummyInternalCanvasView = new Dali::Toolkit::Internal::CanvasView(Vector2(100, 100));
+ DALI_TEST_CHECK(dummyInternalCanvasView);
+
+ Dali::CanvasRenderer dummyCanvasRenderer = Dali::CanvasRenderer::New(Vector2(100, 100));
+ DALI_TEST_CHECK(dummyCanvasRenderer);
+
+ IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task = new Dali::Toolkit::Internal::CanvasRendererRasterizingTask(dummyCanvasRenderer, MakeCallback(rasteriztionCompleted));
+ DALI_TEST_CHECK(task);
+
+ Dali::AsyncTaskManager asyncTaskManager = Dali::AsyncTaskManager::Get();
+ DALI_TEST_CHECK(asyncTaskManager);
+
+ asyncTaskManager.AddTask(task);
+
+ asyncTaskManager.RemoveTask(task);
+
+ END_TEST;
+}
+
+PixelData CreatePixelData(unsigned int width, unsigned int height)
+{
+ unsigned int bufferSize = width * height * Pixel::GetBytesPerPixel(Pixel::RGBA8888);
+
+ unsigned char* buffer = reinterpret_cast<unsigned char*>(malloc(bufferSize));
+ PixelData pixelData = PixelData::New(buffer, bufferSize, width, height, Pixel::RGBA8888, PixelData::FREE);
+
+ return pixelData;
+}
+
+int UtcDaliCanvasViewRasterizeThreadRasterizationCompletedSignalP(void)
+{
+ ToolkitTestApplication application;
+
+ gRasterizationCompletedSignal = false;
+
+ Dali::Toolkit::CanvasView canvasView = Dali::Toolkit::CanvasView::New(Vector2(100, 100));
+
+ Dali::CanvasRenderer dummyCanvasRenderer = Dali::CanvasRenderer::New(Vector2(100, 100));
+ DALI_TEST_CHECK(dummyCanvasRenderer);
+
+ IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task = new Dali::Toolkit::Internal::CanvasRendererRasterizingTask(dummyCanvasRenderer, MakeCallback(rasteriztionCompleted));
+ DALI_TEST_CHECK(task);
+
+ Dali::AsyncTaskManager asyncTaskManager = Dali::AsyncTaskManager::Get();
+ DALI_TEST_CHECK(asyncTaskManager);
+
+ asyncTaskManager.AddTask(task);
+
+ DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
+ application.SendNotification();
+ application.Render();
+
+ DALI_TEST_EQUALS(gRasterizationCompletedSignal, true, TEST_LOCATION);
+
+ END_TEST;
+}
+
+int UtcDaliCanvasViewSetSizeAndAddDrawable(void)
+{
+ ToolkitTestApplication application;
+
+ CanvasView canvasView = CanvasView::New(Vector2(100, 100));
+ DALI_TEST_CHECK(canvasView);
+
+ application.GetScene().Add(canvasView);
+
+ canvasView.SetProperty(Actor::Property::SIZE, Vector2(300, 300));
+
+ application.SendNotification();
+ application.Render();
+
+ Dali::CanvasRenderer::Shape shape = Dali::CanvasRenderer::Shape::New();
+
+ shape.AddRect(Rect<float>(10, 10, 10, 10), Vector2(0, 0));
+
+ canvasView.AddDrawable(shape);
+
+ application.SendNotification();
+ application.Render();
+
+ DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
+
+ application.SendNotification();
+ application.Render();
+
+ END_TEST;
+}
+
+int UtcDaliCanvasViewViewBoxP(void)
+{
+ ToolkitTestApplication application;
+
+ CanvasView canvasView = CanvasView::New(Vector2(300, 300));
+ DALI_TEST_CHECK(canvasView);
+
+ application.GetScene().Add(canvasView);
+
+ canvasView.SetProperty(Actor::Property::SIZE, Vector2(300, 300));
+ canvasView.SetProperty(Toolkit::CanvasView::Property::VIEW_BOX, Vector2(100, 100));
+
+ application.SendNotification();
+ application.Render();
+
+ END_TEST;
+}
+
+int UtcDaliCanvasViewViewBoxN(void)
+{
+ ToolkitTestApplication application;
+
+ CanvasView canvasView = CanvasView::New(Vector2(300, 300));
+ DALI_TEST_CHECK(canvasView);
+
+ application.GetScene().Add(canvasView);
+
+ canvasView.SetProperty(Actor::Property::SIZE, Vector2(300, 300));
+ canvasView.SetProperty(Toolkit::CanvasView::Property::VIEW_BOX, Vector2(-999, -999));
+
+ application.SendNotification();
+ application.Render();
+
+ Vector2 viewBox = canvasView.GetProperty(Toolkit::CanvasView::Property::VIEW_BOX).Get<Vector2>();
+ DALI_TEST_EQUALS(viewBox, Vector2(-999, -999), TEST_LOCATION);
END_TEST;
}