From f8043328eae9ab95fdb749ee83081e37784052fb Mon Sep 17 00:00:00 2001 From: David Steele Date: Thu, 23 Jun 2016 11:56:10 +0100 Subject: [PATCH] Addition of new test cases Change-Id: If9545be92a81324b6fb51dec088b77e084a0cf70 --- .../src/dali-toolkit/utc-Dali-FlexContainer.cpp | 274 +++++++++++++++++++++ .../src/dali-toolkit/utc-Dali-Slider.cpp | 204 ++++++++++++++- build/tizen/Makefile.am | 2 +- packaging/dali-toolkit.spec | 7 +- 4 files changed, 483 insertions(+), 4 deletions(-) diff --git a/automated-tests/src/dali-toolkit/utc-Dali-FlexContainer.cpp b/automated-tests/src/dali-toolkit/utc-Dali-FlexContainer.cpp index b92e8e7..f602079 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-FlexContainer.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-FlexContainer.cpp @@ -186,6 +186,53 @@ int UtcDaliToolkitFlexContainerSetPropertyP(void) END_TEST; } + +int UtcDaliToolkitFlexContainerSetPropertyEnumP(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitFlexContainerSetPropertyEnumP"); + FlexContainer flexContainer = FlexContainer::New(); + DALI_TEST_CHECK( flexContainer ); + + // Add flex container to the stage + Stage::GetCurrent().Add( flexContainer ); + + // Create two actors and add them to the container + Actor actor1 = Actor::New(); + Actor actor2 = Actor::New(); + DALI_TEST_CHECK( actor1 ); + DALI_TEST_CHECK( actor2 ); + + flexContainer.Add(actor1); + flexContainer.Add(actor2); + + // Check content direction property. + flexContainer.SetProperty( FlexContainer::Property::CONTENT_DIRECTION, "RTL" ); + DALI_TEST_EQUALS( (FlexContainer::ContentDirection)flexContainer.GetProperty( FlexContainer::Property::CONTENT_DIRECTION ), FlexContainer::RTL, TEST_LOCATION ); + + // Check flex direction property. + flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, "columnReverse" ); + DALI_TEST_EQUALS( (FlexContainer::FlexDirection)flexContainer.GetProperty( FlexContainer::Property::FLEX_DIRECTION ), FlexContainer::COLUMN_REVERSE, TEST_LOCATION ); + + // Check flex wrap property. + flexContainer.SetProperty( FlexContainer::Property::FLEX_WRAP, "wrap" ); + DALI_TEST_EQUALS( (FlexContainer::WrapType)flexContainer.GetProperty( FlexContainer::Property::FLEX_WRAP ), FlexContainer::WRAP, TEST_LOCATION ); + + // Check justify content property. + flexContainer.SetProperty( FlexContainer::Property::JUSTIFY_CONTENT, "spaceBetween" ); + DALI_TEST_EQUALS( (FlexContainer::Justification)flexContainer.GetProperty( FlexContainer::Property::JUSTIFY_CONTENT ), FlexContainer::JUSTIFY_SPACE_BETWEEN, TEST_LOCATION ); + + // Check align items property. + flexContainer.SetProperty( FlexContainer::Property::ALIGN_ITEMS, "flexStart" ); + DALI_TEST_EQUALS( (FlexContainer::Alignment)flexContainer.GetProperty( FlexContainer::Property::ALIGN_ITEMS ), FlexContainer::ALIGN_FLEX_START, TEST_LOCATION ); + + // Check align content property. + flexContainer.SetProperty( FlexContainer::Property::ALIGN_CONTENT, "stretch" ); + DALI_TEST_EQUALS( (FlexContainer::Alignment)flexContainer.GetProperty( FlexContainer::Property::ALIGN_CONTENT ), FlexContainer::ALIGN_STRETCH, TEST_LOCATION ); + + END_TEST; +} + int UtcDaliToolkitFlexContainerSetChildPropertyP(void) { ToolkitTestApplication application; @@ -217,6 +264,233 @@ int UtcDaliToolkitFlexContainerSetChildPropertyP(void) DALI_TEST_EQUALS( actor.GetProperty( FlexContainer::ChildProperty::FLEX_MARGIN ), Vector4( 10.0f, 10.0f, 10.0f, 10.0f ), TEST_LOCATION ); DALI_TEST_CHECK( actor.GetPropertyIndex( CHILD_PROPERTY_NAME_FLEX_MARGIN ) == FlexContainer::ChildProperty::FLEX_MARGIN ); + application.SendNotification(); + application.Render(); + + END_TEST; +} + + + +//Functor to test whether RelayoutSignal is emitted +class RelayoutSignalHandler : public Dali::ConnectionTracker +{ +public: + + RelayoutSignalHandler( FlexContainer& actor ) + : mSignalVerified( false ), + mActor( actor ) + { + } + + // callback to be connected to RelayoutSignal + void RelayoutCallback( Actor actor ) + { + if( mActor == actor ) + { + mSignalVerified = true; + } + } + + void Reset() + { + mSignalVerified = false; + } + + bool mSignalVerified; + Actor& mActor; +}; + +int UtcDaliToolkitFlexContainerRemoveChildP(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitFlexContainerSetPropertyP"); + FlexContainer flexContainer = FlexContainer::New(); + DALI_TEST_CHECK( flexContainer ); + + // Add flex container to the stage + Stage::GetCurrent().Add( flexContainer ); + + RelayoutSignalHandler relayoutSignal(flexContainer); + flexContainer.OnRelayoutSignal().Connect(&relayoutSignal, &RelayoutSignalHandler::RelayoutCallback ); + + // Create two actors and add them to the container + Actor actor1 = Actor::New(); + Actor actor2 = Actor::New(); + DALI_TEST_CHECK( actor1 ); + DALI_TEST_CHECK( actor2 ); + + flexContainer.Add(actor1); + flexContainer.Add(actor2); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( relayoutSignal.mSignalVerified, true, TEST_LOCATION ); + relayoutSignal.Reset(); + + DALI_TEST_CHECK( actor1 ); + DALI_TEST_CHECK( actor2 ); + + flexContainer.Remove(actor1); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS( relayoutSignal.mSignalVerified, true, TEST_LOCATION ); + relayoutSignal.Reset(); + + flexContainer.Remove(actor2); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS( relayoutSignal.mSignalVerified, true, TEST_LOCATION ); + relayoutSignal.Reset(); + END_TEST; } +namespace +{ + +// Functors to test whether PreFocusChange signal is emitted when the keyboard focus is about to change +class PreFocusChangeCallback : public Dali::ConnectionTracker +{ +public: + PreFocusChangeCallback(bool& signalReceived, Actor firstFocusActor) + : mSignalVerified(signalReceived), + mFirstFocusActor(firstFocusActor), + mDirection(Control::KeyboardFocus::LEFT) + { + } + + Actor Callback(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocus::Direction direction) + { + tet_infoline("Verifying PreFocusChangeCallback()"); + + mSignalVerified = true; + mDirection = direction; + if( ! proposedActorToFocus ) + { + return mFirstFocusActor; + } + else + { + return proposedActorToFocus; + } + } + + void Reset() + { + mSignalVerified = false; + mDirection = Control::KeyboardFocus::LEFT; + } + + bool& mSignalVerified; + Actor mFirstFocusActor; + Control::KeyboardFocus::Direction mDirection; +}; + +// Functors to test whether focus changed signal is emitted when the keyboard focus is changed +class FocusChangedCallback : public Dali::ConnectionTracker +{ +public: + FocusChangedCallback(bool& signalReceived) + : mSignalVerified(signalReceived), + mOriginalFocusedActor(), + mCurrentFocusedActor() + { + } + + void Callback(Actor originalFocusedActor, Actor currentFocusedActor) + { + tet_infoline("Verifying FocusChangedCallback()"); + + if(originalFocusedActor == mCurrentFocusedActor) + { + mSignalVerified = true; + } + + mOriginalFocusedActor = originalFocusedActor; + mCurrentFocusedActor = currentFocusedActor; + } + + void Reset() + { + mSignalVerified = false; + } + + bool& mSignalVerified; + Actor mOriginalFocusedActor; + Actor mCurrentFocusedActor; +}; + +} // anonymous namespace + + +int UtcDaliToolkitFlexContainerMoveFocus(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitFlexContainerSetPropertyP"); + FlexContainer flexContainer = FlexContainer::New(); + DALI_TEST_CHECK( flexContainer ); + + flexContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::ROW ); + + // Add flex container to the stage + Stage::GetCurrent().Add( flexContainer ); + Size stageSize = Stage::GetCurrent().GetSize(); + + RelayoutSignalHandler relayoutSignal(flexContainer); + flexContainer.OnRelayoutSignal().Connect(&relayoutSignal, &RelayoutSignalHandler::RelayoutCallback ); + flexContainer.SetSize( stageSize ); + + // Create two actors and add them to the container + Actor actor1 = Actor::New(); + Actor actor2 = Actor::New(); + actor1.SetKeyboardFocusable(true); + actor2.SetKeyboardFocusable(true); + DALI_TEST_CHECK( actor1 ); + DALI_TEST_CHECK( actor2 ); + + flexContainer.Add(actor1); + flexContainer.Add(actor2); + + application.SendNotification(); + application.Render(); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + DALI_TEST_CHECK(manager); + + bool preFocusChangeSignalVerified = false; + PreFocusChangeCallback preFocusChangeCallback(preFocusChangeSignalVerified, actor1); + manager.PreFocusChangeSignal().Connect( &preFocusChangeCallback, &PreFocusChangeCallback::Callback ); + + bool focusChangedSignalVerified = false; + FocusChangedCallback focusChangedCallback(focusChangedSignalVerified); + manager.FocusChangedSignal().Connect( &focusChangedCallback, &FocusChangedCallback::Callback ); + + // Move the focus to the right + DALI_TEST_EQUALS(manager.MoveFocus(Control::KeyboardFocus::RIGHT), true, TEST_LOCATION); + DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified); + DALI_TEST_EQUALS(manager.GetCurrentFocusActor(), actor1, TEST_LOCATION); + preFocusChangeCallback.Reset(); + DALI_TEST_EQUALS(focusChangedCallback.mCurrentFocusedActor, actor1, TEST_LOCATION); + focusChangedCallback.Reset(); + + // Move the focus towards right + DALI_TEST_EQUALS(manager.MoveFocus(Control::KeyboardFocus::RIGHT), true, TEST_LOCATION); + DALI_TEST_EQUALS(preFocusChangeCallback.mSignalVerified, true, TEST_LOCATION); + DALI_TEST_EQUALS(manager.GetCurrentFocusActor(), actor2, TEST_LOCATION); + DALI_TEST_EQUALS(focusChangedCallback.mSignalVerified, true, TEST_LOCATION); + DALI_TEST_EQUALS(focusChangedCallback.mCurrentFocusedActor, actor2, TEST_LOCATION); + + preFocusChangeCallback.Reset(); + focusChangedCallback.Reset(); + + // Move the focus towards left + DALI_TEST_EQUALS(manager.MoveFocus(Control::KeyboardFocus::LEFT), true, TEST_LOCATION); + DALI_TEST_EQUALS(preFocusChangeCallback.mSignalVerified, true, TEST_LOCATION); + DALI_TEST_EQUALS(manager.GetCurrentFocusActor(), actor1, TEST_LOCATION); + DALI_TEST_EQUALS(focusChangedCallback.mSignalVerified, true, TEST_LOCATION); + DALI_TEST_EQUALS(focusChangedCallback.mCurrentFocusedActor, actor1, TEST_LOCATION); + + END_TEST; +} diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp index 7ec6acf..e96556b 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp @@ -20,6 +20,7 @@ #include #include #include +#include using namespace Dali; using namespace Dali::Toolkit; @@ -114,10 +115,10 @@ static bool OnSliderMark( Slider slider, int value ) return true; } -int UtcDaliSliderSignals(void) +int UtcDaliSliderSignals1(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication - tet_infoline(" UtcDaliSliderSignals"); + tet_infoline(" UtcDaliSliderSignals1"); // Create the Popup actor Slider slider = Slider::New(); @@ -178,3 +179,202 @@ int UtcDaliSliderSignals(void) DALI_TEST_CHECK(gSliderMarkCallBackCalled); END_TEST; } + + +namespace +{ +bool gSliderSignal=false; +struct SliderSignalFunctor +{ + SliderSignalFunctor() + { + } + + void operator()() + { + gSliderSignal = true; + } +}; +} // anonymous + + + +int UtcDaliSliderSignals2(void) +{ + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + tet_infoline(" UtcDaliSliderSignals1"); + + // Create the Popup actor + Slider slider = Slider::New(); + Stage::GetCurrent().Add( slider ); + slider.SetParentOrigin(ParentOrigin::TOP_LEFT); + slider.SetAnchorPoint(ParentOrigin::TOP_LEFT); + slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) ); + slider.SetPosition( 0.0f, 0.0f ); + + const float MIN_BOUND = 0.0f; + const float MAX_BOUND = 1.0f; + const int NUM_MARKS = 5; + Property::Array marks; + for( int i = 0; i < NUM_MARKS; ++i ) + { + marks.PushBack( MIN_BOUND + ( static_cast(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) ); + } + slider.SetProperty( Slider::Property::MARKS, marks ); + slider.SetProperty( Slider::Property::MARK_TOLERANCE, 0.1f ); + + gSliderSignal = false; + ConnectionTracker* testTracker = new ConnectionTracker(); + slider.ConnectSignal( testTracker, "valueChanged", SliderSignalFunctor() ); + + application.SendNotification(); + application.Render(); + + gSliderValueChangedCallBackCalled = false; + gSliderMarkCallBackCalled = false; + + Dali::Integration::TouchEvent event; + + event = Dali::Integration::TouchEvent(); + + Integration::Point pointDown; + pointDown.SetState( PointState::DOWN ); + pointDown.SetScreenPosition( Vector2( 10.0f, 10.0f ) ); + event.AddPoint( pointDown ); + + for( int i = 0; i < 5; ++i ) + { + Integration::Point pointMotion; + pointMotion.SetState( PointState::MOTION ); + pointMotion.SetScreenPosition( Vector2( 10.0f + i * 10.0f, 10.0f ) ); + event.AddPoint( pointMotion ); + } + + Integration::Point pointUp; + pointUp.SetState( PointState::UP ); + pointUp.SetScreenPosition( Vector2( 10.0f, 10.0f ) ); + event.AddPoint( pointUp ); + + application.ProcessEvent( event ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK(gSliderSignal); + END_TEST; +} + +int UtcDaliSetPropertyP(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliSetPropertyP" ); + + Slider slider = Slider::New(); + slider.SetParentOrigin(ParentOrigin::TOP_LEFT); + slider.SetAnchorPoint(ParentOrigin::TOP_LEFT); + slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) ); + slider.SetPosition( 0.0f, 0.0f ); + + Stage::GetCurrent().Add(slider); + application.SendNotification(); + application.Render(); + + Property::Map map; + map["rendererType"] = "image"; + map["url"] = "url"; + slider.SetProperty(Slider::Property::LOWER_BOUND, 1.0f); + slider.SetProperty(Slider::Property::UPPER_BOUND, 5.0f); + slider.SetProperty(Slider::Property::VALUE, 3.0f); + slider.SetProperty(Slider::Property::DISABLED_COLOR, Color::BLACK); + slider.SetProperty(Slider::Property::VALUE_PRECISION, 4); + slider.SetProperty(Slider::Property::SHOW_POPUP, true); + slider.SetProperty(Slider::Property::SHOW_VALUE, true); + slider.SetProperty(Slider::Property::MARKS, false); + slider.SetProperty(Slider::Property::SNAP_TO_MARKS, false); + slider.SetProperty(Slider::Property::MARK_TOLERANCE, 0.5f); + + float lb = slider.GetProperty(Slider::Property::LOWER_BOUND); + DALI_TEST_EQUALS(lb, 1.0f, TEST_LOCATION); + float ub = slider.GetProperty(Slider::Property::UPPER_BOUND); + DALI_TEST_EQUALS(ub, 5.0f, TEST_LOCATION); + float val = slider.GetProperty(Slider::Property::VALUE); + DALI_TEST_EQUALS(val, 3.0f, TEST_LOCATION); + Vector4 color = slider.GetProperty(Slider::Property::DISABLED_COLOR); + DALI_TEST_EQUALS( color, Color::BLACK, TEST_LOCATION ); + int precision = slider.GetProperty(Slider::Property::VALUE_PRECISION); + DALI_TEST_EQUALS( precision, 4, TEST_LOCATION); + bool showPopup = slider.GetProperty(Slider::Property::SHOW_POPUP); + DALI_TEST_EQUALS( showPopup, true , TEST_LOCATION); + bool showValue = slider.GetProperty(Slider::Property::SHOW_VALUE); + DALI_TEST_EQUALS( showValue, true, TEST_LOCATION ); + bool marks = slider.GetProperty(Slider::Property::MARKS); + DALI_TEST_EQUALS( marks, false, TEST_LOCATION ); + bool snapToMarks = slider.GetProperty(Slider::Property::SNAP_TO_MARKS); + DALI_TEST_EQUALS( snapToMarks, false, TEST_LOCATION ); + float tolerance = slider.GetProperty(Slider::Property::MARK_TOLERANCE); + DALI_TEST_EQUALS( tolerance, 0.5f, TEST_LOCATION ); + + { + map["url"] = "track2.png"; + slider.SetProperty(Slider::Property::TRACK_VISUAL, map); + map["url"] = "handle2.png"; + slider.SetProperty(Slider::Property::HANDLE_VISUAL, map); + map["url"] = "progress2.png"; + slider.SetProperty(Slider::Property::PROGRESS_VISUAL, map); + map["url"] = "popup2.png"; + slider.SetProperty(Slider::Property::POPUP_VISUAL, map); + map["url"] = "popupArrow2.png"; + slider.SetProperty(Slider::Property::POPUP_ARROW_VISUAL, map); + + Property::Value value = slider.GetProperty(Slider::Property::TRACK_VISUAL); + Property::Map* resultMap = value.GetMap(); + DALI_TEST_CHECK( resultMap ); + Property::Value* url = resultMap->Find("url"); + DALI_TEST_CHECK( url ) ; + DALI_TEST_EQUALS( *url, "track2.png", TEST_LOCATION ); + + value = slider.GetProperty(Slider::Property::HANDLE_VISUAL); + resultMap = value.GetMap(); + DALI_TEST_CHECK( resultMap ); + url = resultMap->Find("url"); + DALI_TEST_CHECK( url ) ; + DALI_TEST_EQUALS( *url, "handle2.png", TEST_LOCATION ); + + value = slider.GetProperty(Slider::Property::PROGRESS_VISUAL); + resultMap = value.GetMap(); + DALI_TEST_CHECK( resultMap ); + url = resultMap->Find("url"); + DALI_TEST_CHECK( url ) ; + DALI_TEST_EQUALS( *url, "progress2.png", TEST_LOCATION ); + + value = slider.GetProperty(Slider::Property::POPUP_VISUAL); + resultMap = value.GetMap(); + DALI_TEST_CHECK( resultMap ); + url = resultMap->Find("url"); + DALI_TEST_CHECK( url ) ; + DALI_TEST_EQUALS( *url, "popup2.png", TEST_LOCATION ); + + value = slider.GetProperty(Slider::Property::POPUP_ARROW_VISUAL); + resultMap = value.GetMap(); + DALI_TEST_CHECK( resultMap ); + url = resultMap->Find("url"); + DALI_TEST_CHECK( url ) ; + DALI_TEST_EQUALS( *url, "popupArrow2.png", TEST_LOCATION ); + } + + END_TEST; +} + + +// DestroyHandleVisualDisplay +// CreateValueDisplay +// SlidingFinishedSignal() +// UpdateSkin disabled +// AddPopup +// RemovePopup +// SnapToMark +// HideValueView +// GetDisabledColor +// GetShowPopup +// GetShowVisual +// DisplayPopup (with set valueText label) diff --git a/build/tizen/Makefile.am b/build/tizen/Makefile.am index 18faf8d..a672053 100644 --- a/build/tizen/Makefile.am +++ b/build/tizen/Makefile.am @@ -55,7 +55,7 @@ cov_data: @for i in `find $(COVERAGE_DIR) -name "libdali_toolkit_la-*.gcda" -o -name "libdali_toolkit_la-*.gcno"` ;\ do mv $$i `echo $$i | sed s/libdali_toolkit_la-//` ; echo $$i ; done @cd $(COVERAGE_DIR) ; lcov $(LCOV_OPTS) --base-directory . --directory . -c -o dali.info - @cd $(COVERAGE_DIR) ; lcov $(LCOV_OPTS) --remove dali.info "/usr/include/*" "*/dali-env/*" "*/dali-toolkit/third-party/*" -o dali.info + @cd $(COVERAGE_DIR) ; lcov $(LCOV_OPTS) --remove dali.info "/usr/include/*" "*/dali-env/*" "*solid-color-actor*" "*/dali-toolkit/third-party/*" -o dali.info @test -z $(COVERAGE_OUTPUT_DIR) || mkdir -p $(COVERAGE_OUTPUT_DIR) coverage: cov_data diff --git a/packaging/dali-toolkit.spec b/packaging/dali-toolkit.spec index 7ec107a..e1aefb1 100644 --- a/packaging/dali-toolkit.spec +++ b/packaging/dali-toolkit.spec @@ -37,6 +37,12 @@ BuildRequires: dali-adaptor-devel %define dali_toolkit_profile MOBILE %endif +%if 0%{?enable_coverage} +CXXFLAGS+=" -fprofile-arcs -ftest-coverage --coverage " +LDFLAGS+=" -fprofile-arcs -ftest-coverage --coverage -lgcov " +%endif + + %description The OpenGLES Canvas Core Library Toolkit - a set of controls that provide user interface functionality. @@ -155,4 +161,3 @@ exit 0 %defattr(-,root,root,-) %{dev_include_path}/%{name}/* %{_libdir}/pkgconfig/*.pc - -- 2.7.4