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-ImageAtlas.cpp;h=5fe744fb8f27d208cae075296635df62158a8cd8;hp=a94585017bc211bcb257895d6bfced4502e664b3;hb=193fa3dcbfa6b46bb9d3d1c079f2ca4eb25747a1;hpb=7d13f3aa3f4ccf7c9c1c72ef182fd311663c6cd6 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp index a945850..5fe744f 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp @@ -60,6 +60,22 @@ bool IsOverlap( Rect rect1, Rect rect2 ) && rect2.y < rect1.y+rect1.height; } +static unsigned int gCountOfTestFuncCall; +class TestUploadObserver : public AtlasUploadObserver +{ +public: + TestUploadObserver() + {} + + virtual ~TestUploadObserver() + {} + + void UploadCompleted() + { + gCountOfTestFuncCall++; + } +}; + } // anonymous namespace void dali_image_atlas_startup(void) @@ -241,6 +257,100 @@ int UtcDaliImageAtlasUploadP(void) END_TEST; } +int UtcDaliImageAtlasUploadWithObserver01(void) +{ + TestApplication application; + ImageAtlas atlas = ImageAtlas::New( 200, 200 ); + + EventThreadCallback* eventTrigger = EventThreadCallback::Get(); + CallbackBase* callback = eventTrigger->GetCallback(); + + gCountOfTestFuncCall = 0; + TestUploadObserver uploadObserver; + + Vector4 textureRect1; + atlas.Upload( textureRect1, gImage_34_RGBA, ImageDimensions(34, 34), FittingMode::DEFAULT, true, &uploadObserver ); + Vector4 textureRect2; + atlas.Upload( textureRect2, gImage_50_RGBA, ImageDimensions(50, 50), FittingMode::DEFAULT, true, NULL ); + Vector4 textureRect3; + atlas.Upload( textureRect3, gImage_128_RGB, ImageDimensions(128, 128), FittingMode::DEFAULT, true, &uploadObserver ); + + // waiting until all three images are loaded and uploaded to atlas + eventTrigger->WaitingForTrigger( 3 ); + CallbackBase::Execute( *callback ); + application.SendNotification(); + application.Render(RENDER_FRAME_INTERVAL); + + // Check that TestFunc is called twice + DALI_TEST_EQUALS( gCountOfTestFuncCall, 2, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageAtlasUploadWithObserver02(void) +{ + TestApplication application; + ImageAtlas atlas = ImageAtlas::New( 200, 200 ); + + EventThreadCallback* eventTrigger = EventThreadCallback::Get(); + CallbackBase* callback = eventTrigger->GetCallback(); + + gCountOfTestFuncCall = 0; + TestUploadObserver* uploadObserver = new TestUploadObserver; + + Vector4 textureRect1; + atlas.Upload( textureRect1, gImage_34_RGBA, ImageDimensions(34, 34), FittingMode::DEFAULT, true, uploadObserver ); + Vector4 textureRect2; + atlas.Upload( textureRect2, gImage_50_RGBA, ImageDimensions(50, 50), FittingMode::DEFAULT, true, uploadObserver ); + Vector4 textureRect3; + atlas.Upload( textureRect3, gImage_128_RGB, ImageDimensions(128, 128), FittingMode::DEFAULT, true, uploadObserver ); + + // destroy the object. + delete uploadObserver; + + // waiting until all three images are loaded and uploaded to atlas + eventTrigger->WaitingForTrigger( 3 ); + CallbackBase::Execute( *callback ); + application.Render(RENDER_FRAME_INTERVAL); + application.SendNotification(); + + // Check that TestFunc is called twice + DALI_TEST_EQUALS( gCountOfTestFuncCall, 0, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageAtlasUploadWithObserver03(void) +{ + TestApplication application; + + gCountOfTestFuncCall = 0; + TestUploadObserver* uploadObserver = new TestUploadObserver; + + { + ImageAtlas atlas = ImageAtlas::New( 200, 200 ); + + Vector4 textureRect1; + atlas.Upload( textureRect1, gImage_34_RGBA, ImageDimensions(34, 34), FittingMode::DEFAULT, true, uploadObserver ); + Vector4 textureRect2; + atlas.Upload( textureRect2, gImage_50_RGBA, ImageDimensions(50, 50), FittingMode::DEFAULT, true, uploadObserver ); + Vector4 textureRect3; + atlas.Upload( textureRect3, gImage_128_RGB, ImageDimensions(128, 128), FittingMode::DEFAULT, true, uploadObserver ); + } + + //ImageAtlas is out of scope, so it will get destroyed + + application.Render(RENDER_FRAME_INTERVAL); + application.SendNotification(); + application.SendNotification(); + application.Render(RENDER_FRAME_INTERVAL); + + // Check that TestFunc is called twice + DALI_TEST_EQUALS( gCountOfTestFuncCall, 0, TEST_LOCATION ); + + END_TEST; +} + int UtcDaliImageAtlasRemove(void) { TestApplication application;