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=0bee5e58a3bf375204477b45a2a5fdd006ae328d;hp=a94585017bc211bcb257895d6bfced4502e664b3;hb=a2519d330569f4898996dfcc74b8d30433bace42;hpb=bd75dc4cad4ce62cc9206abf19280b40825b9726 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp index a945850..0bee5e5 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) @@ -191,12 +207,7 @@ int UtcDaliImageAtlasUploadP(void) Vector4 textureRect3; atlas.Upload( textureRect3, gImage_128_RGB, ImageDimensions(128, 128) ); - EventThreadCallback* eventTrigger = EventThreadCallback::Get(); - CallbackBase* callback = eventTrigger->GetCallback(); - - eventTrigger->WaitingForTrigger( 3 );// waiting until all three images are loaded - - CallbackBase::Execute( *callback ); + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 3 ), true, TEST_LOCATION ); application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); @@ -241,6 +252,94 @@ int UtcDaliImageAtlasUploadP(void) END_TEST; } +int UtcDaliImageAtlasUploadWithObserver01(void) +{ + TestApplication application; + ImageAtlas atlas = ImageAtlas::New( 200, 200 ); + + + 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 + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 3 ), true, TEST_LOCATION ); + 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 ); + + 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 + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 3 ), true, TEST_LOCATION ); + + 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; @@ -272,20 +371,19 @@ int UtcDaliImageAtlasImageView(void) ImageView imageView1 = ImageView::New( gImage_34_RGBA, ImageDimensions(34, 34) ); ImageView imageView2 = ImageView::New( gImage_50_RGBA, ImageDimensions(50, 50) ); - Stage::GetCurrent().Add( imageView1 ); - Stage::GetCurrent().Add( imageView2 ); - EventThreadCallback* eventTrigger = EventThreadCallback::Get(); - while( eventTrigger == NULL) // waiting uintil the ImageAtlas is created by ImageAtlasManager - { - usleep(10); - eventTrigger = EventThreadCallback::Get(); - } - CallbackBase* callback = eventTrigger->GetCallback(); + // ImageView doesn't do size negotiation properly: it only listens to OnSizeSet: + imageView1.SetSize( 100, 100 ); + imageView2.SetSize( 100, 100 ); + imageView1.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + imageView2.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - eventTrigger->WaitingForTrigger( 2 );// waiting until both images are loaded + application.GetPlatform().SetClosestImageSize( Vector2(34, 34) ); + Stage::GetCurrent().Add( imageView1 ); + application.GetPlatform().SetClosestImageSize( Vector2(50, 50) ); + Stage::GetCurrent().Add( imageView2 ); - CallbackBase::Execute( *callback ); + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 2 ), true, TEST_LOCATION ); application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); @@ -316,10 +414,10 @@ int UtcDaliImageAtlasImageView(void) application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); ImageView imageView3 = ImageView::New( gImage_128_RGB, ImageDimensions(100, 100) ); + application.GetPlatform().SetClosestImageSize( Vector2(100, 100) ); Stage::GetCurrent().Add( imageView3 ); - eventTrigger->WaitingForTrigger( 3 ); // waiting for the third image loaded - CallbackBase::Execute( *callback ); + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 3 ), true, TEST_LOCATION ); application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL);