X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-scene3d%2Futc-Dali-Model.cpp;h=6b6670cff7a56b6b532444b5d3d4c27962a72381;hb=HEAD;hp=e8a372c62f071396d7eb8e8cb0f02515ca1c34a3;hpb=4088486b2a4aebb751f803c4978e4cbd3b5e7eab;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 e8a372c..6b6670c 100644 --- a/automated-tests/src/dali-scene3d/utc-Dali-Model.cpp +++ b/automated-tests/src/dali-scene3d/utc-Dali-Model.cpp @@ -1430,6 +1430,72 @@ int UtcDaliModelResourceReady(void) END_TEST; } +int UtcDaliModelResourceReady02(void) +{ + tet_infoline("Test model load successfully even if shader language version is low\n"); + ToolkitTestApplication application; + + auto originalShaderVersion = application.GetGlAbstraction().GetShaderLanguageVersion(); + + // Change the shader language version forcely! + application.GetGlAbstraction().mShaderLanguageVersion = 200; + + try + { + gOnRelayoutCallBackCalled = false; + gResourceReadyCalled = false; + Scene3D::Model model = Scene3D::Model::New(TEST_GLTF_MORPH_FILE_NAME); + model.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + model.OnRelayoutSignal().Connect(OnRelayoutCallback); + model.ResourceReadySignal().Connect(OnResourceReady); + DALI_TEST_EQUALS(model.IsResourceReady(), false, TEST_LOCATION); + + // Sanity check + DALI_TEST_CHECK(!gOnRelayoutCallBackCalled); + DALI_TEST_CHECK(!gResourceReadyCalled); + + application.GetScene().Add(model); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(gOnRelayoutCallBackCalled, false, TEST_LOCATION); + DALI_TEST_EQUALS(model.IsResourceReady(), true, TEST_LOCATION); + DALI_TEST_EQUALS(gResourceReadyCalled, true, TEST_LOCATION); + + // Change material information, for line coverage. + auto modelNode = model.FindChildModelNodeByName("AnimatedMorphCube"); + DALI_TEST_CHECK(modelNode); + DALI_TEST_GREATER(modelNode.GetModelPrimitiveCount(), 0u, TEST_LOCATION); + auto modelPrimitive = modelNode.GetModelPrimitive(0u); + DALI_TEST_CHECK(modelPrimitive); + auto material = modelPrimitive.GetMaterial(); + DALI_TEST_CHECK(material); + + auto originBaseColorFactor = material.GetProperty(Dali::Scene3D::Material::Property::BASE_COLOR_FACTOR); + auto expectBaseColorFactor = Vector4(originBaseColorFactor.r + 0.05f, originBaseColorFactor.g - 0.05f, originBaseColorFactor.b, originBaseColorFactor.a); + material.SetProperty(Dali::Scene3D::Material::Property::BASE_COLOR_FACTOR, expectBaseColorFactor); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(material.GetProperty(Dali::Scene3D::Material::Property::BASE_COLOR_FACTOR), expectBaseColorFactor, TEST_LOCATION); + } + catch(...) + { + DALI_TEST_CHECK(false); + } + + // Revert shader version. We should revert it even if UTC failed. + application.GetGlAbstraction().mShaderLanguageVersion = originalShaderVersion; + + END_TEST; +} + int UtcDaliModelResourceCacheCheck(void) { ToolkitTestApplication application; @@ -1922,4 +1988,106 @@ int UtcDaliModelMaterialUniformChange(void) DALI_TEST_EQUALS(gl.CheckUniformValue(Scene3D::Loader::NodeDefinition::GetIblScaleFactorUniformName().data(), expectIblFactor), true, TEST_LOCATION); END_TEST; +} + +int UtcDaliModelCastShadow(void) +{ + ToolkitTestApplication application; + + Scene3D::Model model = Scene3D::Model::New(); + application.GetScene().Add(model); + + Scene3D::ModelNode modelNode = Scene3D::ModelNode::New(); + model.AddModelNode(modelNode); + + DALI_TEST_EQUALS(model.IsShadowCasting(), true, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.IsShadowCasting(), true, TEST_LOCATION); + + auto shadowCastingIndex = modelNode.GetPropertyIndex("uIsShadowCasting"); + DALI_TEST_EQUALS(modelNode.GetProperty(shadowCastingIndex), 1, TEST_LOCATION); + + model.CastShadow(false); + + DALI_TEST_EQUALS(model.IsShadowCasting(), false, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.IsShadowCasting(), false, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.GetProperty(shadowCastingIndex), 0, TEST_LOCATION); + + Scene3D::ModelNode modelNode2 = Scene3D::ModelNode::New(); + model.AddModelNode(modelNode2); + + DALI_TEST_EQUALS(modelNode2.IsShadowCasting(), true, TEST_LOCATION); + + auto shadowCastingIndex2 = modelNode2.GetPropertyIndex("uIsShadowCasting"); + DALI_TEST_EQUALS(modelNode2.GetProperty(shadowCastingIndex2), 1, TEST_LOCATION); + + modelNode.CastShadow(true); + + DALI_TEST_EQUALS(modelNode.IsShadowCasting(), true, TEST_LOCATION); + + DALI_TEST_EQUALS(model.IsShadowCasting(), false, TEST_LOCATION); + + model.CastShadow(false); + + DALI_TEST_EQUALS(model.IsShadowCasting(), false, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.IsShadowCasting(), false, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.GetProperty(shadowCastingIndex), 0, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode2.GetProperty(shadowCastingIndex2), 0, TEST_LOCATION); + END_TEST; +} + +int UtcDaliModelReceiveShadow(void) +{ + ToolkitTestApplication application; + + Scene3D::Model model = Scene3D::Model::New(); + application.GetScene().Add(model); + + Scene3D::ModelNode modelNode = Scene3D::ModelNode::New(); + model.AddModelNode(modelNode); + + DALI_TEST_EQUALS(model.IsShadowReceiving(), true, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.IsShadowReceiving(), true, TEST_LOCATION); + + auto shadowReceivingIndex = modelNode.GetPropertyIndex("uIsShadowReceiving"); + DALI_TEST_EQUALS(modelNode.GetProperty(shadowReceivingIndex), 1, TEST_LOCATION); + + model.ReceiveShadow(false); + + DALI_TEST_EQUALS(model.IsShadowReceiving(), false, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.IsShadowReceiving(), false, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.GetProperty(shadowReceivingIndex), 0, TEST_LOCATION); + + Scene3D::ModelNode modelNode2 = Scene3D::ModelNode::New(); + model.AddModelNode(modelNode2); + + DALI_TEST_EQUALS(modelNode2.IsShadowReceiving(), true, TEST_LOCATION); + + auto shadowReceivingIndex2 = modelNode2.GetPropertyIndex("uIsShadowReceiving"); + DALI_TEST_EQUALS(modelNode2.GetProperty(shadowReceivingIndex2), 1, TEST_LOCATION); + + modelNode.ReceiveShadow(true); + + DALI_TEST_EQUALS(modelNode.IsShadowReceiving(), true, TEST_LOCATION); + + DALI_TEST_EQUALS(model.IsShadowReceiving(), false, TEST_LOCATION); + + model.ReceiveShadow(false); + + DALI_TEST_EQUALS(model.IsShadowReceiving(), false, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.IsShadowReceiving(), false, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode.GetProperty(shadowReceivingIndex), 0, TEST_LOCATION); + + DALI_TEST_EQUALS(modelNode2.GetProperty(shadowReceivingIndex2), 0, TEST_LOCATION); + END_TEST; } \ No newline at end of file