X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-SuperBlurView.cpp;h=26d72f1e196ebfed5d0f54a1ae572ac6246e55a6;hp=3c121c067b915da67f67e04b4033c0968f04ace7;hb=HEAD;hpb=c125573992c196f15ece50589ae80efed63c8870 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-SuperBlurView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-SuperBlurView.cpp index 3c121c0..3a0012e 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-SuperBlurView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-SuperBlurView.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 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. @@ -15,16 +15,16 @@ * */ -#include #include +#include // Need to override adaptor classes for toolkit test harness, so include // test harness headers before dali headers. #include -#include #include #include +#include using namespace Dali; using namespace Dali::Toolkit; @@ -39,14 +39,13 @@ void utc_dali_toolkit_super_blur_view_cleanup(void) test_return_value = TET_PASS; } - namespace { -const int BLUR_LEVELS = 3; -const int RENDER_FRAME_INTERVAL = 16; -const char* TEST_IMAGE_FILE_NAME("image.png"); -static bool gObjectCreatedCallBackCalled; -static void TestCallback(BaseHandle handle) +const int BLUR_LEVELS = 3; +const int RENDER_FRAME_INTERVAL = 16; +static const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg"; +static bool gObjectCreatedCallBackCalled; +static void TestCallback(BaseHandle handle) { gObjectCreatedCallBackCalled = true; } @@ -64,7 +63,7 @@ int Wait(ToolkitTestApplication& application, int duration = 0) { int time = 0; - for(int i = 0; i <= ( duration / RENDER_FRAME_INTERVAL); i++) + for(int i = 0; i <= (duration / RENDER_FRAME_INTERVAL); i++) { application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); @@ -74,57 +73,39 @@ int Wait(ToolkitTestApplication& application, int duration = 0) return time; } -Image CreateSolidColorImage( ToolkitTestApplication& application, const Vector4& color, unsigned int width, unsigned int height ) +Texture CreateSolidColorTexture(ToolkitTestApplication& application, const Vector4& color, unsigned int width, unsigned int height) { - BufferImage imageData = BufferImage::New( width, height, Pixel::RGBA8888 ); + unsigned int size = width * height; + uint8_t* pixbuf = new uint8_t[size * 4]; - // Create the image - PixelBuffer* pixbuf = imageData.GetBuffer(); - unsigned int size = width * height; + for(size_t i = 0; i < size; i++) + { + pixbuf[i * 4 + 0] = 0xFF * color.r; + pixbuf[i * 4 + 1] = 0xFF * color.g; + pixbuf[i * 4 + 2] = 0xFF * color.b; + pixbuf[i * 4 + 3] = 0xFF * color.a; + } - for( size_t i = 0; i < size; i++ ) - { - pixbuf[i*4+0] = 0xFF * color.r; - pixbuf[i*4+1] = 0xFF * color.g; - pixbuf[i*4+2] = 0xFF * color.b; - pixbuf[i*4+3] = 0xFF * color.a; - } - imageData.Update(); + PixelData pixels = PixelData::New(pixbuf, size, width, height, Pixel::RGBA8888, PixelData::ReleaseFunction::DELETE_ARRAY); - application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE ); - application.SendNotification(); - application.Render(RENDER_FRAME_INTERVAL); - application.Render(RENDER_FRAME_INTERVAL); - application.SendNotification(); + Texture texture = Texture::New(TextureType::TEXTURE_2D, pixels.GetPixelFormat(), pixels.GetWidth(), pixels.GetHeight()); + texture.Upload(pixels, 0, 0, 0, 0, pixels.GetWidth(), pixels.GetHeight()); - return imageData; -} - -void LoadBitmapResource(TestPlatformAbstraction& platform, int width, int height) -{ - Integration::ResourceRequest* request = platform.GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, width, height, width, height); - - if(request) - { - platform.SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } + return texture; } class SignalHandler : public Dali::ConnectionTracker { public: - SignalHandler() : - mCalls( 0 ) + SignalHandler() + : mCalls(0) { } - void Callback( SuperBlurView handle ) + void Callback(SuperBlurView handle) { mCalls++; - tet_infoline( "Signal called" ); + tet_infoline("Signal called"); } unsigned int GetCalls() const @@ -133,11 +114,10 @@ public: } private: - unsigned int mCalls; ///< Keeps track of how many times the signal has been called. + unsigned int mCalls; ///< Keeps track of how many times the signal has been called. }; -}//namespace - +} //namespace int UtcDaliSuperBlurViewNew(void) { @@ -147,32 +127,32 @@ int UtcDaliSuperBlurViewNew(void) // Test default constructor. SuperBlurView blurView; - DALI_TEST_CHECK( !blurView ); + DALI_TEST_CHECK(!blurView); // Test object creation - blurView = SuperBlurView::New( BLUR_LEVELS ); - DALI_TEST_CHECK( blurView ); + blurView = SuperBlurView::New(BLUR_LEVELS); + DALI_TEST_CHECK(blurView); //Additional check to ensure object is created by checking if it's registered - ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry(); - DALI_TEST_CHECK( registry ); + ObjectRegistry registry = application.GetCore().GetObjectRegistry(); + DALI_TEST_CHECK(registry); gObjectCreatedCallBackCalled = false; - registry.ObjectCreatedSignal().Connect( &TestCallback ); + registry.ObjectCreatedSignal().Connect(&TestCallback); { - SuperBlurView blurView = SuperBlurView::New( BLUR_LEVELS ); + SuperBlurView blurView = SuperBlurView::New(BLUR_LEVELS); } - DALI_TEST_CHECK( gObjectCreatedCallBackCalled ); + DALI_TEST_CHECK(gObjectCreatedCallBackCalled); // Test copy constructor - SuperBlurView blurViewCopy2( blurView ); - DALI_TEST_CHECK( blurViewCopy2 ); + SuperBlurView blurViewCopy2(blurView); + DALI_TEST_CHECK(blurViewCopy2); // Test down cast Actor actorView; - actorView = blurView; - SuperBlurView downCastView = SuperBlurView::DownCast( actorView ); - DALI_TEST_CHECK( downCastView ); + actorView = blurView; + SuperBlurView downCastView = SuperBlurView::DownCast(actorView); + DALI_TEST_CHECK(downCastView); END_TEST; } @@ -184,50 +164,105 @@ int UtcDaliSuperBlurViewCreate(void) // Test default constructor. SuperBlurView blurView; - DALI_TEST_CHECK( !blurView ); + DALI_TEST_CHECK(!blurView); // Test object creation TypeInfo type = TypeRegistry::Get().GetTypeInfo("SuperBlurView"); - if( type ) + if(type) { Dali::BaseHandle handle = type.CreateInstance(); - if( handle ) + if(handle) { - blurView = Dali::Toolkit::SuperBlurView::DownCast( handle ); + blurView = Dali::Toolkit::SuperBlurView::DownCast(handle); } } - DALI_TEST_CHECK( blurView ); + DALI_TEST_CHECK(blurView); END_TEST; } +int UtcDaliSuperBlurViewSetTexture(void) +{ + ToolkitTestApplication application; -int UtcDaliSuperBlurViewSetImage(void) + tet_infoline(" UtcDaliSuperBlurViewSetTexture "); + + SuperBlurView blurView = SuperBlurView::New(BLUR_LEVELS); + blurView.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + + Texture inputTexture = CreateSolidColorTexture(application, Color::GREEN, 50, 50); + blurView.SetTexture(inputTexture); + // start multiple guassian blur call, each guassian blur creates two render tasks + DALI_TEST_CHECK(application.GetScene().GetRenderTaskList().GetTaskCount() == 1 + BLUR_LEVELS * 2); + + { + // create renderers for the original image and each blurred image + application.GetScene().Add(blurView); + Wait(application); + DALI_TEST_EQUALS(blurView.GetRendererCount(), BLUR_LEVELS + 1, TEST_LOCATION); + + Wait(application); + application.GetScene().Remove(blurView); + } + + END_TEST; +} + +int UtcDaliSuperBlurViewSetTexture2(void) { ToolkitTestApplication application; + Integration::Scene stage = application.GetScene(); + + tet_infoline(" UtcDaliSuperBlurViewSetTexture2 - test setting a second texture "); + + SuperBlurView blurView = SuperBlurView::New(BLUR_LEVELS); + blurView.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + + tet_infoline("Call SetTexture and add blurview to stage"); + Texture inputTexture = CreateSolidColorTexture(application, Color::GREEN, 50, 50); + blurView.SetTexture(inputTexture); - tet_infoline(" UtcDaliSuperBlurViewSetImage "); + // start multiple guassian blur call, each guassian blur creates two render tasks + DALI_TEST_CHECK(application.GetScene().GetRenderTaskList().GetTaskCount() == 1 + BLUR_LEVELS * 2); + { + // create renderers for the original image and each blurred image + stage.Add(blurView); + Wait(application); + DALI_TEST_EQUALS(blurView.GetRendererCount(), BLUR_LEVELS + 1, TEST_LOCATION); + + tet_infoline("Wait for a second to allow blur to finish"); + Wait(application, 1000); + + tet_infoline("Remove from stage"); + application.GetScene().Remove(blurView); + } - SuperBlurView blurView = SuperBlurView::New( BLUR_LEVELS ); - blurView.SetSize( 100.f, 100.f ); + tet_infoline("Test that there are no render tasks remaining"); + DALI_TEST_EQUALS(blurView.GetRendererCount(), 0, TEST_LOCATION); - Image inputImage = CreateSolidColorImage( application, Color::GREEN, 50, 50 ); - blurView.SetImage( inputImage ); + tet_infoline("Call SetTexture a second time and add blurview back to stage"); + Texture inputTexture2 = CreateSolidColorTexture(application, Color::CYAN, 50, 50); + blurView.SetTexture(inputTexture2); // start multiple guassian blur call, each guassian blur creates two render tasks - DALI_TEST_CHECK( Stage::GetCurrent().GetRenderTaskList().GetTaskCount() == 1+BLUR_LEVELS*2); + DALI_TEST_CHECK(application.GetScene().GetRenderTaskList().GetTaskCount() == 1 + BLUR_LEVELS * 2); { - // create image renderers for the original image and each blurred image - Stage::GetCurrent().Add( blurView ); + // create renderers for the original image and each blurred image + application.GetScene().Add(blurView); Wait(application); - DALI_TEST_EQUALS(blurView.GetRendererCount(), BLUR_LEVELS+1, TEST_LOCATION ); + DALI_TEST_EQUALS(blurView.GetRendererCount(), BLUR_LEVELS + 1, TEST_LOCATION); - application.SendNotification(); - application.Render(); - Stage::GetCurrent().Remove( blurView ); + tet_infoline("Wait for a second to allow blur to finish"); + Wait(application, 1000); + + tet_infoline("Remove from stage"); + application.GetScene().Remove(blurView); } + tet_infoline("Test that there are no render tasks remaining"); + DALI_TEST_EQUALS(blurView.GetRendererCount(), 0, TEST_LOCATION); + END_TEST; } @@ -237,85 +272,58 @@ int UtcDaliSuperBlurViewSetProperty(void) tet_infoline(" UtcDaliSuperBlurViewSetProperty "); - SuperBlurView blurView = SuperBlurView::New( BLUR_LEVELS ); - // create image renderers for the original image and each blurred image - Stage::GetCurrent().Add( blurView ); - blurView.SetSize( 100.f, 100.f ); - - tet_infoline(" Set property map. Set height and width large enough to avoid atlassing"); - int width(512); - int height(513); - LoadBitmapResource( application.GetPlatform(), width, height ); - - Property::Map propertyMap; - propertyMap["filename"] = TEST_IMAGE_FILE_NAME ; - propertyMap["width"] = width; - propertyMap["height"] = height; + SuperBlurView blurView = SuperBlurView::New(BLUR_LEVELS); + // create renderers for the original image and each blurred image + application.GetScene().Add(blurView); + blurView.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); // Will create ResourceImage - blurView.SetProperty(SuperBlurView::Property::IMAGE, propertyMap); + blurView.SetProperty(SuperBlurView::Property::IMAGE_URL, TEST_IMAGE_FILE_NAME); Wait(application); // start multiple guassian blur call, each guassian blur creates two render tasks - DALI_TEST_CHECK( Stage::GetCurrent().GetRenderTaskList().GetTaskCount() == 1+BLUR_LEVELS*2); + + unsigned int count = application.GetScene().GetRenderTaskList().GetTaskCount(); + DALI_TEST_CHECK(count == 1 + BLUR_LEVELS * 2); Wait(application); END_TEST; } - int UtcDaliSuperBlurViewGetProperty(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliSuperBlurViewSetProperty "); - SuperBlurView blurView = SuperBlurView::New( BLUR_LEVELS ); - blurView.SetSize( 100.f, 100.f ); + SuperBlurView blurView = SuperBlurView::New(BLUR_LEVELS); + blurView.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); - tet_infoline(" Set property map."); - int width(512); - int height(513); // Value large enough to avoid future atlassing - LoadBitmapResource( application.GetPlatform(), width, height ); - - Property::Map propertyMap; - propertyMap["filename"] = TEST_IMAGE_FILE_NAME ; - propertyMap["width"] = width; - propertyMap["height"] = height; - - // Will create ResourceImage - blurView.SetProperty(SuperBlurView::Property::IMAGE, propertyMap); + blurView.SetProperty(SuperBlurView::Property::IMAGE_URL, TEST_IMAGE_FILE_NAME); Wait(application); - // create image renderers for the original image and each blurred image - Stage::GetCurrent().Add( blurView ); + // create renderers for the original image and each blurred image + application.GetScene().Add(blurView); - Property::Value imageProperty = blurView.GetProperty(SuperBlurView::Property::IMAGE); - Property::Map* map = imageProperty.GetMap(); - DALI_TEST_CHECK( map != NULL ); - if( map ) - { - Property::Map& mapRef = *map; - DALI_TEST_EQUALS( mapRef["filename"], TEST_IMAGE_FILE_NAME, TEST_LOCATION ); - } + std::string imageUrl = blurView.GetProperty(SuperBlurView::Property::IMAGE_URL); + DALI_TEST_EQUALS(imageUrl, TEST_IMAGE_FILE_NAME, TEST_LOCATION); END_TEST; } - int UtcDaliSuperBlurViewSetGetBlurStrength(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliSuperBlurViewSetGetBlurStrength "); - SuperBlurView blurView = SuperBlurView::New( BLUR_LEVELS ); - DALI_TEST_EQUALS(blurView.GetCurrentBlurStrength(), 0.f, TEST_LOCATION ); + SuperBlurView blurView = SuperBlurView::New(BLUR_LEVELS); + DALI_TEST_EQUALS(blurView.GetCurrentBlurStrength(), 0.f, TEST_LOCATION); - blurView.SetBlurStrength( 0.65f ); + blurView.SetBlurStrength(0.65f); Wait(application); - DALI_TEST_EQUALS(blurView.GetCurrentBlurStrength(), 0.65f, TEST_LOCATION ); + DALI_TEST_EQUALS(blurView.GetCurrentBlurStrength(), 0.65f, TEST_LOCATION); END_TEST; } @@ -325,42 +333,42 @@ int UtcDaliSuperBlurViewGetBlurStrengthPropertyIndex(void) tet_infoline(" UtcDaliSuperBlurViewGetBlurStrengthPropertyIndex "); - SuperBlurView blurView = SuperBlurView::New( BLUR_LEVELS ); + SuperBlurView blurView = SuperBlurView::New(BLUR_LEVELS); Property::Index blurPropertyIdx = blurView.GetBlurStrengthPropertyIndex(); float blurStrength; - (blurView.GetProperty( blurPropertyIdx )).Get(blurStrength); - DALI_TEST_EQUALS(blurStrength, 0.f, TEST_LOCATION ); + (blurView.GetProperty(blurPropertyIdx)).Get(blurStrength); + DALI_TEST_EQUALS(blurStrength, 0.f, TEST_LOCATION); - blurView.SetBlurStrength( 0.65f ); + blurView.SetBlurStrength(0.65f); Wait(application); - (blurView.GetProperty( blurPropertyIdx )).Get(blurStrength); - DALI_TEST_EQUALS(blurStrength, 0.65f, TEST_LOCATION ); + (blurView.GetProperty(blurPropertyIdx)).Get(blurStrength); + DALI_TEST_EQUALS(blurStrength, 0.65f, TEST_LOCATION); END_TEST; } -int UtcDaliSuperBlurViewGetBlurredImage(void) +int UtcDaliSuperBlurViewGetBlurredTexture(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliSuperBlurViewGetBlurredImage" ); + tet_infoline("UtcDaliSuperBlurViewGetBlurredTexture"); - SuperBlurView blurView = SuperBlurView::New( BLUR_LEVELS ); - blurView.SetSize( 100.f,100.f ); - Image inputImage = CreateSolidColorImage( application, Color::GREEN, 100, 100 ); - blurView.SetImage( inputImage ); + SuperBlurView blurView = SuperBlurView::New(BLUR_LEVELS); + blurView.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + Texture inputTexture = CreateSolidColorTexture(application, Color::GREEN, 100, 100); + blurView.SetTexture(inputTexture); Wait(application, 200); // Make sure all the gaussian blur finished - Image image1 = blurView.GetBlurredImage( 1 ); - DALI_TEST_CHECK( image1 ); + Texture texture1 = blurView.GetBlurredTexture(1); + DALI_TEST_CHECK(texture1); - Image image2 = blurView.GetBlurredImage( 2 ); - DALI_TEST_EQUALS( image2.GetWidth(), 25u, TEST_LOCATION ); - DALI_TEST_EQUALS( image2.GetHeight(), 25u, TEST_LOCATION ); + Texture texture2 = blurView.GetBlurredTexture(2); + DALI_TEST_EQUALS(texture2.GetWidth(), 25u, TEST_LOCATION); + DALI_TEST_EQUALS(texture2.GetHeight(), 25u, TEST_LOCATION); - Image image3 = blurView.GetBlurredImage( 3 ); - DALI_TEST_CHECK( FrameBufferImage::DownCast( image3 ) ); + Texture texture3 = blurView.GetBlurredTexture(3); + DALI_TEST_CHECK(texture3); END_TEST; } @@ -371,22 +379,22 @@ int UtcDaliSuperBlurViewBlurSignal(void) tet_infoline(" UtcDaliSuperBlurViewSignal "); - SuperBlurView blurView = SuperBlurView::New( BLUR_LEVELS ); - blurView.SetSize( 100.f, 100.f ); + SuperBlurView blurView = SuperBlurView::New(BLUR_LEVELS); + blurView.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); - Image inputImage = CreateSolidColorImage( application, Color::GREEN, 50, 50 ); - blurView.SetImage( inputImage ); + Texture inputTexture = CreateSolidColorTexture(application, Color::GREEN, 50, 50); + blurView.SetTexture(inputTexture); // start multiple guassian blur call, each guassian blur creates two render tasks - DALI_TEST_CHECK( Stage::GetCurrent().GetRenderTaskList().GetTaskCount() == 1+BLUR_LEVELS*2); + DALI_TEST_CHECK(application.GetScene().GetRenderTaskList().GetTaskCount() == 1 + BLUR_LEVELS * 2); SignalHandler signalHandler; blurView.BlurFinishedSignal().Connect(&signalHandler, &SignalHandler::Callback); - // create image renderers for the original image and each blurred image - Stage::GetCurrent().Add( blurView ); + // create renderers for the original image and each blurred image + application.GetScene().Add(blurView); Wait(application, 1000); - DALI_TEST_EQUALS(blurView.GetRendererCount(), BLUR_LEVELS+1, TEST_LOCATION ); + DALI_TEST_EQUALS(blurView.GetRendererCount(), BLUR_LEVELS + 1, TEST_LOCATION); //DALI_TEST_EQUALS(signalHandler.GetCalls(), 1, TEST_LOCATION); END_TEST;