X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-scene3d%2Futc-Dali-Model.cpp;h=b2d8169bfe4bab88e8b1d82b6123a3187cd43d91;hb=refs%2Fchanges%2F45%2F292445%2F12;hp=28b929eb812d8ca2f49814f70539c727c2126f70;hpb=6ec87c2ab9a238178a48feab6f83f85d4226d16e;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-scene3d/utc-Dali-Model.cpp b/automated-tests/src/dali-scene3d/utc-Dali-Model.cpp index 28b929e..b2d8169 100644 --- a/automated-tests/src/dali-scene3d/utc-Dali-Model.cpp +++ b/automated-tests/src/dali-scene3d/utc-Dali-Model.cpp @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -25,6 +26,7 @@ #include #include +#include #include @@ -52,9 +54,10 @@ const bool DEFAULT_MODEL_CHILDREN_FOCUSABLE = false; */ const char* TEST_GLTF_FILE_NAME = TEST_RESOURCE_DIR "/AnimatedCube.gltf"; const char* TEST_GLTF_ANIMATION_TEST_FILE_NAME = TEST_RESOURCE_DIR "/animationTest.gltf"; +const char* TEST_GLTF_EXTRAS_FILE_NAME = TEST_RESOURCE_DIR "/AnimatedMorphCubeAnimateNonZeroFrame.gltf"; const char* TEST_GLTF_MULTIPLE_PRIMITIVE_FILE_NAME = TEST_RESOURCE_DIR "/simpleMultiplePrimitiveTest.gltf"; const char* TEST_DLI_FILE_NAME = TEST_RESOURCE_DIR "/arc.dli"; -const char* TEST_DLI_EXERCISE_FILE_NAME = TEST_RESOURCE_DIR "/exercise.dli"; +const char* TEST_DLI_EXERCISE_FILE_NAME = TEST_RESOURCE_DIR "/exercise.dli"; /** * For the diffuse and specular cube map texture. @@ -148,6 +151,26 @@ int UtcDaliModelNew(void) } // Positive test case for a method +int UtcDaliModelNewP2(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliModelNew without url"); + + Scene3D::Model model = Scene3D::Model::New(); + DALI_TEST_CHECK(model); + + application.GetScene().Add(model); + + DALI_TEST_CHECK(model.GetProperty(Actor::Property::CONNECTED_TO_SCENE)); + + application.GetScene().Remove(model); + + DALI_TEST_CHECK(!model.GetProperty(Actor::Property::CONNECTED_TO_SCENE)); + + END_TEST; +} + +// Positive test case for a method int UtcDaliModelDownCast(void) { ToolkitTestApplication application; @@ -311,8 +334,8 @@ int UtcDaliModelOnScene02(void) uint32_t modelCount = model.GetModelRoot().GetChildCount(); DALI_TEST_EQUALS(1, modelCount, TEST_LOCATION); - Actor rootActor = model.GetModelRoot(); - Vector3 rootSize = rootActor.GetProperty(Dali::Actor::Property::SIZE); + Scene3D::ModelNode rootNode = model.GetModelRoot(); + Vector3 rootSize = rootNode.GetProperty(Dali::Actor::Property::SIZE); DALI_TEST_EQUALS(Vector3(2, 2, 1), rootSize, TEST_LOCATION); END_TEST; @@ -363,8 +386,8 @@ int UtcDaliModelGetNaturalSize(void) naturalSize = model.GetNaturalSize(); DALI_TEST_EQUALS(Vector3(2, 2, 2), naturalSize, TEST_LOCATION); - Actor root = model.GetModelRoot(); - DALI_TEST_CHECK(root); + Scene3D::ModelNode rootNode = model.GetModelRoot(); + DALI_TEST_CHECK(rootNode); END_TEST; } @@ -1122,7 +1145,7 @@ int UtcDaliModelCameraGenerate02(void) { DALI_TEST_EQUALS(lhs.GetProperty(Dali::CameraActor::Property::FIELD_OF_VIEW), rhs.GetProperty(Dali::CameraActor::Property::FIELD_OF_VIEW), TEST_LOCATION); // TODO : Open this test when infinity far projection implement. - //DALI_TEST_EQUALS(lhs.GetProperty(Dali::CameraActor::Property::FAR_PLANE_DISTANCE), rhs.GetProperty(Dali::CameraActor::Property::FAR_PLANE_DISTANCE), TEST_LOCATION); + // DALI_TEST_EQUALS(lhs.GetProperty(Dali::CameraActor::Property::FAR_PLANE_DISTANCE), rhs.GetProperty(Dali::CameraActor::Property::FAR_PLANE_DISTANCE), TEST_LOCATION); } else { @@ -1327,7 +1350,7 @@ int UtcDaliModelResourceCacheCheck(void) DALI_TEST_EQUALS(textureSet2.GetTextureCount(), 9u, TEST_LOCATION); DALI_TEST_EQUALS(textureSet3.GetTextureCount(), 9u, TEST_LOCATION); - for (uint32_t i = 0; i < 7u; i++) + for(uint32_t i = 0; i < 7u; i++) { DALI_TEST_EQUALS(textureSet2.GetTexture(i), textureSet3.GetTexture(i), TEST_LOCATION); } @@ -1338,3 +1361,181 @@ int UtcDaliModelResourceCacheCheck(void) END_TEST; } +int UtcDaliModelAddRemoveModelNode(void) +{ + ToolkitTestApplication application; + + Scene3D::Model model = Scene3D::Model::New(); + model.SetProperty(Dali::Actor::Property::SIZE, Vector2(50, 50)); + + Scene3D::ModelNode node1 = Scene3D::ModelNode::New(); + Scene3D::ModelNode node2 = Scene3D::ModelNode::New(); + Scene3D::ModelNode node3 = Scene3D::ModelNode::New(); + Scene3D::ModelNode node4 = Scene3D::ModelNode::New(); + + model.AddModelNode(node1); + model.AddModelNode(node2); + model.AddModelNode(node3); + model.RemoveModelNode(node1); // Remove node before scene on + + application.GetScene().Add(model); + + Dali::Scene3D::ModelNode root = model.GetModelRoot(); + DALI_TEST_CHECK(root); + DALI_TEST_EQUALS(2, root.GetChildCount(), TEST_LOCATION); + + model.RemoveModelNode(node2); // Remove node after scene on + + DALI_TEST_EQUALS(1, root.GetChildCount(), TEST_LOCATION); + + model.AddModelNode(node4); // Add during scene on + + DALI_TEST_EQUALS(2, root.GetChildCount(), TEST_LOCATION); + + application.GetScene().Remove(model); + + model.RemoveModelNode(node3); // Remove node after scene off + + END_TEST; +} + +int UtcDaliModelFindChildModelNodeByName(void) +{ + tet_infoline(" UtcDaliModelNodeFindChildModelNodeByName."); + + ToolkitTestApplication application; + + Scene3D::Model model = Scene3D::Model::New(); + application.GetScene().Add(model); + + Scene3D::ModelNode modelNode1 = Scene3D::ModelNode::New(); + Scene3D::ModelNode modelNode2 = Scene3D::ModelNode::New(); + + modelNode1.SetProperty(Dali::Actor::Property::NAME, "modelNode1"); + modelNode2.SetProperty(Dali::Actor::Property::NAME, "modelNode2"); + model.AddModelNode(modelNode1); + model.AddModelNode(modelNode2); + + Scene3D::ModelNode child1 = model.FindChildModelNodeByName("modelNode1"); + DALI_TEST_CHECK(child1); + DALI_TEST_EQUALS(child1, modelNode1, TEST_LOCATION); + + Scene3D::ModelNode child2 = model.FindChildModelNodeByName("modelNode2"); + DALI_TEST_CHECK(child2); + DALI_TEST_EQUALS(child2, modelNode2, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliModelSizeChange(void) +{ + tet_infoline(" UtcDaliModelSizeChange."); + + ToolkitTestApplication application; + + Scene3D::Model model = Scene3D::Model::New(TEST_GLTF_FILE_NAME); + model.SetProperty(Dali::Actor::Property::SIZE, Vector3(300, 300, 300)); + application.GetScene().Add(model); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(model.GetChildCount(), 1u, TEST_LOCATION); + Vector3 scale = model.GetChildAt(0u).GetProperty(Dali::Actor::Property::SCALE); + + model.SetProperty(Dali::Actor::Property::SIZE, Vector3(600, 600, 600)); + Vector3 scale2 = model.GetChildAt(0u).GetProperty(Dali::Actor::Property::SCALE); + + DALI_TEST_NOT_EQUALS(scale, scale2, 0.1f, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliModelSizeChange2(void) +{ + tet_infoline(" UtcDaliModelSizeChange2."); + + ToolkitTestApplication application; + + Scene3D::Model model = Scene3D::Model::New(TEST_GLTF_FILE_NAME); + model.SetProperty(Dali::Actor::Property::SIZE, Vector3(300, 300, 300)); + application.GetScene().Add(model); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(model.GetChildCount(), 1u, TEST_LOCATION); + Vector3 scale = model.GetChildAt(0u).GetProperty(Dali::Actor::Property::SCALE); + + Animation animation = Animation::New(0.5f); + animation.AnimateTo(Dali::Property(model, Dali::Actor::Property::SIZE), Vector3(600, 600, 600)); + animation.Play(); + + application.SendNotification(); + application.Render(250); + + application.SendNotification(); + + Vector3 scale2 = model.GetChildAt(0u).GetProperty(Dali::Actor::Property::SCALE); + DALI_TEST_NOT_EQUALS(scale, scale2, 0.1f, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliModelRetrieveBlendShapeNames(void) +{ + tet_infoline(" UtcDaliModelRetrieveBlendShapeByName."); + + ToolkitTestApplication application; + + Scene3D::Model model = Scene3D::Model::New(TEST_GLTF_EXTRAS_FILE_NAME); + model.SetProperty(Dali::Actor::Property::SIZE, Vector3(300, 300, 300)); + application.GetScene().Add(model); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(model.GetChildCount(), 1u, TEST_LOCATION); + + // Get target ModelNode that has extras + Scene3D::ModelNode expectNode = model.FindChildModelNodeByName("AnimatedMorphCube"); + + // Pair of expected blend shape index from expectNode. + std::map expectBlendShapeNames = { + {"Target_0", 0u}, + {"Target_1", 1u}, + }; + + std::vector blendShapeNameList; + model.RetrieveBlendShapeNames(blendShapeNameList); + + DALI_TEST_EQUALS(blendShapeNameList.size(), expectBlendShapeNames.size(), TEST_LOCATION); + for(auto i = 0u; i < blendShapeNameList.size(); ++i) + { + const auto& name = blendShapeNameList[i]; + tet_printf("Check retrieved blendshape name : %s\n", name.c_str()); + + const auto& iter = expectBlendShapeNames.find(name); + DALI_TEST_CHECK(iter != expectBlendShapeNames.end()); + + std::vector nodeList; + model.RetrieveModelNodesByBlendShapeName(name, nodeList); + DALI_TEST_EQUALS(nodeList.size(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(nodeList[0], expectNode, TEST_LOCATION); + DALI_TEST_EQUALS(nodeList[0].GetBlendShapeIndexByName(name), iter->second, TEST_LOCATION); + } + + END_TEST; +}