X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-CameraActor.cpp;h=415f6cfd8fd07b5a24eb6083b75561d02ac6ec27;hb=e08e2992259823c5f9832ad959ffa510b0445a6c;hp=6ef4cb88ac3fe448bae844b00e5a363fae6b923e;hpb=9d3d4965d110517e962a608ec6413612a9e57ccc;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-CameraActor.cpp b/automated-tests/src/dali/utc-Dali-CameraActor.cpp index 6ef4cb8..415f6cf 100644 --- a/automated-tests/src/dali/utc-Dali-CameraActor.cpp +++ b/automated-tests/src/dali/utc-Dali-CameraActor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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,10 @@ #include #include +#include #include +#include + #include "dali-test-suite-utils/dali-test-suite-utils.h" @@ -34,9 +37,9 @@ void camera_actor_test_cleanup(void) test_return_value = TET_PASS; } - namespace { + const float FLOAT_EPSILON = 0.001f; const float TEST_ASPECT_RATIO = 0.123f; const float TEST_FIELD_OF_VIEW = Radian(Degree(40.0f)); @@ -65,50 +68,131 @@ const char* const RENDER_SHADOW_FRAGMENT_SOURCE = " gl_FragColor = vec4(uShadowColor.rgb, uShadowColor.a * alpha);\n" "}\n"; +struct PropertyDetails +{ + std::string name; ///< The name of the property. + Property::Type type; ///< The property type. + bool writable; ///< Whether the property is writable + bool animatable; ///< Whether the property is animatable. + bool constraintInput; ///< Whether the property can be used as an input to a constraint. + Property::Index enumIndex; ///< Used to check the index is correct within a debug build. +}; -} // anon namespace +} // Anonymous namespace -int UtcDaliCameraActorConstructorVoid(void) +int UtcDaliCameraActorConstructorP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::CameraActor()"); + tet_infoline( "Testing Dali::CameraActor::CameraActor()" ); CameraActor actor; - DALI_TEST_CHECK(!actor); + DALI_TEST_CHECK( !actor ); END_TEST; } -int UtcDaliCameraActorNew(void) +// Note: No negative test for UtcDaliCameraActorConstructor. + +int UtcDaliCameraActorDestructorP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::New()"); + tet_infoline( "Testing Dali::~CameraActor (P)" ); + CameraActor* actor = new CameraActor(); + delete actor; + actor = NULL; + + DALI_TEST_CHECK( true ); + END_TEST; +} + +// Note: No negative test for UtcDaliCameraActorDestructor. +int UtcDaliCameraActorCopyConstructorP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Copy Constructor (P)" ); CameraActor actor = CameraActor::New(); - DALI_TEST_CHECK(actor); + CameraActor copyActor( actor ); - actor = NULL; + DALI_TEST_CHECK( copyActor ); + DALI_TEST_CHECK( copyActor == actor ); + + END_TEST; +} + +int UtcDaliCameraActorCopyConstructorN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Copy Constructor (N)" ); + CameraActor actor; + + CameraActor copyActor( actor ); + + DALI_TEST_CHECK( !copyActor ); + + END_TEST; +} + +int UtcDaliCameraActorAssignmentOperatorP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Assignment Operator (P)" ); + const CameraActor actor = CameraActor::New(); + + CameraActor copyActor = actor; + + DALI_TEST_CHECK( copyActor ); + DALI_TEST_CHECK( copyActor == actor ); - DALI_TEST_CHECK(!actor); END_TEST; } -int UtcDaliCameraActorDownCast(void) +int UtcDaliCameraActorAssignmentOperatorN(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::DownCast()"); + tet_infoline( "Testing Dali::CameraActor = (N)" ); + CameraActor actor; + + CameraActor copyActor = actor; + + DALI_TEST_CHECK( !copyActor ); + + END_TEST; +} + +int UtcDaliCameraActorNewP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::New (P)" ); + + CameraActor actor = CameraActor::New(); + + DALI_TEST_CHECK( actor ); + + actor.Reset(); + + DALI_TEST_CHECK( !actor ); + END_TEST; +} + +// Note: No negative test for UtcDaliCameraActorNew. + +int UtcDaliCameraActorDownCastP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::DownCast (P)" ); CameraActor camera = CameraActor::New(); Actor anActor = Actor::New(); anActor.Add( camera ); - Actor child = anActor.GetChildAt(0); + Actor child = anActor.GetChildAt( 0 ); CameraActor cameraActor = CameraActor::DownCast( child ); DALI_TEST_CHECK( cameraActor ); - cameraActor = NULL; + cameraActor.Reset(); DALI_TEST_CHECK( !cameraActor ); cameraActor = DownCast< CameraActor >( child ); @@ -116,16 +200,16 @@ int UtcDaliCameraActorDownCast(void) END_TEST; } -int UtcDaliCameraActorDownCast2(void) +int UtcDaliCameraActorDownCastN(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::DownCast()"); + tet_infoline( "Testing Dali::CameraActor::DownCast (N)" ); Actor actor1 = Actor::New(); Actor anActor = Actor::New(); - anActor.Add(actor1); + anActor.Add( actor1 ); - Actor child = anActor.GetChildAt(0); + Actor child = anActor.GetChildAt( 0 ); CameraActor cameraActor = CameraActor::DownCast( child ); DALI_TEST_CHECK( !cameraActor ); @@ -138,447 +222,620 @@ int UtcDaliCameraActorDownCast2(void) END_TEST; } +// Note: SetType and GetType are tested within the same test cases. -int UtcDaliCameraActorSetCameraOffStage(void) +int UtcDaliCameraActorSetGetTypeP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::SetCamera()"); + tet_infoline( "Testing Dali::CameraActor GetType (P)" ); CameraActor actor = CameraActor::New(); + DALI_TEST_EQUALS( actor.GetType(), Dali::Camera::FREE_LOOK, TEST_LOCATION ); - actor.SetType(Camera::FREE_LOOK); - actor.SetFieldOfView(TEST_FIELD_OF_VIEW); - actor.SetAspectRatio(TEST_ASPECT_RATIO); - actor.SetNearClippingPlane(TEST_NEAR_PLANE_DISTANCE); - actor.SetFarClippingPlane(TEST_FAR_PLANE_DISTANCE); - actor.SetProjectionMode(Camera::PERSPECTIVE_PROJECTION); + actor.SetType( Dali::Camera::LOOK_AT_TARGET ); + DALI_TEST_EQUALS( actor.GetType(), Dali::Camera::LOOK_AT_TARGET, TEST_LOCATION ); - actor.SetInvertYAxis(false); + DALI_TEST_EQUALS( "LOOK_AT_TARGET", actor.GetProperty< std::string >( CameraActor::Property::TYPE ), TEST_LOCATION ); + DALI_TEST_EQUALS( "LOOK_AT_TARGET", actor.GetCurrentProperty< std::string >( CameraActor::Property::TYPE ), TEST_LOCATION ); + END_TEST; +} - DALI_TEST_EQUALS(TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(Camera::PERSPECTIVE_PROJECTION, actor.GetProjectionMode(), TEST_LOCATION); - DALI_TEST_EQUALS(false, actor.GetInvertYAxis(), TEST_LOCATION); +int UtcDaliCameraActorSetGetTypeN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor GetType (N)" ); - float value; - std::string sValue; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(value); - DALI_TEST_EQUALS(TEST_ASPECT_RATIO, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(value); - DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::PROJECTION_MODE).Get(sValue); - DALI_TEST_EQUALS("PERSPECTIVE_PROJECTION", sValue, TEST_LOCATION); - bool bValue; - actor.GetProperty(CameraActor::INVERT_Y_AXIS).Get(bValue); - DALI_TEST_EQUALS(false, bValue, TEST_LOCATION); + CameraActor actor; + + Dali::Camera::Type cameraType = Dali::Camera::FREE_LOOK; + try + { + cameraType = actor.GetType(); + } + catch ( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera", TEST_LOCATION ); + } + + const CameraActor aConstActor; + + try + { + cameraType = aConstActor.GetType(); + } + catch ( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera", TEST_LOCATION ); + } + + DALI_TEST_EQUALS( cameraType, Dali::Camera::FREE_LOOK, TEST_LOCATION ); END_TEST; } -int UtcDaliCameraActorSetCameraOnStage(void) +int UtcDaliCameraActorSetFieldOfViewP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::SetCamera()"); + tet_infoline( "Testing Dali::CameraActor Set Field of view (P)" ); + + CameraActor defaultCamera = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); + const float defaultFieldOfView = defaultCamera.GetFieldOfView(); CameraActor actor = CameraActor::New(); - Stage::GetCurrent().Add(actor); - application.Render(0); - application.SendNotification(); + DALI_TEST_EQUALS( actor.GetFieldOfView(), defaultFieldOfView, TEST_LOCATION ); - actor.SetType(Camera::LOOK_AT_TARGET); - actor.SetFieldOfView(TEST_FIELD_OF_VIEW); - actor.SetAspectRatio(TEST_ASPECT_RATIO); - actor.SetNearClippingPlane(TEST_NEAR_PLANE_DISTANCE); - actor.SetFarClippingPlane(TEST_FAR_PLANE_DISTANCE); - actor.SetInvertYAxis(false); + float fieldOfView = Math::PI / 3.0f; + actor.SetFieldOfView( fieldOfView ); + DALI_TEST_EQUALS( actor.GetFieldOfView(), fieldOfView, TEST_LOCATION ); - DALI_TEST_EQUALS(false, actor.GetInvertYAxis(), TEST_LOCATION); + float value; + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); + DALI_TEST_EQUALS( fieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); + END_TEST; +} - // Will need 2 frames to ensure both buffers are set to same values: - application.Render(); - application.SendNotification(); - application.Render(); - application.SendNotification(); +int UtcDaliCameraActorSetFieldOfViewN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Set Field of view (N)" ); - DALI_TEST_EQUALS(TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(false, actor.GetInvertYAxis(), TEST_LOCATION); + CameraActor defaultCamera = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); + const float defaultFieldOfView = defaultCamera.GetFieldOfView(); - std::string sValue; - actor.GetProperty(CameraActor::TYPE).Get(sValue); - DALI_TEST_EQUALS(sValue, "LOOK_AT_TARGET", TEST_LOCATION); + CameraActor actor = CameraActor::New(); + DALI_TEST_EQUALS( actor.GetFieldOfView(), defaultFieldOfView, TEST_LOCATION ); - float value; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(value); - DALI_TEST_EQUALS(TEST_ASPECT_RATIO, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(value); - DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION); + float fieldOfView = Math::PI / 3.0f; + actor.SetFieldOfView( fieldOfView ); + DALI_TEST_EQUALS( actor.GetFieldOfView(), fieldOfView, TEST_LOCATION ); - bool bValue; - actor.GetProperty(CameraActor::INVERT_Y_AXIS).Get(bValue); - DALI_TEST_EQUALS(false, bValue, TEST_LOCATION); + float value; + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); + DALI_TEST_EQUALS( fieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); END_TEST; } - -int UtcDaliCameraActorGetCamera(void) +int UtcDaliCameraActorGetFieldOfViewP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::GetCamera()"); + tet_infoline( "Testing Dali::CameraActor Get Field of view (P)" ); + const Vector2 size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ); + + CameraActor defaultCamera = CameraActor::New( size ); + + const float cameraZ = 2.0f * std::max( size.width, size.height ); + const float expectedFieldOfView = 2.0f * std::atan( size.height * 0.5f / cameraZ ); CameraActor actor = CameraActor::New(); + DALI_TEST_EQUALS( actor.GetFieldOfView(), expectedFieldOfView, TEST_LOCATION ); - actor.SetAspectRatio(TEST_ASPECT_RATIO); + float value; + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); + DALI_TEST_EQUALS( expectedFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION); + END_TEST; +} - DALI_TEST_EQUALS(actor.GetAspectRatio(), TEST_ASPECT_RATIO, FLOAT_EPSILON, TEST_LOCATION); +int UtcDaliCameraActorGetFieldOfViewN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Get Field of view (N)" ); - actor.SetProperty(CameraActor::TYPE, "FREE_LOOK"); - actor.SetProperty(CameraActor::ASPECT_RATIO, TEST_ASPECT_RATIO); - actor.SetProperty(CameraActor::FIELD_OF_VIEW, TEST_FIELD_OF_VIEW); - actor.SetProperty(CameraActor::NEAR_PLANE_DISTANCE, TEST_NEAR_PLANE_DISTANCE); - actor.SetProperty(CameraActor::FAR_PLANE_DISTANCE, TEST_FAR_PLANE_DISTANCE); + CameraActor defaultCamera = CameraActor::New(); + + bool asserted = true; + try + { + defaultCamera.GetFieldOfView(); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + DALI_TEST_CHECK( asserted ); - DALI_TEST_EQUALS(Camera::FREE_LOOK, actor.GetType(), TEST_LOCATION); - DALI_TEST_EQUALS(TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); END_TEST; } -int UtcDaliCameraActorDefaultProperties(void) +int UtcDaliCameraActorSetAspectRatioP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor DefaultProperties"); + tet_infoline( "Testing Dali::CameraActor Set Aspect Ratio (P)" ); CameraActor actor = CameraActor::New(); + DALI_TEST_EQUALS( actor.GetAspectRatio(), static_cast( TestApplication::DEFAULT_SURFACE_WIDTH ) / static_cast( TestApplication::DEFAULT_SURFACE_HEIGHT ), TEST_LOCATION ); - actor.SetAspectRatio(TEST_ASPECT_RATIO); - Stage::GetCurrent().Add(actor); - application.Render(0); - application.SendNotification(); - bool bValue; - actor.GetProperty(CameraActor::INVERT_Y_AXIS).Get(bValue); - DALI_TEST_EQUALS(false, bValue, TEST_LOCATION); + // Set an initial value to confirm a further set changes it. + float aspect = 4.0f / 3.0f; + actor.SetAspectRatio( aspect ); + DALI_TEST_EQUALS( actor.GetAspectRatio(), aspect, TEST_LOCATION ); - std::vector indices ; - indices.push_back(CameraActor::TYPE); - indices.push_back(CameraActor::PROJECTION_MODE); - indices.push_back(CameraActor::FIELD_OF_VIEW ); - indices.push_back(CameraActor::ASPECT_RATIO ); - indices.push_back(CameraActor::NEAR_PLANE_DISTANCE ); - indices.push_back(CameraActor::FAR_PLANE_DISTANCE ); - indices.push_back(CameraActor::LEFT_PLANE_DISTANCE ); - indices.push_back(CameraActor::RIGHT_PLANE_DISTANCE ); - indices.push_back(CameraActor::TOP_PLANE_DISTANCE ); - indices.push_back(CameraActor::BOTTOM_PLANE_DISTANCE ); - indices.push_back(CameraActor::TARGET_POSITION ); - indices.push_back(CameraActor::PROJECTION_MATRIX ); - indices.push_back(CameraActor::VIEW_MATRIX); - indices.push_back(CameraActor::INVERT_Y_AXIS ); - - DALI_TEST_CHECK(actor.GetPropertyCount() == ( Actor::New().GetPropertyCount() + indices.size() ) ); - - for(std::vector::iterator iter = indices.begin(); iter != indices.end(); ++iter) - { - DALI_TEST_EQUALS( *iter, actor.GetPropertyIndex(actor.GetPropertyName(*iter)), TEST_LOCATION); - DALI_TEST_CHECK( ! actor.IsPropertyAnimatable(*iter) ); - - switch(*iter) - { - if ( ( *iter == CameraActor::PROJECTION_MATRIX ) || - ( *iter == CameraActor::VIEW_MATRIX ) ) - { - DALI_TEST_CHECK( ! actor.IsPropertyWritable(*iter) ); - } - else - { - DALI_TEST_CHECK( actor.IsPropertyWritable(*iter) ); - } - } + aspect = 16.0f / 9.0f; + actor.SetAspectRatio( aspect ); + DALI_TEST_EQUALS( actor.GetAspectRatio(), aspect, TEST_LOCATION ); - DALI_TEST_CHECK( actor.GetPropertyType(*iter) == actor.GetPropertyType(*iter) ); // just checking call succeeds - } + END_TEST; +} - // set/get one of them - const float newAspect = TEST_ASPECT_RATIO * 2.f; +int UtcDaliCameraActorSetAspectRatioN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Set Aspect Ratio (N)" ); - actor.SetProperty( CameraActor::ASPECT_RATIO, Property::Value(newAspect) ); - application.Render(); - application.SendNotification(); - application.Render(); - application.SendNotification(); + CameraActor actor; + + bool asserted = true; + try + { + actor.SetAspectRatio( 16.0f / 9.0f ); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + DALI_TEST_CHECK( asserted ); - DALI_TEST_EQUALS(actor.GetAspectRatio(), newAspect, TEST_LOCATION ); END_TEST; } -int UtcDaliCameraActorSetTarget(void) +int UtcDaliCameraActorGetAspectRatioP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Get/Set Target Position"); + tet_infoline("Testing Dali::CameraActor Get Aspect Ratio"); CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetTargetPosition(), Vector3::ZERO, TEST_LOCATION ); + float defaultAspect = static_cast( TestApplication::DEFAULT_SURFACE_WIDTH ) / static_cast( TestApplication::DEFAULT_SURFACE_HEIGHT ); - Vector3 target( 10.0f, 20.0f, 30.0f); - actor.SetTargetPosition( target ); + DALI_TEST_EQUALS( actor.GetAspectRatio(), defaultAspect, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetTargetPosition(), target, TEST_LOCATION ); + float value = 0.0f; + actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); + DALI_TEST_EQUALS( defaultAspect, value, FLOAT_EPSILON, TEST_LOCATION ); - Vector3 value; - actor.GetProperty(CameraActor::TARGET_POSITION).Get(value); - DALI_TEST_EQUALS(target, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } +int UtcDaliCameraActorGetAspectRatioN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Get Aspect Ratio (N)" ); + + CameraActor actor; + + bool asserted = true; + try + { + actor.GetAspectRatio(); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + + DALI_TEST_CHECK( asserted ); -int UtcDaliCameraActorSetType01(void) + END_TEST; +} + +int UtcDaliCameraActorSetNearClippingPlaneP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Get/Set Type"); + tet_infoline( "Testing Dali::CameraActor Set Near clipping plane (P)" ); CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetType(), Dali::Camera::LOOK_AT_TARGET, TEST_LOCATION ); - actor.SetType(Dali::Camera::FREE_LOOK); - DALI_TEST_EQUALS( actor.GetType(), Dali::Camera::FREE_LOOK, TEST_LOCATION ); + // Set a value so we are not relying on a particular default for this test case. + actor.SetNearClippingPlane( 200.0f ); + DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 200.0f, TEST_LOCATION ); - std::string sValue; - actor.GetProperty(CameraActor::TYPE).Get(sValue); - std::string result("FREE_LOOK"); - DALI_TEST_EQUALS(result, sValue, TEST_LOCATION); + actor.SetNearClippingPlane( 400.0f ); + DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 400.0f, TEST_LOCATION ); + + // Check setting the property. + actor.SetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE, Property::Value( 300.0f ) ); + DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 300.0f, FLOAT_EPSILON, TEST_LOCATION ); END_TEST; } -int UtcDaliCameraActorSetType02(void) +int UtcDaliCameraActorSetNearClippingPlaneN(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Get/Set Type"); + tet_infoline( "Testing Dali::CameraActor Set Near clipping plane (N)" ); CameraActor actor; - Dali::Camera::Type cameraType = Dali::Camera::FREE_LOOK ; + bool asserted = true; try { - cameraType = actor.GetType(); + actor.SetNearClippingPlane( 200.0f ); } - catch ( Dali::DaliException& e ) + catch( Dali::DaliException& e ) { - tet_printf("Assertion %s test at %s\n", e.mCondition.c_str(), e.mLocation.c_str()); - DALI_TEST_ASSERT(e, "camera", TEST_LOCATION); + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; } - const CameraActor aConstActor; + DALI_TEST_CHECK( asserted ); + + END_TEST; +} + +int UtcDaliCameraActorGetNearClippingPlaneP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Get Near clipping plane (P)" ); + // Check the default value. + CameraActor actor = CameraActor::New(); + float defaultValue = 800.0f; + DALI_TEST_EQUALS( actor.GetNearClippingPlane(), defaultValue, TEST_LOCATION ); + + // Check getting the property. + float value; + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( defaultValue, value, FLOAT_EPSILON, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliCameraActorGetNearClippingPlaneN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Get Near clipping plane (N)" ); + + CameraActor actor; + bool asserted = true; try { - cameraType = aConstActor.GetType(); + actor.GetNearClippingPlane(); } - catch ( Dali::DaliException& e ) + catch( Dali::DaliException& e ) { - tet_printf("Assertion %s test at %s\n", e.mCondition.c_str(), e.mLocation.c_str()); - DALI_TEST_ASSERT(e, "camera", TEST_LOCATION); + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; } - DALI_TEST_EQUALS((int)cameraType, (int)Dali::Camera::FREE_LOOK, TEST_LOCATION); + DALI_TEST_CHECK( asserted ); + END_TEST; } -int UtcDaliCameraActorSetFieldOfView(void) +int UtcDaliCameraActorSetFarClippingPlaneP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Get/Set Field of view"); - - CameraActor defaultCamera = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); - const float defaultFov = defaultCamera.GetFieldOfView(); + tet_infoline( "Testing Dali::CameraActor Set Far clipping plane (P)" ); CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetFieldOfView(), defaultFov, TEST_LOCATION ); - float fov = Math::PI/3.0f; - actor.SetFieldOfView(fov); - DALI_TEST_EQUALS( actor.GetFieldOfView(), fov, TEST_LOCATION ); + // Set a value so we are not relying on a particular default for this test case. + actor.SetFarClippingPlane( 2000.0f ); + DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 2000.0f, TEST_LOCATION ); - float value; - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(value); - DALI_TEST_EQUALS(fov, value, FLOAT_EPSILON, TEST_LOCATION); + actor.SetFarClippingPlane( 4000.0f ); + DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 4000.0f, TEST_LOCATION ); + + // Check setting the property. + actor.SetProperty( CameraActor::Property::FAR_PLANE_DISTANCE, 2000.0f ); + DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 2000.0f, FLOAT_EPSILON, TEST_LOCATION ); END_TEST; } -int UtcDaliCameraActorSetAspectRatio(void) +int UtcDaliCameraActorSetFarClippingPlaneN(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Get/Set Aspect Ratio"); + tet_infoline( "Testing Dali::CameraActor Set Far clipping plane (N)" ); - CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetAspectRatio(), static_cast( TestApplication::DEFAULT_SURFACE_WIDTH ) / static_cast( TestApplication::DEFAULT_SURFACE_HEIGHT ), TEST_LOCATION ); + CameraActor actor; - float aspect = 16.0f/9.0f; - actor.SetAspectRatio(aspect); - DALI_TEST_EQUALS( actor.GetAspectRatio(), aspect, TEST_LOCATION ); + bool asserted = true; + try + { + actor.SetFarClippingPlane( 2000.0f ); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + + DALI_TEST_CHECK( asserted ); - float value; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(value); - DALI_TEST_EQUALS(aspect, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } -int UtcDaliCameraActorSetNearClippingPlane(void) +int UtcDaliCameraActorGetFarClippingPlaneP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Get/Set Near clipping plane"); + tet_infoline( "Testing Dali::CameraActor Get Far clipping plane (P)" ); CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 800.0f, TEST_LOCATION ); - - actor.SetNearClippingPlane(400.0f); - DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 400.0f, TEST_LOCATION ); + float defaultValue = 800.0f + ( 0xFFFF >> 4 ); + DALI_TEST_EQUALS( actor.GetFarClippingPlane(), defaultValue, TEST_LOCATION ); + // Check getting the property. float value; - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(400.0f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( defaultValue, value, FLOAT_EPSILON, TEST_LOCATION ); END_TEST; } -int UtcDaliCameraActorSetFarClippingPlane(void) +int UtcDaliCameraActorGetFarClippingPlaneN(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Get/Set Far clipping plane"); + tet_infoline( "Testing Dali::CameraActor Get Far clipping plane (N)" ); - CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 800.0f + (0xFFFF>>4), TEST_LOCATION ); + CameraActor actor; - actor.SetFarClippingPlane(4000.0f); - DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 4000.0f, TEST_LOCATION ); + bool asserted = true; + try + { + actor.GetFarClippingPlane(); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + + DALI_TEST_CHECK( asserted ); - float value; - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(4000.0f, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } -int UtcDaliCameraActorSetTargetPosition(void) +int UtcDaliCameraActorSetTargetPositionP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Get/Set Target Position"); + tet_infoline( "Testing Dali::CameraActor Set Target Position (P)" ); CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetTargetPosition(), Vector3::ZERO, TEST_LOCATION ); - Vector3 target( 10.0f, 20.0f, 30.0f); - actor.SetTargetPosition( target ); + Vector3 target1( 10.0f, 20.0f, 30.0f ); + Vector3 target2( 15.0f, 25.0f, 35.0f ); + + // Set a value so we are not relying on a particular default for this test case. + actor.SetTargetPosition( target1 ); + DALI_TEST_EQUALS( actor.GetTargetPosition(), target1, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetTargetPosition(), target, TEST_LOCATION ); + actor.SetTargetPosition( target2 ); + DALI_TEST_EQUALS( actor.GetTargetPosition(), target2, TEST_LOCATION ); + // Check setting the property. + actor.SetProperty( CameraActor::Property::TARGET_POSITION, target1 ); + DALI_TEST_EQUALS( actor.GetTargetPosition(), target1, FLOAT_EPSILON, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliCameraActorSetTargetPositionN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Set Target Position (N)" ); + + CameraActor actor; + + bool asserted = true; + try + { + actor.SetTargetPosition( Vector3( 10.0f, 20.0f, 30.0f ) ); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + DALI_TEST_CHECK( asserted ); + + END_TEST; +} + +int UtcDaliCameraActorGetTargetPositionP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Get Target Position (P)" ); + + CameraActor actor = CameraActor::New(); + Vector3 defaultValue( Vector3::ZERO ); + DALI_TEST_EQUALS( actor.GetTargetPosition(), defaultValue, TEST_LOCATION ); + + // Check getting the property. Vector3 value; - actor.GetProperty(CameraActor::TARGET_POSITION).Get(value); - DALI_TEST_EQUALS(target, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty( CameraActor::Property::TARGET_POSITION ).Get( value ); + DALI_TEST_EQUALS( defaultValue, value, FLOAT_EPSILON, TEST_LOCATION ); END_TEST; } -int UtcDaliCameraActorSetInvertYAxis(void) +int UtcDaliCameraActorGetTargetPositionN(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Get/Set InvertYAxis"); + tet_infoline( "Testing Dali::CameraActor Get Target Position (N)" ); + + CameraActor actor; + + bool asserted = true; + try + { + actor.GetTargetPosition(); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + DALI_TEST_CHECK( asserted ); + + END_TEST; +} + +int UtcDaliCameraActorSetInvertYAxisP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Set InvertYAxis (P)" ); CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetInvertYAxis(), false, TEST_LOCATION ); - actor.SetInvertYAxis(true); + // Set a value so we are not relying on a particular default for this test case. + actor.SetInvertYAxis( false ); + DALI_TEST_EQUALS( actor.GetInvertYAxis(), false, TEST_LOCATION ); + actor.SetInvertYAxis( true ); DALI_TEST_EQUALS( actor.GetInvertYAxis(), true, TEST_LOCATION ); - bool bValue; - actor.GetProperty(CameraActor::INVERT_Y_AXIS).Get(bValue); - DALI_TEST_EQUALS(true, bValue, TEST_LOCATION); + actor.SetProperty( CameraActor::Property::INVERT_Y_AXIS, false ); + DALI_TEST_EQUALS( actor.GetInvertYAxis(), false, TEST_LOCATION ); END_TEST; } -int UtcDaliCameraActorModelView(void) +int UtcDaliCameraActorSetInvertYAxisN(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor Test view application"); + tet_infoline( "Testing Dali::CameraActor Set InvertYAxis (N)" ); - BitmapImage image = CreateBitmapImage(); + CameraActor actor; - ImageActor actor = ImageActor::New( image ); - actor.SetSize( 100.0f, 100.0f ); - actor.SetPosition(20.0f, 30.0f, 40.0f); - actor.SetParentOrigin(ParentOrigin::CENTER); - Stage::GetCurrent().Add(actor); + bool asserted = true; + try + { + actor.SetInvertYAxis( false ); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + DALI_TEST_CHECK( asserted ); + END_TEST; +} - application.SendNotification(); - application.Render(0); - application.Render(); - application.SendNotification(); +int UtcDaliCameraActorGetInvertYAxisP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Get InvertYAxis (P)" ); - Matrix resultMatrix(true); - resultMatrix.SetTransformComponents( Vector3::ONE, Quaternion::IDENTITY, actor.GetCurrentPosition()); + // Check the default value. + CameraActor actor = CameraActor::New(); + DALI_TEST_EQUALS( actor.GetInvertYAxis(), false, TEST_LOCATION ); - RenderTask task = Stage::GetCurrent().GetRenderTaskList().GetTask(0); - CameraActor cameraActor = task.GetCameraActor(); + // Check getting the property. + bool bValue; + actor.GetProperty( CameraActor::Property::INVERT_Y_AXIS ).Get( bValue ); + DALI_TEST_EQUALS( false, bValue, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliCameraActorGetInvertYAxisN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Get InvertYAxis (N)" ); - Matrix viewMatrix(false); - cameraActor.GetProperty(CameraActor::VIEW_MATRIX).Get( viewMatrix ); - Matrix::Multiply(resultMatrix, resultMatrix, viewMatrix); + CameraActor actor; - DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( "uModelView", resultMatrix ) ); + bool asserted = true; + try + { + actor.GetInvertYAxis(); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + DALI_TEST_CHECK( asserted ); END_TEST; } -int UtcDaliCameraActorSetPerspectiveProjection(void) +int UtcDaliCameraActorSetPerspectiveProjectionP(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::SetPerspectiveProjection( const Size& size )"); + tet_infoline( "Testing Dali::CameraActor::SetPerspectiveProjection (P)" ); CameraActor actor = CameraActor::New(); actor.SetPerspectiveProjection( Size( 100.f, 150.f ) ); - DALI_TEST_CHECK(actor); + DALI_TEST_CHECK( actor ); float value; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(value); - DALI_TEST_EQUALS(0.666666f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(value); - DALI_TEST_EQUALS(0.489957f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(150.f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(4245.f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); + DALI_TEST_EQUALS( 0.666666f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); + DALI_TEST_EQUALS( 0.489957f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 150.f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 4245.f, value, FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS((int)actor.GetProjectionMode(), (int)Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); - std::string stringValue; - actor.GetProperty(CameraActor::PROJECTION_MODE).Get(stringValue); - DALI_TEST_EQUALS(stringValue, "PERSPECTIVE_PROJECTION", TEST_LOCATION); END_TEST; } -int UtcDaliCameraActorSetOrthographicProjection01(void) +int UtcDaliCameraActorSetPerspectiveProjectionN(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::SetOrthographicProjection01()"); + tet_infoline( "Testing Dali::CameraActor::SetPerspectiveProjection (N)" ); + + Stage stage = Stage::GetCurrent(); + Vector2 stageSize = stage.GetSize(); - CameraActor actor = CameraActor::New(Size(1080.0f, 1920.0f)); - DALI_TEST_CHECK(actor); + CameraActor actor = CameraActor::New(); + + // Check that setting perspective projection without a size (using zero size) uses the stages size. + actor.SetPerspectiveProjection( Size::ZERO ); + + float nearClippingPlane = std::max( stageSize.width, stageSize.height ); + float farClippingPlane = nearClippingPlane + static_cast( 0xFFFF >> 4 ); + + DALI_TEST_EQUALS( nearClippingPlane, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( farClippingPlane, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliCameraActorSetOrthographicProjectionP1(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::SetOrthographicProjection (P,1)" ); + + CameraActor actor = CameraActor::New( Size( 1080.0f, 1920.0f ) ); + DALI_TEST_CHECK( actor ); Stage::GetCurrent().Add( actor ); actor.SetOrthographicProjection( Size( 1080.0f, 1920.0f ) ); application.SendNotification(); - application.Render(0); + application.Render( 0 ); application.Render(); application.SendNotification(); @@ -586,220 +843,666 @@ int UtcDaliCameraActorSetOrthographicProjection01(void) float defaultFieldOfView; float defaultNearPlaneDistance; float defaultFarPlaneDistance; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(defaultAspectRatio); - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(defaultFieldOfView); - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(defaultNearPlaneDistance); - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(defaultFarPlaneDistance); + actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( defaultAspectRatio ); + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( defaultFieldOfView ); + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( defaultNearPlaneDistance ); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( defaultFarPlaneDistance ); Vector3 defaultPos = actor.GetCurrentPosition(); actor.SetOrthographicProjection( Size( 1080.0f, 1920.0f ) ); application.SendNotification(); - application.Render(0); + application.Render( 0 ); application.Render(); application.SendNotification(); float value; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(value); - DALI_TEST_EQUALS(defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(value); - DALI_TEST_EQUALS(defaultFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(defaultNearPlaneDistance, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(defaultFarPlaneDistance, value, FLOAT_EPSILON, TEST_LOCATION); - - actor.GetProperty(CameraActor::LEFT_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(-540.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::RIGHT_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS( 540.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::TOP_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(960.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::BOTTOM_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(-960.0f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); + DALI_TEST_EQUALS( defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); + DALI_TEST_EQUALS( defaultFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( defaultNearPlaneDistance, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( defaultFarPlaneDistance, value, FLOAT_EPSILON, TEST_LOCATION ); + + actor.GetProperty( CameraActor::Property::LEFT_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( -540.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::RIGHT_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 540.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::TOP_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 960.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::BOTTOM_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( -960.0f, value, FLOAT_EPSILON, TEST_LOCATION ); Vector3 pos = actor.GetCurrentPosition(); - DALI_TEST_EQUALS(defaultPos.z, pos.z, 0.001f, TEST_LOCATION); + DALI_TEST_EQUALS( defaultPos.z, pos.z, 0.001f, TEST_LOCATION ); - DALI_TEST_EQUALS((int)actor.GetProjectionMode(), (int)Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION); + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); END_TEST; } +int UtcDaliCameraActorSetOrthographicProjectionN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::SetOrthographicProjection (N)" ); -int UtcDaliCameraActorSetOrthographicProjection02(void) + CameraActor actor; + bool asserted = true; + try + { + actor.GetProjectionMode(); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + DALI_TEST_CHECK( asserted ); + END_TEST; +} + +int UtcDaliCameraActorSetOrthographicProjectionP2(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::SetOrthographicProjection02()"); + tet_infoline( "Testing Dali::CameraActor::SetOrthographicProjection (P,2)" ); CameraActor actor = CameraActor::New(); - DALI_TEST_CHECK(actor); + DALI_TEST_CHECK( actor ); float defaultAspectRatio; float defaultFieldOfView; float defaultNearPlaneDistance; float defaultFarPlaneDistance; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(defaultAspectRatio); - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(defaultFieldOfView); - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(defaultNearPlaneDistance); - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(defaultFarPlaneDistance); + actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( defaultAspectRatio ); + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( defaultFieldOfView ); + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( defaultNearPlaneDistance ); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( defaultFarPlaneDistance ); + // Check setting with specific near and far plane distances. actor.SetOrthographicProjection( -100.0f, 200.0f, -300.0f, 500.0f, 400.0f, 4000.0f ); float value; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(value); - DALI_TEST_EQUALS(defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(value); - DALI_TEST_EQUALS(defaultFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(400.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(4000.0f, value, FLOAT_EPSILON, TEST_LOCATION); - - actor.GetProperty(CameraActor::LEFT_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(-100.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::RIGHT_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS( 200.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::TOP_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(-300.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::BOTTOM_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS( 500.0f, value, FLOAT_EPSILON, TEST_LOCATION); - - DALI_TEST_EQUALS((int)actor.GetProjectionMode(), (int)Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION); + actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); + DALI_TEST_EQUALS( defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); + DALI_TEST_EQUALS( defaultFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 400.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 4000.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + + actor.GetProperty( CameraActor::Property::LEFT_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( -100.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::RIGHT_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 200.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::TOP_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( -300.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::BOTTOM_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 500.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); END_TEST; } - -int UtcDaliCameraActorSetOrthographicProjection03(void) +int UtcDaliCameraActorSetOrthographicProjectionP3(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::SetOrthographicProjection03()"); + tet_infoline( "Testing Dali::CameraActor::SetOrthographicProjection (P,3)" ); CameraActor actor = CameraActor::New(); - DALI_TEST_CHECK(actor); + DALI_TEST_CHECK( actor ); float defaultAspectRatio; float defaultFieldOfView; float defaultNearPlaneDistance; float defaultFarPlaneDistance; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(defaultAspectRatio); - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(defaultFieldOfView); - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(defaultNearPlaneDistance); - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(defaultFarPlaneDistance); + actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( defaultAspectRatio ); + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( defaultFieldOfView ); + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( defaultNearPlaneDistance ); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( defaultFarPlaneDistance ); - actor.SetProjectionMode(Dali::Camera::ORTHOGRAPHIC_PROJECTION); + actor.SetProjectionMode( Dali::Camera::ORTHOGRAPHIC_PROJECTION ); - actor.SetProperty(CameraActor::LEFT_PLANE_DISTANCE, -100.0f); - actor.SetProperty(CameraActor::RIGHT_PLANE_DISTANCE, 200.0f); - actor.SetProperty(CameraActor::TOP_PLANE_DISTANCE, -300.0f); - actor.SetProperty(CameraActor::BOTTOM_PLANE_DISTANCE, 500.0f); + actor.SetProperty( CameraActor::Property::LEFT_PLANE_DISTANCE, -100.0f ); + actor.SetProperty( CameraActor::Property::RIGHT_PLANE_DISTANCE, 200.0f ); + actor.SetProperty( CameraActor::Property::TOP_PLANE_DISTANCE, -300.0f ); + actor.SetProperty( CameraActor::Property::BOTTOM_PLANE_DISTANCE, 500.0f ); actor.SetNearClippingPlane( 400.0f ); actor.SetFarClippingPlane( 4000.0f ); float value; - actor.GetProperty(CameraActor::ASPECT_RATIO).Get(value); - DALI_TEST_EQUALS(defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FIELD_OF_VIEW).Get(value); - DALI_TEST_EQUALS(defaultFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::NEAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(400.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::FAR_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(4000.0f, value, FLOAT_EPSILON, TEST_LOCATION); - - actor.GetProperty(CameraActor::LEFT_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(-100.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::RIGHT_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS( 200.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::TOP_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS(-300.0f, value, FLOAT_EPSILON, TEST_LOCATION); - actor.GetProperty(CameraActor::BOTTOM_PLANE_DISTANCE).Get(value); - DALI_TEST_EQUALS( 500.0f, value, FLOAT_EPSILON, TEST_LOCATION); - - DALI_TEST_EQUALS((int)actor.GetProjectionMode(), (int)Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION); + actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); + DALI_TEST_EQUALS( defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); + DALI_TEST_EQUALS( defaultFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 400.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 4000.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + + actor.GetProperty( CameraActor::Property::LEFT_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( -100.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::RIGHT_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 200.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::TOP_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( -300.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::BOTTOM_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( 500.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); std::string stringValue; - actor.GetProperty(CameraActor::PROJECTION_MODE).Get(stringValue); - DALI_TEST_EQUALS(stringValue, "ORTHOGRAPHIC_PROJECTION", TEST_LOCATION); + actor.GetProperty( CameraActor::Property::PROJECTION_MODE ).Get( stringValue ); + DALI_TEST_EQUALS( stringValue, "ORTHOGRAPHIC_PROJECTION", TEST_LOCATION ); + END_TEST; +} + +int UtcDaliCameraActorSetProjectionModeP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::SetProjectionModeP (P)" ); + + CameraActor actor = CameraActor::New(); + + // Check that changing the projection mode alone does not alter other presets. + actor.SetNearClippingPlane( 200.0f ); + actor.SetFarClippingPlane( 400.0f ); + + actor.SetProjectionMode( Dali::Camera::PERSPECTIVE_PROJECTION ); + + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 200.0f, FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 400.0f, FLOAT_EPSILON, TEST_LOCATION ); + + actor.SetProjectionMode( Dali::Camera::ORTHOGRAPHIC_PROJECTION ); + + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 200.0f, FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 400.0f, FLOAT_EPSILON, TEST_LOCATION ); + + // Check setting the property. + Property::Value setValue = "PERSPECTIVE_PROJECTION"; + actor.SetProperty( CameraActor::Property::PROJECTION_MODE, setValue ); + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliCameraActorSetProjectionModeN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::SetProjectionModeP (N)" ); + + CameraActor actor; + + bool asserted = true; + try + { + actor.SetProjectionMode( Dali::Camera::PERSPECTIVE_PROJECTION ); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + DALI_TEST_CHECK( asserted ); END_TEST; } +int UtcDaliCameraActorGetProjectionModeP(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::GetPerspectiveProjection (P)" ); + + CameraActor actor = CameraActor::New(); + actor.SetOrthographicProjection( Size::ONE ); + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); + + actor.SetPerspectiveProjection( Size( 100.f, 150.f ) ); + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + + // Check getting the property. + std::string stringValue; + actor.GetProperty( CameraActor::Property::PROJECTION_MODE ).Get( stringValue ); + DALI_TEST_EQUALS( stringValue, "PERSPECTIVE_PROJECTION", TEST_LOCATION ); + END_TEST; +} + +int UtcDaliCameraActorGetProjectionModeN(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::GetProjectionMode (N)" ); + + CameraActor actor; + + bool asserted = true; + try + { + actor.GetProjectionMode(); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + asserted = true; + } + DALI_TEST_CHECK( asserted ); + END_TEST; +} + +int UtcDaliCameraActorSetCameraOffStage(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::SetCamera()" ); + + CameraActor actor = CameraActor::New(); + + actor.SetType( Camera::FREE_LOOK ); + actor.SetFieldOfView( TEST_FIELD_OF_VIEW ); + actor.SetAspectRatio( TEST_ASPECT_RATIO ); + actor.SetNearClippingPlane( TEST_NEAR_PLANE_DISTANCE ); + actor.SetFarClippingPlane( TEST_FAR_PLANE_DISTANCE ); + actor.SetProjectionMode( Camera::PERSPECTIVE_PROJECTION ); + + actor.SetInvertYAxis( false ); + + DALI_TEST_EQUALS( TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION );//change to machine epsilon + DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( Camera::PERSPECTIVE_PROJECTION, actor.GetProjectionMode(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, actor.GetInvertYAxis(), TEST_LOCATION ); + + float value; + std::string sValue; + actor.GetProperty( CameraActor::Property::ASPECT_RATIO).Get( value ); + DALI_TEST_EQUALS( TEST_ASPECT_RATIO, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW).Get( value ); + DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE).Get( value ); + DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE).Get( value ); + DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::PROJECTION_MODE).Get( sValue ); + DALI_TEST_EQUALS( "PERSPECTIVE_PROJECTION", sValue, TEST_LOCATION ); + bool bValue; + actor.GetProperty( CameraActor::Property::INVERT_Y_AXIS).Get( bValue ); + DALI_TEST_EQUALS( false, bValue, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliCameraActorSetCameraOnStage(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::SetCamera()" ); + + CameraActor actor = CameraActor::New(); + Stage::GetCurrent().Add( actor ); + application.Render( 0 ); + application.SendNotification(); + + actor.SetType( Camera::LOOK_AT_TARGET ); + actor.SetFieldOfView( TEST_FIELD_OF_VIEW ); + actor.SetAspectRatio( TEST_ASPECT_RATIO ); + actor.SetNearClippingPlane( TEST_NEAR_PLANE_DISTANCE ); + actor.SetFarClippingPlane( TEST_FAR_PLANE_DISTANCE ); + actor.SetInvertYAxis( false ); + + DALI_TEST_EQUALS( false, actor.GetInvertYAxis(), TEST_LOCATION ); + + // Will need 2 frames to ensure both buffers are set to same values: + application.Render(); + application.SendNotification(); + application.Render(); + application.SendNotification(); + + DALI_TEST_EQUALS( TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( false, actor.GetInvertYAxis(), TEST_LOCATION ); + + std::string sValue; + actor.GetProperty( CameraActor::Property::TYPE ).Get( sValue ); + DALI_TEST_EQUALS( sValue, "LOOK_AT_TARGET", TEST_LOCATION ); + + float value; + actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); + DALI_TEST_EQUALS( TEST_ASPECT_RATIO, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); + DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); + DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value); + DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION ); + + bool bValue; + actor.GetProperty( CameraActor::Property::INVERT_Y_AXIS ).Get( bValue ); + DALI_TEST_EQUALS( false, bValue, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliCameraActorGetCamera(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor::GetCamera()" ); + + CameraActor actor = CameraActor::New(); + + actor.SetAspectRatio( TEST_ASPECT_RATIO ); + + DALI_TEST_EQUALS( actor.GetAspectRatio(), TEST_ASPECT_RATIO, FLOAT_EPSILON, TEST_LOCATION ); + + actor.SetProperty( CameraActor::Property::TYPE, "FREE_LOOK" ); + actor.SetProperty( CameraActor::Property::ASPECT_RATIO, TEST_ASPECT_RATIO ); + actor.SetProperty( CameraActor::Property::FIELD_OF_VIEW, TEST_FIELD_OF_VIEW ); + actor.SetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE, TEST_NEAR_PLANE_DISTANCE ); + actor.SetProperty( CameraActor::Property::FAR_PLANE_DISTANCE, TEST_FAR_PLANE_DISTANCE ); + + DALI_TEST_EQUALS( Camera::FREE_LOOK, actor.GetType(), TEST_LOCATION ); + DALI_TEST_EQUALS( TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliCameraActorDefaultProperties(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor DefaultProperties" ); + + CameraActor actor = CameraActor::New(); + Stage stage = Stage::GetCurrent(); + stage.Add(actor); + stage.GetRenderTaskList().GetTask(0).SetCameraActor( actor ); + + actor.SetAspectRatio( TEST_ASPECT_RATIO ); + Stage::GetCurrent().Add( actor ); + application.Render( 0 ); + application.SendNotification(); + bool bValue; + actor.GetProperty( CameraActor::Property::INVERT_Y_AXIS ).Get( bValue ); + DALI_TEST_EQUALS( false, bValue, TEST_LOCATION ); + + std::vector indices ; + indices.push_back( CameraActor::Property::TYPE ); + indices.push_back( CameraActor::Property::PROJECTION_MODE ); + indices.push_back( CameraActor::Property::FIELD_OF_VIEW ); + indices.push_back( CameraActor::Property::ASPECT_RATIO ); + indices.push_back( CameraActor::Property::NEAR_PLANE_DISTANCE ); + indices.push_back( CameraActor::Property::FAR_PLANE_DISTANCE ); + indices.push_back( CameraActor::Property::LEFT_PLANE_DISTANCE ); + indices.push_back( CameraActor::Property::RIGHT_PLANE_DISTANCE ); + indices.push_back( CameraActor::Property::TOP_PLANE_DISTANCE ); + indices.push_back( CameraActor::Property::BOTTOM_PLANE_DISTANCE ); + indices.push_back( CameraActor::Property::TARGET_POSITION ); + indices.push_back( CameraActor::Property::PROJECTION_MATRIX ); + indices.push_back( CameraActor::Property::VIEW_MATRIX ); + indices.push_back( CameraActor::Property::INVERT_Y_AXIS ); + + DALI_TEST_CHECK( actor.GetPropertyCount() == ( Actor::New().GetPropertyCount() + indices.size() ) ); + + for( std::vector::iterator iter = indices.begin(); iter != indices.end(); ++iter ) + { + DALI_TEST_EQUALS( *iter, actor.GetPropertyIndex( actor.GetPropertyName( *iter ) ), TEST_LOCATION); + DALI_TEST_CHECK( !actor.IsPropertyAnimatable( *iter ) ); + + if ( ( *iter == CameraActor::Property::PROJECTION_MATRIX ) || + ( *iter == CameraActor::Property::VIEW_MATRIX ) ) + { + DALI_TEST_CHECK( !actor.IsPropertyWritable( *iter ) ); + } + else + { + DALI_TEST_CHECK( actor.IsPropertyWritable( *iter ) ); + } + + DALI_TEST_CHECK( actor.GetPropertyType( *iter ) == actor.GetPropertyType( *iter ) ); // just checking call succeeds + } + + // Set/Get one of them. + const float newAspect = TEST_ASPECT_RATIO * 2.0f; + + actor.SetProperty( CameraActor::Property::ASPECT_RATIO, Property::Value( newAspect ) ); + application.Render(); + application.SendNotification(); + application.Render(); + application.SendNotification(); + + DALI_TEST_EQUALS( actor.GetAspectRatio(), newAspect, TEST_LOCATION ); + END_TEST; +} + +template< typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8> +void TEST_CAMERA_PROPERTY( P1 camera, P2 stringName, P3 type, P4 isWriteable, P5 isAnimateable, P6 isConstraintInput, P7 enumName, P8 LOCATION ) +{ + DALI_TEST_EQUALS( camera.GetPropertyName( enumName ), stringName, LOCATION ); + DALI_TEST_EQUALS( camera.GetPropertyIndex( stringName ), static_cast(enumName), LOCATION ); + DALI_TEST_EQUALS( camera.GetPropertyType( enumName ), type, LOCATION ); + DALI_TEST_EQUALS( camera.IsPropertyWritable( enumName ), isWriteable, LOCATION ); + DALI_TEST_EQUALS( camera.IsPropertyAnimatable( enumName ), isAnimateable, LOCATION ); + DALI_TEST_EQUALS( camera.IsPropertyAConstraintInput( enumName ), isConstraintInput, LOCATION ); +} +int UtcDaliCameraActorDefaultPropertiesInherited(void) +{ + TestApplication application; + + CameraActor actor = CameraActor::New(); + Stage stage = Stage::GetCurrent(); + stage.Add(actor); + stage.GetRenderTaskList().GetTask(0).SetCameraActor( actor ); + + Stage::GetCurrent().Add( actor ); + application.Render( 0 ); + application.SendNotification(); + + const PropertyDetails CAMERA_DEFAULT_PROPERTY[] = + { +// actor + { "parentOrigin", Property::VECTOR3, true, false, true, Dali::Actor::Property::PARENT_ORIGIN }, + { "parentOriginX", Property::FLOAT, true, false, true, Dali::Actor::Property::PARENT_ORIGIN_X }, + { "parentOriginY", Property::FLOAT, true, false, true, Dali::Actor::Property::PARENT_ORIGIN_Y }, + { "parentOriginZ", Property::FLOAT, true, false, true, Dali::Actor::Property::PARENT_ORIGIN_Z }, + { "anchorPoint", Property::VECTOR3, true, false, true, Dali::Actor::Property::ANCHOR_POINT }, + { "anchorPointX", Property::FLOAT, true, false, true, Dali::Actor::Property::ANCHOR_POINT_X }, + { "anchorPointY", Property::FLOAT, true, false, true, Dali::Actor::Property::ANCHOR_POINT_Y }, + { "anchorPointZ", Property::FLOAT, true, false, true, Dali::Actor::Property::ANCHOR_POINT_Z }, + { "size", Property::VECTOR3, true, true, true, Dali::Actor::Property::SIZE }, + { "sizeWidth", Property::FLOAT, true, true, true, Dali::Actor::Property::SIZE_WIDTH }, + { "sizeHeight", Property::FLOAT, true, true, true, Dali::Actor::Property::SIZE_HEIGHT }, + { "sizeDepth", Property::FLOAT, true, true, true, Dali::Actor::Property::SIZE_DEPTH }, + { "position", Property::VECTOR3, true, true, true, Dali::Actor::Property::POSITION }, + { "positionX", Property::FLOAT, true, true, true, Dali::Actor::Property::POSITION_X }, + { "positionY", Property::FLOAT, true, true, true, Dali::Actor::Property::POSITION_Y }, + { "positionZ", Property::FLOAT, true, true, true, Dali::Actor::Property::POSITION_Z }, + { "worldPosition", Property::VECTOR3, false, false, true, Dali::Actor::Property::WORLD_POSITION }, + { "worldPositionX", Property::FLOAT, false, false, true, Dali::Actor::Property::WORLD_POSITION_X }, + { "worldPositionY", Property::FLOAT, false, false, true, Dali::Actor::Property::WORLD_POSITION_Y }, + { "worldPositionZ", Property::FLOAT, false, false, true, Dali::Actor::Property::WORLD_POSITION_Z }, + { "orientation", Property::ROTATION, true, true, true, Dali::Actor::Property::ORIENTATION }, + { "worldOrientation", Property::ROTATION, false, false, true, Dali::Actor::Property::WORLD_ORIENTATION }, + { "scale", Property::VECTOR3, true, true, true, Dali::Actor::Property::SCALE }, + { "scaleX", Property::FLOAT, true, true, true, Dali::Actor::Property::SCALE_X }, + { "scaleY", Property::FLOAT, true, true, true, Dali::Actor::Property::SCALE_Y }, + { "scaleZ", Property::FLOAT, true, true, true, Dali::Actor::Property::SCALE_Z }, + { "worldScale", Property::VECTOR3, false, false, true, Dali::Actor::Property::WORLD_SCALE }, + { "visible", Property::BOOLEAN, true, true, true, Dali::Actor::Property::VISIBLE }, + { "color", Property::VECTOR4, true, true, true, Dali::Actor::Property::COLOR }, + { "colorRed", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_RED }, + { "colorGreen", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_GREEN }, + { "colorBlue", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_BLUE }, + { "colorAlpha", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_ALPHA }, + { "worldColor", Property::VECTOR4, false, false, true, Dali::Actor::Property::WORLD_COLOR }, + { "worldMatrix", Property::MATRIX, false, false, true, Dali::Actor::Property::WORLD_MATRIX }, + { "name", Property::STRING, true, false, false, Dali::Actor::Property::NAME }, + { "sensitive", Property::BOOLEAN, true, false, false, Dali::Actor::Property::SENSITIVE }, + { "leaveRequired", Property::BOOLEAN, true, false, false, Dali::Actor::Property::LEAVE_REQUIRED }, + { "inheritOrientation", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_ORIENTATION }, + { "inheritScale", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_SCALE }, + { "colorMode", Property::STRING, true, false, false, Dali::Actor::Property::COLOR_MODE }, + { "drawMode", Property::STRING, true, false, false, Dali::Actor::Property::DRAW_MODE }, + { "sizeModeFactor", Property::VECTOR3, true, false, false, Dali::Actor::Property::SIZE_MODE_FACTOR }, + { "widthResizePolicy", Property::STRING, true, false, false, Dali::Actor::Property::WIDTH_RESIZE_POLICY }, + { "heightResizePolicy", Property::STRING, true, false, false, Dali::Actor::Property::HEIGHT_RESIZE_POLICY }, + { "sizeScalePolicy", Property::STRING, true, false, false, Dali::Actor::Property::SIZE_SCALE_POLICY }, + { "widthForHeight", Property::BOOLEAN, true, false, false, Dali::Actor::Property::WIDTH_FOR_HEIGHT }, + { "heightForWidth", Property::BOOLEAN, true, false, false, Dali::Actor::Property::HEIGHT_FOR_WIDTH }, + { "padding", Property::VECTOR4, true, false, false, Dali::Actor::Property::PADDING }, + { "minimumSize", Property::VECTOR2, true, false, false, Dali::Actor::Property::MINIMUM_SIZE }, + { "maximumSize", Property::VECTOR2, true, false, false, Dali::Actor::Property::MAXIMUM_SIZE }, + { "inheritPosition", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_POSITION }, + { "clippingMode", Property::STRING, true, false, false, Dali::Actor::Property::CLIPPING_MODE }, + { "layoutDirection", Property::STRING, true, false, false, Dali::Actor::Property::LAYOUT_DIRECTION }, + { "inheritLayoutDirection", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION }, + { "siblingOrder", Property::INTEGER, true, false, false, Dali::DevelActor::Property::SIBLING_ORDER }, + { "opacity", Property::FLOAT, true, true, true, Dali::DevelActor::Property::OPACITY }, + { "screenPosition", Property::VECTOR2, false, false, false, Dali::DevelActor::Property::SCREEN_POSITION }, + { "positionUsesAnchorPoint",Property::BOOLEAN, true, false, false, Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT }, + { "culled", Property::BOOLEAN, false, false, true, Dali::DevelActor::Property::CULLED }, +// camera own + { "type", Property::STRING, true, false, true, Dali::CameraActor::Property::TYPE }, + { "projectionMode", Property::STRING, true, false, true, Dali::CameraActor::Property::PROJECTION_MODE }, + { "fieldOfView", Property::FLOAT, true, false, true, Dali::CameraActor::Property::FIELD_OF_VIEW }, + { "aspectRatio", Property::FLOAT, true, false, true, Dali::CameraActor::Property::ASPECT_RATIO }, + { "nearPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::NEAR_PLANE_DISTANCE }, + { "farPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::FAR_PLANE_DISTANCE }, + { "leftPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::LEFT_PLANE_DISTANCE }, + { "rightPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::RIGHT_PLANE_DISTANCE }, + { "topPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::TOP_PLANE_DISTANCE }, + { "bottomPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::BOTTOM_PLANE_DISTANCE }, + { "targetPosition", Property::VECTOR3, true, false, true, Dali::CameraActor::Property::TARGET_POSITION }, + { "projectionMatrix", Property::MATRIX, false, false, true, Dali::CameraActor::Property::PROJECTION_MATRIX }, + { "viewMatrix", Property::MATRIX, false, false, true, Dali::CameraActor::Property::VIEW_MATRIX }, + { "invertYAxis", Property::BOOLEAN, true, false, true, Dali::CameraActor::Property::INVERT_Y_AXIS } + }; + + for( uint32_t index = 0; index < (sizeof(CAMERA_DEFAULT_PROPERTY)/sizeof(PropertyDetails)); ++index ) + { + TEST_CAMERA_PROPERTY( actor, + CAMERA_DEFAULT_PROPERTY[ index ].name, + CAMERA_DEFAULT_PROPERTY[ index ].type, + CAMERA_DEFAULT_PROPERTY[ index ].writable, + CAMERA_DEFAULT_PROPERTY[ index ].animatable, + CAMERA_DEFAULT_PROPERTY[ index ].constraintInput, + CAMERA_DEFAULT_PROPERTY[ index ].enumIndex, + TEST_LOCATION ); + } + END_TEST; +} + +int UtcDaliCameraActorModelView(void) +{ + TestApplication application; + tet_infoline( "Testing Dali::CameraActor Test view application" ); + + BufferImage image = CreateBufferImage(); + + Actor actor = CreateRenderableActor(image); + actor.SetSize( 100.0f, 100.0f ); + actor.SetPosition( 20.0f, 30.0f, 40.0f ); + actor.SetParentOrigin( ParentOrigin::CENTER ); + Stage::GetCurrent().Add( actor ); + + application.SendNotification(); + application.Render( 0 ); + application.Render(); + application.SendNotification(); + + Matrix resultMatrix( true ); + resultMatrix.SetTransformComponents( Vector3::ONE, Quaternion::IDENTITY, actor.GetCurrentPosition() ); + + RenderTask task = Stage::GetCurrent().GetRenderTaskList().GetTask( 0 ); + CameraActor cameraActor = task.GetCameraActor(); + + Matrix viewMatrix( false ); + cameraActor.GetProperty( CameraActor::Property::VIEW_MATRIX ).Get( viewMatrix ); + Matrix::Multiply( resultMatrix, resultMatrix, viewMatrix ); + + DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( "uModelView", resultMatrix ) ); + END_TEST; +} int UtcDaliCameraActorReadProjectionMatrix(void) { TestApplication application; - tet_infoline("Testing Dali::CameraActor::ReadProjectionMatrix()"); + tet_infoline( "Testing Dali::CameraActor::ReadProjectionMatrix()" ); - CameraActor camera = Stage::GetCurrent().GetRenderTaskList().GetTask(0u).GetCameraActor(); + CameraActor camera = Stage::GetCurrent().GetRenderTaskList().GetTask( 0u ).GetCameraActor(); application.SendNotification(); - application.Render(0); + application.Render( 0 ); application.Render(); application.SendNotification(); - Image image = CreateBitmapImage(); - ImageActor imageActor = ImageActor::New( image ); - imageActor.SetSize(100.0f, 100.0f); - Stage::GetCurrent().Add(imageActor); + Image image = CreateBufferImage(); + Actor actor = CreateRenderableActor( image, RENDER_SHADOW_VERTEX_SOURCE, RENDER_SHADOW_FRAGMENT_SOURCE ); + actor.SetSize( 100.0f, 100.0f ); + Stage::GetCurrent().Add( actor ); Matrix projectionMatrix; Matrix viewMatrix; - camera.GetProperty(CameraActor::CameraActor::PROJECTION_MATRIX).Get(projectionMatrix); - camera.GetProperty(CameraActor::CameraActor::VIEW_MATRIX).Get(viewMatrix); - - ShaderEffect shaderEffect = ShaderEffect::New( RENDER_SHADOW_VERTEX_SOURCE, RENDER_SHADOW_FRAGMENT_SOURCE); - imageActor.SetShaderEffect(shaderEffect); + camera.GetProperty( CameraActor::CameraActor::Property::PROJECTION_MATRIX ).Get( projectionMatrix ); + camera.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( viewMatrix ); - shaderEffect.SetUniform( SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME, Matrix::IDENTITY ); - shaderEffect.SetUniform( SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME, Matrix::IDENTITY ); + actor.RegisterProperty( SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME, Matrix::IDENTITY ); + actor.RegisterProperty( SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME, Matrix::IDENTITY ); - Property::Index projectionMatrixPropertyIndex = shaderEffect.GetPropertyIndex(SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME); - Property::Index viewMatrixPropertyIndex = shaderEffect.GetPropertyIndex(SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME); + Property::Index projectionMatrixPropertyIndex = actor.GetPropertyIndex( SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME ); + Property::Index viewMatrixPropertyIndex = actor.GetPropertyIndex( SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME ); - Constraint projectionMatrixConstraint = Constraint::New( projectionMatrixPropertyIndex, Source( camera, CameraActor::PROJECTION_MATRIX ), EqualToConstraint()); - Constraint viewMatrixConstraint = Constraint::New( viewMatrixPropertyIndex, Source( camera, CameraActor::VIEW_MATRIX ), EqualToConstraint()); + Constraint projectionMatrixConstraint = Constraint::New( actor, projectionMatrixPropertyIndex, EqualToConstraint() ); + projectionMatrixConstraint.AddSource( Source( camera, CameraActor::Property::PROJECTION_MATRIX ) ); + Constraint viewMatrixConstraint = Constraint::New( actor, viewMatrixPropertyIndex, EqualToConstraint() ); + viewMatrixConstraint.AddSource( Source( camera, CameraActor::Property::VIEW_MATRIX ) ); - shaderEffect.ApplyConstraint(projectionMatrixConstraint); - shaderEffect.ApplyConstraint(viewMatrixConstraint); + projectionMatrixConstraint.Apply(); + viewMatrixConstraint.Apply(); application.SendNotification(); application.Render(); // Test effects of Constraint. - DALI_TEST_CHECK(application.GetGlAbstraction().CheckUniformValue(SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME.c_str(), projectionMatrix)); + DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME.c_str(), projectionMatrix) ); - DALI_TEST_CHECK(application.GetGlAbstraction().CheckUniformValue(SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME.c_str(), viewMatrix)); + DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME.c_str(), viewMatrix ) ); END_TEST; } int UtcDaliCameraActorAnimatedProperties(void) { TestApplication application; - tet_infoline("Testing Dali::Internal::CameraActor::GetSceneObjectAnimatableProperty()"); + tet_infoline( "Testing Dali::Internal::CameraActor::GetSceneObjectAnimatableProperty()" ); - CameraActor camera = Stage::GetCurrent().GetRenderTaskList().GetTask(0u).GetCameraActor(); + CameraActor camera = Stage::GetCurrent().GetRenderTaskList().GetTask( 0u ).GetCameraActor(); Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - Stage::GetCurrent().Add(actor); + actor.SetSize( 100.0f, 100.0f ); + Stage::GetCurrent().Add( actor ); - actor.ApplyConstraint(Constraint::New( Actor::POSITION, Source( camera, Actor::POSITION), EqualToConstraint())); + Constraint constraint = Constraint::New( actor, Actor::Property::POSITION, EqualToConstraint() ); + constraint.AddSource( Source( camera, Actor::Property::POSITION ) ); + constraint.Apply(); - camera.SetPosition(100.0f, 200.0f, 300.0f); + camera.SetPosition( 100.0f, 200.0f, 300.0f ); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(100.0f, 200.0f, 300.0f), TEST_LOCATION); + DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3( 100.0f, 200.0f, 300.0f ), TEST_LOCATION); END_TEST; } int UtcDaliCameraActorPropertyIndices(void) { TestApplication application; - CameraActor camera = Stage::GetCurrent().GetRenderTaskList().GetTask(0u).GetCameraActor(); + CameraActor camera = Stage::GetCurrent().GetRenderTaskList().GetTask( 0u ).GetCameraActor(); Actor basicActor = Actor::New(); Property::IndexContainer indices; camera.GetPropertyIndices( indices ); - DALI_TEST_CHECK( indices.size() > basicActor.GetPropertyCount() ); - DALI_TEST_EQUALS( indices.size(), camera.GetPropertyCount(), TEST_LOCATION ); + DALI_TEST_CHECK( indices.Size() > basicActor.GetPropertyCount() ); + DALI_TEST_EQUALS( indices.Size(), camera.GetPropertyCount(), TEST_LOCATION ); END_TEST; } @@ -809,31 +1512,29 @@ int UtcDaliCameraActorCheckLookAtAndFreeLookViews01(void) Stage stage = Stage::GetCurrent(); Vector2 stageSize = stage.GetSize(); - CameraActor freeLookCameraActor = CameraActor::New(stageSize); - freeLookCameraActor.SetParentOrigin(ParentOrigin::CENTER); - freeLookCameraActor.SetType(Camera::FREE_LOOK); + CameraActor freeLookCameraActor = CameraActor::New( stageSize ); + freeLookCameraActor.SetParentOrigin( ParentOrigin::CENTER ); + freeLookCameraActor.SetType( Camera::FREE_LOOK ); - Vector3 targetPosition(30.0f, 240.0f, -256.0f); + Vector3 targetPosition( 30.0f, 240.0f, -256.0f ); Actor target = Actor::New(); - target.SetParentOrigin(ParentOrigin::CENTER); - target.SetPosition(targetPosition); - - Constraint cameraOrientationConstraint = - Constraint::New ( Actor::ROTATION, - Source( target, Actor::WORLD_POSITION ), - Source( freeLookCameraActor, Actor::WORLD_POSITION ), - Source( target, Actor::WORLD_ROTATION ), - &LookAt ); - freeLookCameraActor.ApplyConstraint( cameraOrientationConstraint ); - - CameraActor lookAtCameraActor = CameraActor::New(stageSize); - lookAtCameraActor.SetType(Camera::LOOK_AT_TARGET); - lookAtCameraActor.SetTargetPosition(targetPosition); - lookAtCameraActor.SetParentOrigin(ParentOrigin::CENTER); - - stage.Add(target); - stage.Add(freeLookCameraActor); - stage.Add(lookAtCameraActor); + target.SetParentOrigin( ParentOrigin::CENTER ); + target.SetPosition( targetPosition ); + + Constraint cameraOrientationConstraint = Constraint::New ( freeLookCameraActor, Actor::Property::ORIENTATION, &LookAt ); + cameraOrientationConstraint.AddSource( Source( target, Actor::Property::WORLD_POSITION ) ); + cameraOrientationConstraint.AddSource( Source( freeLookCameraActor, Actor::Property::WORLD_POSITION ) ); + cameraOrientationConstraint.AddSource( Source( target, Actor::Property::WORLD_ORIENTATION ) ); + cameraOrientationConstraint.Apply(); + + CameraActor lookAtCameraActor = CameraActor::New( stageSize ); + lookAtCameraActor.SetType( Camera::LOOK_AT_TARGET ); + lookAtCameraActor.SetTargetPosition( targetPosition ); + lookAtCameraActor.SetParentOrigin( ParentOrigin::CENTER ); + + stage.Add( target ); + stage.Add( freeLookCameraActor ); + stage.Add( lookAtCameraActor ); // Create an arbitrary vector for( float x=-1.0f; x<=1.0f; x+=0.1f ) @@ -842,12 +1543,12 @@ int UtcDaliCameraActorCheckLookAtAndFreeLookViews01(void) { for( float z=-1.0f; z<1.0f; z+=0.1f ) { - Vector3 position(x, y, z); + Vector3 position( x, y, z ); position.Normalize(); position *= 200.0f; - freeLookCameraActor.SetPosition(position); - lookAtCameraActor.SetPosition(position); + freeLookCameraActor.SetPosition( position ); + lookAtCameraActor.SetPosition( position ); application.SendNotification(); application.Render(); @@ -855,8 +1556,8 @@ int UtcDaliCameraActorCheckLookAtAndFreeLookViews01(void) application.Render(); Matrix freeLookViewMatrix; Matrix lookAtViewMatrix; - freeLookCameraActor.GetProperty(CameraActor::CameraActor::VIEW_MATRIX).Get(freeLookViewMatrix); - lookAtCameraActor.GetProperty(CameraActor::CameraActor::VIEW_MATRIX).Get(lookAtViewMatrix); + freeLookCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( freeLookViewMatrix ); + lookAtCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( lookAtViewMatrix ); DALI_TEST_EQUALS( freeLookViewMatrix, lookAtViewMatrix, 0.01, TEST_LOCATION ); } @@ -871,31 +1572,30 @@ int UtcDaliCameraActorCheckLookAtAndFreeLookViews02(void) Stage stage = Stage::GetCurrent(); Vector2 stageSize = stage.GetSize(); - CameraActor freeLookCameraActor = CameraActor::New(stageSize); - freeLookCameraActor.SetParentOrigin(ParentOrigin::CENTER); - freeLookCameraActor.SetType(Camera::FREE_LOOK); + CameraActor freeLookCameraActor = CameraActor::New( stageSize ); + freeLookCameraActor.SetParentOrigin( ParentOrigin::CENTER ); + freeLookCameraActor.SetType( Camera::FREE_LOOK ); - Vector3 targetPosition(30.0f, 240.0f, -256.0f); + Vector3 targetPosition( 30.0f, 240.0f, -256.0f ); Actor target = Actor::New(); - target.SetParentOrigin(ParentOrigin::CENTER); - target.SetPosition(targetPosition); - - Constraint cameraOrientationConstraint = - Constraint::New ( Actor::ROTATION, - Source( target, Actor::WORLD_POSITION ), - Source( freeLookCameraActor, Actor::WORLD_POSITION ), - Source( target, Actor::WORLD_ROTATION ), - &LookAt ); - freeLookCameraActor.ApplyConstraint( cameraOrientationConstraint ); - - CameraActor lookAtCameraActor = CameraActor::New(stageSize); - lookAtCameraActor.SetType(Camera::LOOK_AT_TARGET); - lookAtCameraActor.SetTargetPosition(targetPosition); - lookAtCameraActor.SetParentOrigin(ParentOrigin::CENTER); - - stage.Add(target); - stage.Add(freeLookCameraActor); - stage.Add(lookAtCameraActor); + target.SetParentOrigin( ParentOrigin::CENTER ); + target.SetPosition( targetPosition ); + + Constraint cameraOrientationConstraint = Constraint::New ( freeLookCameraActor, Actor::Property::ORIENTATION, &LookAt ); + cameraOrientationConstraint.AddSource( Source( target, Actor::Property::WORLD_POSITION ) ); + cameraOrientationConstraint.AddSource( Source( freeLookCameraActor, Actor::Property::WORLD_POSITION ) ); + cameraOrientationConstraint.AddSource( Source( target, Actor::Property::WORLD_ORIENTATION ) ); + cameraOrientationConstraint.Apply(); + + CameraActor lookAtCameraActor = CameraActor::New( stageSize ); + lookAtCameraActor.SetType( Camera::LOOK_AT_TARGET ); + lookAtCameraActor.SetTargetPosition( targetPosition ); + lookAtCameraActor.SetParentOrigin( ParentOrigin::CENTER ); + + stage.Add( target ); + stage.Add( freeLookCameraActor ); + stage.Add( lookAtCameraActor ); + stage.GetRenderTaskList().GetTask(0).SetCameraActor( freeLookCameraActor ); // Create an arbitrary vector for( float x=-1.0f; x<=1.0f; x+=0.1f ) @@ -904,32 +1604,29 @@ int UtcDaliCameraActorCheckLookAtAndFreeLookViews02(void) { for( float z=-1.0f; z<1.0f; z+=0.1f ) { - Vector3 position(x, y, z); + Vector3 position( x, y, z ); position.Normalize(); position *= 200.0f; - freeLookCameraActor.SetPosition(position); - lookAtCameraActor.SetPosition(position); + freeLookCameraActor.SetPosition( position ); + lookAtCameraActor.SetPosition( position ); application.SendNotification(); application.Render(); application.SendNotification(); application.Render(); Matrix freeLookViewMatrix; - Matrix lookAtViewMatrix; - freeLookCameraActor.GetProperty(CameraActor::CameraActor::VIEW_MATRIX).Get(freeLookViewMatrix); - lookAtCameraActor.GetProperty(CameraActor::CameraActor::VIEW_MATRIX).Get(lookAtViewMatrix); + freeLookCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( freeLookViewMatrix ); Matrix freeLookWorld = freeLookCameraActor.GetCurrentWorldMatrix(); - Matrix freeLookTest(false); - Matrix::Multiply(freeLookTest, freeLookViewMatrix, freeLookWorld); - DALI_TEST_EQUALS( freeLookTest, Matrix::IDENTITY, 0.01f, TEST_LOCATION); - - DALI_TEST_EQUALS( freeLookViewMatrix, lookAtViewMatrix, 0.01, TEST_LOCATION ); + Matrix freeLookTest( false ); + Matrix::Multiply( freeLookTest, freeLookViewMatrix, freeLookWorld ); + DALI_TEST_EQUALS( freeLookTest, Matrix::IDENTITY, 0.01f, TEST_LOCATION ); } } } + END_TEST; } @@ -939,35 +1636,28 @@ int UtcDaliCameraActorCheckLookAtAndFreeLookViews03(void) Stage stage = Stage::GetCurrent(); Vector2 stageSize = stage.GetSize(); - Vector3 targetPosition(Vector3::ZERO); + Vector3 targetPosition( Vector3::ZERO ); + Vector3 cameraOffset( 0.0f, 0.0f, 100.0f ); - CameraActor lookAtCameraActor = CameraActor::New(stageSize); - lookAtCameraActor.SetType(Camera::LOOK_AT_TARGET); - lookAtCameraActor.SetTargetPosition(targetPosition); - lookAtCameraActor.SetParentOrigin(ParentOrigin::CENTER); - stage.Add(lookAtCameraActor); + CameraActor freeLookCameraActor = CameraActor::New( stageSize ); + freeLookCameraActor.SetType( Camera::FREE_LOOK ); + freeLookCameraActor.SetParentOrigin( ParentOrigin::CENTER ); - Vector3 cameraOffset( 0.f, 0.f, 100.f ); - - CameraActor freeLookCameraActor = CameraActor::New(stageSize); - freeLookCameraActor.SetType(Camera::FREE_LOOK); - freeLookCameraActor.SetParentOrigin(ParentOrigin::CENTER); - - Quaternion cameraOrientation( Radian(Degree(180.f)), Vector3::YAXIS ); - freeLookCameraActor.SetPosition(cameraOffset); - freeLookCameraActor.SetRotation(cameraOrientation); + Quaternion cameraOrientation( Radian( Degree( 180.0f ) ), Vector3::YAXIS ); + freeLookCameraActor.SetPosition( cameraOffset ); + freeLookCameraActor.SetOrientation( cameraOrientation ); Actor cameraAnchor = Actor::New(); - cameraAnchor.Add(lookAtCameraActor); - stage.Add(cameraAnchor); - + cameraAnchor.Add( freeLookCameraActor ); + stage.Add( cameraAnchor ); + stage.GetRenderTaskList().GetTask(0).SetCameraActor( freeLookCameraActor ); - for( float angle = 1.f; angle <= 180.f; angle += 1.f ) + for( float angle = 1.0f; angle <= 180.0f; angle += 1.0f ) { - Quaternion rotation(Radian(Degree(angle)), Vector3::YAXIS); + Quaternion rotation( Radian( Degree( angle ) ), Vector3::YAXIS ); - lookAtCameraActor.SetPosition( rotation.Rotate( cameraOffset ) ); - cameraAnchor.SetRotation( rotation ); + freeLookCameraActor.SetPosition( rotation.Rotate( cameraOffset ) ); + cameraAnchor.SetOrientation( rotation ); application.SendNotification(); application.Render(); @@ -975,13 +1665,13 @@ int UtcDaliCameraActorCheckLookAtAndFreeLookViews03(void) application.Render(); Matrix freeLookViewMatrix; - freeLookCameraActor.GetProperty(CameraActor::CameraActor::VIEW_MATRIX).Get(freeLookViewMatrix); + freeLookCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( freeLookViewMatrix ); Matrix freeLookWorld = freeLookCameraActor.GetCurrentWorldMatrix(); - Matrix freeLookTest(false); - Matrix::Multiply( freeLookTest, freeLookViewMatrix, freeLookWorld); - DALI_TEST_EQUALS( freeLookTest, Matrix::IDENTITY, 0.01f, TEST_LOCATION); + Matrix freeLookTest( false ); + Matrix::Multiply( freeLookTest, freeLookViewMatrix, freeLookWorld ); + DALI_TEST_EQUALS( freeLookTest, Matrix::IDENTITY, 0.01f, TEST_LOCATION ); } END_TEST; }