X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-Image.cpp;h=a6866516b6352952ff32f056abfdb0c780023342;hb=ff364987bf3c2ef5bb2b57348747eeb784d8ba90;hp=cf192fda9dcbd3c7a733b8799d7654604c87c273;hpb=7dcb0a38005dd8c6d71e466c1ea0ec4d7d57239f;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-Image.cpp b/automated-tests/src/dali/utc-Dali-Image.cpp index cf192fd..a686651 100644 --- a/automated-tests/src/dali/utc-Dali-Image.cpp +++ b/automated-tests/src/dali/utc-Dali-Image.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -18,7 +18,8 @@ #include #include #include -#include +#include +#include #include #include @@ -36,659 +37,29 @@ void utc_dali_image_cleanup(void) static const char* gTestImageFilename = "icon_wrt.png"; - -// 1.1 -int UtcDaliImageNew01(void) -{ - TestApplication application; - - tet_infoline("UtcDaliImageNew01 - Image::New(const std::string&)"); - - // invoke default handle constructor - Image image; - - DALI_TEST_CHECK( !image ); - - // initialise handle - image = Image::New(gTestImageFilename); - - DALI_TEST_CHECK( image ); - END_TEST; -} - -// 1.2 -int UtcDaliImageNew02(void) -{ - TestApplication application; - - tet_infoline("UtcDaliImageNew02 - Image::New(const std::string&, const ImageAttributes&)"); - - // invoke default handle constructor - Image image; - - DALI_TEST_CHECK( !image ); - - // initialise handle - Dali::ImageAttributes imageAttributes; - imageAttributes.SetSize(128, 256); - imageAttributes.SetScalingMode(Dali::ImageAttributes::FitHeight); - image = Image::New(gTestImageFilename, imageAttributes); - - DALI_TEST_CHECK( image ); - END_TEST; -} - -// 1.3 -int UtcDaliImageNew03(void) -{ - TestApplication application; - - tet_infoline("UtcDaliImageNew03 - Image::New(NativeImage&)"); - - // invoke default handle constructor - Image image; - TestNativeImagePointer nativeImage = TestNativeImage::New(16, 16); - - DALI_TEST_CHECK( !image ); - - // initialise handle - image = Image::New(*(nativeImage.Get())); - - DALI_TEST_CHECK( image ); - END_TEST; -} - -// 1.4 -int UtcDaliImageNewWithPolicies01(void) -{ - TestApplication application; - - // testing delayed loading - tet_infoline("UtcDaliImageNewWithPolicies01 - Load image with LoadPolicy::OnDemand, ReleasePolicy::Never"); - DALI_TEST_CHECK( !application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - Image image = Image::New(gTestImageFilename, Image::OnDemand, Image::Never); - - DALI_TEST_CHECK( image ); - - application.SendNotification(); - application.Render(16); - - // request file loading only when actor added to stage - DALI_TEST_CHECK( !application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - ImageActor actor = ImageActor::New(image); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - // testing ReleasePolicy::Never - // fake loading image - std::vector ids; - ids.push_back( 23 ); - application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // never discard texture - Stage::GetCurrent().Remove(actor); - application.Render(16); - application.SendNotification(); - application.Render(16); - application.SendNotification(); - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - END_TEST; -} - -// 1.5 -int UtcDaliImageNewWithPolicies02(void) -{ - TestApplication application; - - // testing resource deletion when taken off stage - tet_infoline("UtcDaliImageNewWithPolicies02 - Load image with LoadPolicy::OnDemand, ReleasePolicy::Unused"); - - Image image = Image::New(gTestImageFilename, Image::OnDemand, Image::Unused); - - DALI_TEST_CHECK( image ); - - application.SendNotification(); - application.Render(16); - - // request file loading only when actor added to stage - DALI_TEST_CHECK( !application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - ImageActor actor = ImageActor::New(image); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - // testing ReleasePolicy::Unused - // fake loading image - std::vector ids; - ids.push_back( 23 ); - application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // discard texture when actor comes off stage - Stage::GetCurrent().Remove(actor); - application.Render(16); - application.SendNotification(); - application.Render(16); - application.SendNotification(); - DALI_TEST_CHECK ( application.GetGlAbstraction().CheckTextureDeleted(23) ); - END_TEST; -} - -// 1.6 -int UtcDaliImageNewWithPolicies03(void) -{ - TestApplication application; - - // load immediately -> resource deletion when taken off stage -> put actor back on stage -> load resource again - tet_infoline("UtcDaliImageNewWithPolicies03 - Load image with LoadPolicy::Immediate, ReleasePolicy::Unused"); - - Image image = Image::New(gTestImageFilename, Image::Immediate, Image::Unused); - - DALI_TEST_CHECK( image ); - - application.SendNotification(); - application.Render(16); - - // request file loading immediately - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - ImageActor actor = ImageActor::New(image); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - - // testing ReleasePolicy::Unused - // fake loading image - std::vector ids; - ids.push_back( 23 ); - application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // discard texture when actor comes off stage - Stage::GetCurrent().Remove(actor); - application.Render(16); - application.SendNotification(); - application.Render(16); - application.SendNotification(); - DALI_TEST_CHECK ( application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // check load request when actor added back to stage - application.GetPlatform().ResetTrace(); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - application.SendNotification(); - application.Render(16); - - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - END_TEST; -} - -// 1.7 -int UtcDaliImageNewWithPolicies04(void) -{ - TestApplication application; - - // load immediately, don't release texture when off stage - tet_infoline("UtcDaliImageNewWithPolicies03 - Load image with LoadPolicy::Immediate, ReleasePolicy::Never"); - - Image image = Image::New(gTestImageFilename, Image::Immediate, Image::Never); - - DALI_TEST_CHECK( image ); - - application.SendNotification(); - application.Render(16); - - // request file loading immediately - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - ImageActor actor = ImageActor::New(image); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - - // testing ReleasePolicy::Never - // fake loading image - std::vector ids; - ids.push_back( 23 ); - application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // texture is not discarded - Stage::GetCurrent().Remove(actor); - application.Render(16); - application.SendNotification(); - application.Render(16); - application.SendNotification(); - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // no load request when actor added back to stage - application.GetPlatform().ResetTrace(); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - application.SendNotification(); - application.Render(16); - - DALI_TEST_CHECK( !application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - END_TEST; -} - -// 1.8 -int UtcDaliImageNewDistanceField(void) -{ - TestApplication application; - - tet_infoline("UtcDaliImageNewDistanceField - Image::NewDistanceField(const std::string&)"); - - // invoke default handle constructor - Image image; - - DALI_TEST_CHECK( !image ); - - // initialise handle - image = Image::NewDistanceField(gTestImageFilename); - - DALI_TEST_CHECK( image ); - END_TEST; -} - -// 1.9 -int UtcDaliImageNewDistanceFieldWithPolicies01(void) -{ - TestApplication application; - - // testing delayed loading - tet_infoline("UtcDaliImageNewDistanceFieldWithPolicies01 - Load image with LoadPolicy::OnDemand, ReleasePolicy::Never"); - DALI_TEST_CHECK( !application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - Image image = Image::NewDistanceField(gTestImageFilename, Image::OnDemand, Image::Never); - - DALI_TEST_CHECK( image ); - - application.SendNotification(); - application.Render(16); - - // request file loading only when actor added to stage - DALI_TEST_CHECK( !application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - ImageActor actor = ImageActor::New(image); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - // testing ReleasePolicy::Never - // fake loading image - std::vector ids; - ids.push_back( 23 ); - application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // never discard texture - Stage::GetCurrent().Remove(actor); - application.Render(16); - application.SendNotification(); - application.Render(16); - application.SendNotification(); - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - END_TEST; -} - -// 1.10 -int UtcDaliImageNewDistanceFieldWithPolicies02(void) -{ - TestApplication application; - - // testing resource deletion when taken off stage - tet_infoline("UtcDaliImageNewDistanceFieldWithPolicies02 - Load image with LoadPolicy::OnDemand, ReleasePolicy::Unused"); - - Image image = Image::NewDistanceField(gTestImageFilename, Image::OnDemand, Image::Unused); - - DALI_TEST_CHECK( image ); - - application.SendNotification(); - application.Render(16); - - // request file loading only when actor added to stage - DALI_TEST_CHECK( !application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - ImageActor actor = ImageActor::New(image); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - // testing ReleasePolicy::Unused - // fake loading image - std::vector ids; - ids.push_back( 23 ); - application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // discard texture when actor comes off stage - Stage::GetCurrent().Remove(actor); - application.Render(16); - application.SendNotification(); - application.Render(16); - application.SendNotification(); - DALI_TEST_CHECK ( application.GetGlAbstraction().CheckTextureDeleted(23) ); - END_TEST; -} - -// 1.11 -int UtcDaliImageNewDistanceFieldWithPolicies03(void) -{ - TestApplication application; - - // load immediately -> resource deletion when taken off stage -> put actor back on stage -> load resource again - tet_infoline("UtcDaliImageNewDistanceFieldWithPolicies03 - Load image with LoadPolicy::Immediate, ReleasePolicy::Unused"); - - Image image = Image::NewDistanceField(gTestImageFilename, Image::Immediate, Image::Unused); - - DALI_TEST_CHECK( image ); - - application.SendNotification(); - application.Render(16); - - // request file loading immediately - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - ImageActor actor = ImageActor::New(image); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - - // testing ReleasePolicy::Unused - // fake loading image - std::vector ids; - ids.push_back( 23 ); - application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // discard texture when actor comes off stage - Stage::GetCurrent().Remove(actor); - application.Render(16); - application.SendNotification(); - application.Render(16); - application.SendNotification(); - DALI_TEST_CHECK ( application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // check load request when actor added back to stage - application.GetPlatform().ResetTrace(); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - application.SendNotification(); - application.Render(16); - - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - END_TEST; -} - -// 1.12 -int UtcDaliImageNewDistanceFieldWithPolicies04(void) -{ - TestApplication application; - - // load immediately, don't release texture when off stage - tet_infoline("UtcDaliImageNewDistanceFieldWithPolicies04 - Load image with LoadPolicy::Immediate, ReleasePolicy::Never"); - - Image image = Image::NewDistanceField(gTestImageFilename, Image::Immediate, Image::Never); - - DALI_TEST_CHECK( image ); - - application.SendNotification(); - application.Render(16); - - // request file loading immediately - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - ImageActor actor = ImageActor::New(image); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - - // testing ReleasePolicy::Never - // fake loading image - std::vector ids; - ids.push_back( 23 ); - application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // texture is not discarded - Stage::GetCurrent().Remove(actor); - application.Render(16); - application.SendNotification(); - application.Render(16); - application.SendNotification(); - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); - - // no load request when actor added back to stage - application.GetPlatform().ResetTrace(); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - application.SendNotification(); - application.Render(16); - - DALI_TEST_CHECK( !application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - END_TEST; -} - -// 1.13 -int UtcDaliImageNewDistanceFieldWithAttributes(void) +namespace { - TestApplication application; - - tet_infoline("UtcDaliImageNewDistanceFieldWithAttributes - Image::NewDistanceField(const std::string&, const ImageAttributes& attributes)"); - - // invoke default handle constructor - Image image; - Dali::ImageAttributes imageAttributes = Dali::ImageAttributes::NewDistanceField(6.0f, 12); - - DALI_TEST_CHECK( !image ); - - // initialise handle - image = Image::NewDistanceField(gTestImageFilename, imageAttributes); - - DALI_TEST_CHECK( image ); - END_TEST; -} - -// 1.14 -int UtcDaliImageNewDistanceFieldWithAttrandPol(void) +void LoadBitmapResource(TestPlatformAbstraction& platform) { - TestApplication application; - - tet_infoline("UtcDaliImageNewDistanceFieldWithAttrandPol - Load image with LoadPolicy::OnDemand, ReleasePolicy::Unused"); - - Dali::ImageAttributes imageAttributes = Dali::ImageAttributes::NewDistanceField(6.0f, 12); - - Image image = Image::NewDistanceField(gTestImageFilename, imageAttributes, Image::OnDemand, Image::Unused); - - DALI_TEST_CHECK( image ); - - application.SendNotification(); - application.Render(16); - - // request file loading only when actor added to stage - DALI_TEST_CHECK( !application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - ImageActor actor = ImageActor::New(image); - - Stage::GetCurrent().Add(actor); - - application.SendNotification(); - application.Render(16); - - DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); - - // testing ReleasePolicy::Unused - // fake loading image - std::vector ids; - ids.push_back( 23 ); - application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); + 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, 80, 80, 80, 80); if(request) { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); + platform.SetResourceLoaded(request->GetId(), request->GetType()->id, resource); } - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK ( !application.GetGlAbstraction().CheckTextureDeleted(23) ); +} - // discard texture when actor comes off stage - Stage::GetCurrent().Remove(actor); - application.Render(16); - application.SendNotification(); - application.Render(16); - application.SendNotification(); - DALI_TEST_CHECK ( application.GetGlAbstraction().CheckTextureDeleted(23) ); - END_TEST; } -// 1.15 int UtcDaliImageDownCast(void) { TestApplication application; tet_infoline("Testing Dali::Image::DownCast()"); - Image image = Image::New(gTestImageFilename); + Image image = ResourceImage::New(gTestImageFilename); BaseHandle object(image); @@ -707,146 +78,34 @@ int UtcDaliImageDownCast(void) END_TEST; } -// 1.16 -int UtcDaliImageGetImageSize(void) +int UtcDaliImageGetWidthHeight(void) { TestApplication application; - TestPlatformAbstraction& platform = application.GetPlatform(); - tet_infoline("UtcDaliImageGetImageSize - Image::GetImageSize()"); + tet_infoline("UtcDaliImageGetWidthHeight - Image::GetWidth() & Image::GetHeight"); Vector2 testSize(8.0f, 16.0f); - platform.SetClosestImageSize(testSize); - - Vector2 size = Image::GetImageSize(gTestImageFilename); - - DALI_TEST_CHECK( application.GetPlatform().GetTrace().FindMethod("GetClosestImageSize")); - DALI_TEST_EQUALS( size, testSize, TEST_LOCATION); - END_TEST; -} - -// 1.17 -int UtcDaliImageGetFilename(void) -{ - TestApplication application; - - tet_infoline("UtcDaliImageGetFilename"); - - // invoke default handle constructor - Image image; - - DALI_TEST_CHECK( !image ); - - // initialise handle - image = Image::New(gTestImageFilename); - - DALI_TEST_EQUALS( image.GetFilename(), gTestImageFilename, TEST_LOCATION); - END_TEST; -} - -// 1.18 -int UtcDaliImageGetLoadingState01(void) -{ - TestApplication application; - tet_infoline("UtcDaliImageGetLoadingState01"); - - Image image = Image::New(gTestImageFilename); - DALI_TEST_CHECK(image.GetLoadingState() == ResourceLoading); - application.SendNotification(); - application.Render(16); - - // simulate load success - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } - application.Render(16); - application.SendNotification(); - - // Test state == ResourceLoadingSucceeded - DALI_TEST_CHECK(image.GetLoadingState() == ResourceLoadingSucceeded); - END_TEST; -} - -// 1.19 -int UtcDaliImageGetLoadingState02(void) -{ - TestApplication application; - - tet_infoline("UtcDaliImageGetLoadingState02"); - - // invoke default handle constructor - Image image; - - DALI_TEST_CHECK( !image ); - - // initialise handle - image = Image::New(gTestImageFilename); - - // Test state == ResourceLoading - DALI_TEST_CHECK(image.GetLoadingState() == ResourceLoading); - application.SendNotification(); - application.Render(16); - - // simulate load failure - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - if(request) - { - application.GetPlatform().SetResourceLoadFailed(request->GetId(), Integration::FailureUnknown); - } - application.Render(16); - application.SendNotification(); - - // Test state == ResourceLoadingFailed - DALI_TEST_CHECK(image.GetLoadingState() == ResourceLoadingFailed); - END_TEST; -} - -// 1.20 -int UtcDaliImageGetReleasePolicy(void) -{ - TestApplication application; - - tet_infoline("UtcDaliImageGetReleasePolicy"); - - Image image = Image::New(gTestImageFilename, Image::Immediate, Image::Unused); - - DALI_TEST_CHECK( image ); - - DALI_TEST_CHECK( Image::Unused == image.GetReleasePolicy() ); - - END_TEST; -} - -// 1.21 -int UtcDaliImageGetLoadPolicy(void) -{ - TestApplication application; + application.GetPlatform().SetClosestImageSize(testSize); + Image image1 = ResourceImage::New(gTestImageFilename); + DALI_TEST_EQUALS( image1.GetWidth(), testSize.width, TEST_LOCATION ); + DALI_TEST_EQUALS( image1.GetHeight(), testSize.height, TEST_LOCATION ); - tet_infoline("UtcDaliImageGetLoadPolicy"); + Image image2 = ResourceImage::New( gTestImageFilename, ImageDimensions(128, 256), FittingMode::SCALE_TO_FILL, SamplingMode::DEFAULT ); + DALI_TEST_EQUALS( image2.GetWidth(), 128u, TEST_LOCATION ); + DALI_TEST_EQUALS( image2.GetHeight(), 256u, TEST_LOCATION ); - Image image = Image::New(gTestImageFilename, Image::OnDemand, Image::Never); + Image image3 = FrameBufferImage::New(16, 32); + DALI_TEST_EQUALS(image3.GetWidth(), 16u, TEST_LOCATION); + DALI_TEST_EQUALS(image3.GetHeight(), 32u, TEST_LOCATION); - DALI_TEST_CHECK( image ); + TestNativeImagePointer nativeImage = TestNativeImage::New(32, 64); + Image image4 = NativeImage::New(*(nativeImage.Get())); + DALI_TEST_EQUALS(image4.GetWidth(), 32u, TEST_LOCATION); + DALI_TEST_EQUALS(image4.GetHeight(), 64u, TEST_LOCATION); - DALI_TEST_CHECK( Image::OnDemand == image.GetLoadPolicy()); END_TEST; } -static bool SignalLoadFlag = false; - -static void SignalLoadHandler(Image image) -{ - tet_infoline("Received image load finished signal"); - - SignalLoadFlag = true; -} - static bool SignalUploadedFlag = false; static void SignalUploadedHandler(Image image) @@ -856,46 +115,17 @@ static void SignalUploadedHandler(Image image) SignalUploadedFlag = true; } -// 1.22 -int UtcDaliImageSignalLoadingFinished(void) -{ - TestApplication application; - - tet_infoline("UtcDaliImageSignalLoadingFinished"); - - SignalLoadFlag = false; - - Image image = Image::New(gTestImageFilename); - - image.LoadingFinishedSignal().Connect( SignalLoadHandler ); - application.SendNotification(); - application.Render(16); - - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, Integration::ResourcePointer(Integration::Bitmap::New(Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true))); - } - - application.Render(16); - application.SendNotification(); - - DALI_TEST_CHECK( SignalLoadFlag == true ); - END_TEST; -} - -// 1.23 int UtcDaliImageSignalUploaded(void) { TestApplication application; + TestPlatformAbstraction& platform = application.GetPlatform(); tet_infoline("UtcDaliImageSignalUploaded - Image::SignalUploaded()"); // set up image in fake platform abstraction Vector2 testSize(80.0f, 80.0f); - application.GetPlatform().SetClosestImageSize(testSize); + platform.SetClosestImageSize(testSize); - Image image = Image::New(gTestImageFilename); - image.LoadingFinishedSignal().Connect( SignalLoadHandler ); + ResourceImage image = ResourceImage::New(gTestImageFilename); // Load image application.SendNotification(); @@ -903,23 +133,24 @@ int UtcDaliImageSignalUploaded(void) std::vector ids; ids.push_back( 23 ); application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); + 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, 80, 80, 80, 80); + if(request) { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); + platform.SetResourceLoaded(request->GetId(), request->GetType()->id, resource); } application.Render(16); application.SendNotification(); image.UploadedSignal().Connect( SignalUploadedHandler ); - Dali::ImageActor imageActor = ImageActor::New(image); - Stage::GetCurrent().Add(imageActor); - imageActor.SetSize(80, 80); - imageActor.SetVisible(true); + Dali::Actor actor = CreateRenderableActor( image ); + Stage::GetCurrent().Add( actor ); + actor.SetSize(80, 80); + actor.SetVisible(true); application.SendNotification(); application.Render(0); @@ -932,20 +163,25 @@ int UtcDaliImageSignalUploaded(void) application.Render(16); application.SendNotification(); - DALI_TEST_CHECK( SignalLoadFlag == true ); DALI_TEST_CHECK( SignalUploadedFlag == true ); - SignalLoadFlag = false; SignalUploadedFlag = false; image.Reload(); bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 160, 160, 160, 160); + // image loading application.SendNotification(); application.Render(16); application.Render(16); application.SendNotification(); - DALI_TEST_CHECK( SignalLoadFlag == true ); + request = platform.GetRequest(); + if(request) + { + platform.SetResourceLoaded(request->GetId(), request->GetType()->id, resource); + } + + //upload application.Render(16); application.SendNotification(); application.Render(16); @@ -954,15 +190,13 @@ int UtcDaliImageSignalUploaded(void) END_TEST; } - -// 1.24 int UtcDaliImageDiscard01(void) { TestApplication application; tet_infoline("UtcDaliImageDiscard01 - no actors"); { - Image image = Image::New(gTestImageFilename); + Image image = ResourceImage::New(gTestImageFilename); // Load image application.SendNotification(); @@ -970,14 +204,8 @@ int UtcDaliImageDiscard01(void) std::vector ids; ids.push_back( 23 ); application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } + TestPlatformAbstraction& platform = application.GetPlatform(); + LoadBitmapResource( platform ); application.Render(16); application.SendNotification(); } // Drop image handle @@ -994,18 +222,18 @@ int UtcDaliImageDiscard01(void) END_TEST; } -// 1.25 int UtcDaliImageDiscard02(void) { TestApplication application; + application.GetGlAbstraction().EnableTextureCallTrace( true ); tet_infoline("UtcDaliImageDiscard02 - one actor, tests TextureCache::DiscardTexture"); { { - ImageActor actor; + Actor actor; { - Image image = Image::New(gTestImageFilename); - actor = ImageActor::New(image); + Image image = ResourceImage::New(gTestImageFilename, ImageDimensions( 40, 30 ) ); + actor = CreateRenderableActor(image); Stage::GetCurrent().Add(actor); application.SendNotification(); @@ -1015,16 +243,11 @@ int UtcDaliImageDiscard02(void) ids.push_back( 23 ); application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } + TestPlatformAbstraction& platform = application.GetPlatform(); + LoadBitmapResource( platform ); application.Render(16); application.SendNotification(); + DALI_TEST_CHECK( application.GetGlAbstraction().GetTextureTrace().FindMethod("BindTexture") ); } // lose image handle, actor should still keep one application.SendNotification(); application.Render(16); @@ -1048,14 +271,16 @@ int UtcDaliImageDiscard02(void) END_TEST; } -// 1.26 int UtcDaliImageDiscard03(void) { TestApplication application; tet_infoline("UtcDaliImageDiscard03 - one actor, tests TextureCache::RemoveObserver"); - Image image = Image::New(gTestImageFilename); - ImageActor actor = ImageActor::New(image); + const Vector2 closestImageSize( 1, 1); + application.GetPlatform().SetClosestImageSize(closestImageSize); + + Image image = ResourceImage::New(gTestImageFilename); + Actor actor = CreateRenderableActor(image); Stage::GetCurrent().Add(actor); application.SendNotification(); @@ -1065,14 +290,8 @@ int UtcDaliImageDiscard03(void) ids.push_back( 23 ); application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::ResourceRequest* request = application.GetPlatform().GetRequest(); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); - Integration::ResourcePointer resource(bitmap); - bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); - if(request) - { - application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resource); - } + TestPlatformAbstraction& platform = application.GetPlatform(); + LoadBitmapResource( platform ); application.Render(16); application.SendNotification(); application.SendNotification(); @@ -1093,3 +312,79 @@ int UtcDaliImageDiscard03(void) END_TEST; } + +int UtcDaliImageContextLoss(void) +{ + TestApplication application; // Default config: DALI_DISCARDS_ALL_DATA + + const Vector2 closestImageSize( 80, 80 ); + TestPlatformAbstraction& platform = application.GetPlatform(); + TestGlAbstraction& glAbstraction = application.GetGlAbstraction(); + + platform.SetClosestImageSize(closestImageSize); + + tet_infoline("UtcDaliImageContextLoss - Load image with LoadPolicy::Immediate, bitmap discard. Check that the image is re-requested on context regain\n"); + + Image image = ResourceImage::New("image.png"); + + DALI_TEST_CHECK( image ); + + application.SendNotification(); + application.Render(16); + + // request file loading immediately + + DALI_TEST_CHECK( platform.WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); + Actor actor = CreateRenderableActor(image); + Stage::GetCurrent().Add(actor); + + application.SendNotification(); + application.Render(16); + + TraceCallStack& textureTrace = glAbstraction.GetTextureTrace(); + textureTrace.Enable(true); + + std::vector ids; + ids.push_back( 23 ); + glAbstraction.SetNextTextureIds( ids ); + + LoadBitmapResource(platform); + + application.Render(16); + application.SendNotification(); + + DALI_TEST_CHECK( textureTrace.FindMethod("GenTextures") ); + + textureTrace.Reset(); + textureTrace.Enable(true); + platform.ResetTrace(); + platform.EnableTrace(true); + + // Lose & regain context (in render 'thread') + application.ResetContext(); + + application.GetCore().RecoverFromContextLoss(); // start the recovery process + application.SendNotification(); + + // Run update/render loop + application.Render(16); + application.SendNotification(); + + // Expect new load request + DALI_TEST_CHECK( platform.WasCalled(TestPlatformAbstraction::LoadResourceFunc) ); + + // Finish loading image + LoadBitmapResource(platform); + ids.clear(); + ids.push_back( 57 ); + glAbstraction.SetNextTextureIds(ids); + + // Run update/render loop + application.Render(16); + application.SendNotification(); + + // Expect new GenTextures + DALI_TEST_CHECK( textureTrace.FindMethod("GenTextures") ); + + END_TEST; +}