From 279dbb691ca801e105dde798be819eea9a54ad96 Mon Sep 17 00:00:00 2001 From: David Steele Date: Mon, 20 Jun 2016 14:51:21 +0100 Subject: [PATCH] Re-added test files to build and fixed failing tests Test cases had been commented out for speed of build/execution and accidentally left commented out when checked in... Uncommented all the test cases. Consequently, some test cases are failing following a merge of Dali-Core's test stub files - have now upgraded the test platform for GlAbstraction to enable finding gl calls by method and named parameter. Change-Id: I665038bd9983ef326778133ae5846472943eb873 Signed-off-by: David Steele --- automated-tests/src/dali-toolkit/CMakeLists.txt | 90 ++++++------ .../dali-toolkit-test-utils/test-gl-abstraction.h | 160 +++++++++++++++++---- .../test-trace-call-stack.cpp | 81 +++++++++-- .../test-trace-call-stack.h | 54 ++++++- .../src/dali-toolkit/utc-Dali-ImageAtlas.cpp | 55 +++++-- .../src/dali-toolkit/utc-Dali-ImageView.cpp | 15 +- 6 files changed, 350 insertions(+), 105 deletions(-) diff --git a/automated-tests/src/dali-toolkit/CMakeLists.txt b/automated-tests/src/dali-toolkit/CMakeLists.txt index 77b2c96..d6aa2fb 100644 --- a/automated-tests/src/dali-toolkit/CMakeLists.txt +++ b/automated-tests/src/dali-toolkit/CMakeLists.txt @@ -7,51 +7,51 @@ SET(CAPI_LIB "dali-toolkit") # List of test case sources (Only these get parsed for test cases) SET(TC_SOURCES -# utc-Dali-Alignment.cpp -# utc-Dali-BloomView.cpp -# utc-Dali-BubbleEmitter.cpp -# utc-Dali-Builder.cpp -# utc-Dali-CheckBoxButton.cpp -# utc-Dali-ConfirmationPopup.cpp -# utc-Dali-CubeTransitionEffect.cpp -# utc-Dali-EffectsView.cpp -# utc-Dali-FlexContainer.cpp -# utc-Dali-GaussianBlurView.cpp -# utc-Dali-ImageView.cpp -# utc-Dali-JsonParser.cpp -# utc-Dali-KeyInputFocusManager.cpp -# utc-Dali-PageTurnView.cpp -# utc-Dali-Script.cpp -# utc-Dali-ScrollBar.cpp -# utc-Dali-ScrollView.cpp -# utc-Dali-ShaderEffects.cpp -# utc-Dali-ShadowView.cpp -# utc-Dali-Slider.cpp -# utc-Dali-TableView.cpp -# utc-Dali-TextEditor.cpp -# utc-Dali-TextField.cpp -# utc-Dali-TextLabel.cpp -# utc-Dali-TextSelectionPopup.cpp -# utc-Dali-ToolBar.cpp -# utc-Dali-Button.cpp -# utc-Dali-Control.cpp -# utc-Dali-ControlImpl.cpp -# utc-Dali-AccessibilityManager.cpp -# utc-Dali-ItemLayout.cpp -# utc-Dali-ItemView.cpp -# utc-Dali-KeyboardFocusManager.cpp -# utc-Dali-Magnifier.cpp -# utc-Dali-Popup.cpp -# utc-Dali-PushButton.cpp -# utc-Dali-RadioButton.cpp -# utc-Dali-ScrollViewEffect.cpp -# utc-Dali-SuperBlurView.cpp -# utc-Dali-Toolkit.cpp -# utc-Dali-Model3dView.cpp -# utc-Dali-ControlRenderer.cpp -# utc-Dali-RendererFactory.cpp -# utc-Dali-DebugRenderer.cpp -# utc-Dali-ImageAtlas.cpp + utc-Dali-Alignment.cpp + utc-Dali-BloomView.cpp + utc-Dali-BubbleEmitter.cpp + utc-Dali-Builder.cpp + utc-Dali-CheckBoxButton.cpp + utc-Dali-ConfirmationPopup.cpp + utc-Dali-CubeTransitionEffect.cpp + utc-Dali-EffectsView.cpp + utc-Dali-FlexContainer.cpp + utc-Dali-GaussianBlurView.cpp + utc-Dali-ImageView.cpp + utc-Dali-JsonParser.cpp + utc-Dali-KeyInputFocusManager.cpp + utc-Dali-PageTurnView.cpp + utc-Dali-Script.cpp + utc-Dali-ScrollBar.cpp + utc-Dali-ScrollView.cpp + utc-Dali-ShaderEffects.cpp + utc-Dali-ShadowView.cpp + utc-Dali-Slider.cpp + utc-Dali-TableView.cpp + utc-Dali-TextEditor.cpp + utc-Dali-TextField.cpp + utc-Dali-TextLabel.cpp + utc-Dali-TextSelectionPopup.cpp + utc-Dali-ToolBar.cpp + utc-Dali-Button.cpp + utc-Dali-Control.cpp + utc-Dali-ControlImpl.cpp + utc-Dali-AccessibilityManager.cpp + utc-Dali-ItemLayout.cpp + utc-Dali-ItemView.cpp + utc-Dali-KeyboardFocusManager.cpp + utc-Dali-Magnifier.cpp + utc-Dali-Popup.cpp + utc-Dali-PushButton.cpp + utc-Dali-RadioButton.cpp + utc-Dali-ScrollViewEffect.cpp + utc-Dali-SuperBlurView.cpp + utc-Dali-Toolkit.cpp + utc-Dali-Model3dView.cpp + utc-Dali-ControlRenderer.cpp + utc-Dali-RendererFactory.cpp + utc-Dali-DebugRenderer.cpp + utc-Dali-ImageAtlas.cpp utc-Dali-VideoView.cpp ) diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h index f910d51..9a93c8e 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h @@ -73,7 +73,11 @@ public: { std::stringstream out; out << program << ", " << shader; - mShaderTrace.PushCall("AttachShader", out.str()); + + TraceCallStack::NamedParams namedParams; + namedParams["program"] = ToString(program); + namedParams["shader"] = ToString(shader); + mShaderTrace.PushCall("AttachShader", out.str(), namedParams); } inline void BindAttribLocation( GLuint program, GLuint index, const char* name ) @@ -141,7 +145,12 @@ public: std::stringstream out; out << target << ", " << texture; - mTextureTrace.PushCall("BindTexture", out.str()); + + TraceCallStack::NamedParams namedParams; + namedParams["target"] = ToString(target); + namedParams["texture"] = ToString(texture); + + mTextureTrace.PushCall("BindTexture", out.str(), namedParams); } inline void BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) @@ -278,7 +287,10 @@ public: { std::stringstream out; out << shader; - mShaderTrace.PushCall("CompileShader", out.str()); + TraceCallStack::NamedParams namedParams; + namedParams["shader"] = ToString(shader); + + mShaderTrace.PushCall("CompileShader", out.str(), namedParams); } inline void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data) @@ -310,7 +322,10 @@ public: { std::stringstream out; out << type; - mShaderTrace.PushCall("CreateShader", out.str()); + + TraceCallStack::NamedParams namedParams; + namedParams["type"] = ToString(type); + mShaderTrace.PushCall("CreateShader", out.str(), namedParams); return ++mLastShaderIdUsed; } @@ -319,7 +334,11 @@ public: { std::stringstream out; out << mode; - mCullFaceTrace.PushCall("CullFace", out.str()); + + TraceCallStack::NamedParams namedParams; + namedParams["program"] = ToString(mode); + + mCullFaceTrace.PushCall("CullFace", out.str(), namedParams); } inline void DeleteBuffers(GLsizei n, const GLuint* buffers) @@ -334,7 +353,11 @@ public: { std::stringstream out; out << program; - mShaderTrace.PushCall("DeleteProgram", out.str()); + + TraceCallStack::NamedParams namedParams; + namedParams["program"] = ToString(program); + + mShaderTrace.PushCall("DeleteProgram", out.str(), namedParams); } inline void DeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) @@ -345,7 +368,11 @@ public: { std::stringstream out; out << shader; - mShaderTrace.PushCall("DeleteShader", out.str()); + + TraceCallStack::NamedParams namedParams; + namedParams["shader"] = ToString(shader); + + mShaderTrace.PushCall("DeleteShader", out.str(), namedParams); } inline void DeleteTextures(GLsizei n, const GLuint* textures) @@ -353,13 +380,19 @@ public: std::stringstream out; out << n << ", " << textures << " = ["; + TraceCallStack::NamedParams namedParams; + for(GLsizei i=0; i namespace Dali { + +std::string ToString(int x) +{ + std::stringstream out; + out << x; + return out.str(); +} + +std::string ToString(unsigned int x) +{ + std::stringstream out; + out << x; + return out.str(); +} + +std::string ToString(float x) +{ + std::stringstream out; + out << x; + return out.str(); +} + /** * Constructor */ @@ -45,10 +68,17 @@ void TraceCallStack::PushCall(std::string method, std::string params) { if(mTraceActive) { - std::vector< std::string > functionCall; - functionCall.push_back(method); - functionCall.push_back(params); - mCallStack.push_back( functionCall ); + FunctionCall stackFrame(method, params); + mCallStack.push_back( stackFrame ); + } +} + +void TraceCallStack::PushCall(std::string method, std::string params, const TraceCallStack::NamedParams& altParams) +{ + if(mTraceActive) + { + FunctionCall stackFrame(method, params, altParams); + mCallStack.push_back( stackFrame ); } } @@ -62,7 +92,7 @@ bool TraceCallStack::FindMethod(std::string method) const bool found = false; for( size_t i=0; i < mCallStack.size(); i++ ) { - if( 0 == mCallStack[i][0].compare(method) ) + if( 0 == mCallStack[i].method.compare(method) ) { found = true; break; @@ -76,7 +106,7 @@ int TraceCallStack::CountMethod(std::string method) const int numCalls = 0; for( size_t i=0; i < mCallStack.size(); i++ ) { - if( 0 == mCallStack[i][0].compare(method) ) + if( 0 == mCallStack[i].method.compare(method) ) { numCalls++; } @@ -95,6 +125,12 @@ bool TraceCallStack::FindMethodAndParams(std::string method, std::string params) return FindIndexFromMethodAndParams( method, params ) > -1; } +bool TraceCallStack::FindMethodAndParams(std::string method, const NamedParams& params) const +{ + return FindIndexFromMethodAndParams( method, params ) > -1; +} + + /** * Search for a method in the stack with the given parameter list * @param[in] method The name of the method @@ -106,7 +142,7 @@ int TraceCallStack::FindIndexFromMethodAndParams(std::string method, std::string int index = -1; for( size_t i=0; i < mCallStack.size(); i++ ) { - if( 0 == mCallStack[i][0].compare(method) && 0 == mCallStack[i][1].compare(params) ) + if( 0 == mCallStack[i].method.compare(method) && 0 == mCallStack[i].paramList.compare(params) ) { index = i; break; @@ -115,6 +151,35 @@ int TraceCallStack::FindIndexFromMethodAndParams(std::string method, std::string return index; } +int TraceCallStack::FindIndexFromMethodAndParams(std::string method, const TraceCallStack::NamedParams& params) const +{ + int index = -1; + for( size_t i=0; i < mCallStack.size(); i++ ) + { + if( 0 == mCallStack[i].method.compare(method) ) + { + // Test each of the passed in parameters: + bool match = true; + for( NamedParams::const_iterator iter = params.begin() ; iter != params.end() ; ++iter ) + { + NamedParams::const_iterator paramIter = mCallStack[i].namedParams.find(iter->first); + if( paramIter == params.end() || paramIter->second.compare(iter->second) != 0 ) + { + match = false; + break; + } + } + if( match == true ) + { + index = i; + break; + } + } + } + return index; +} + + /** * Test if the given method and parameters are at a given index in the stack * @param[in] index Index in the call stack @@ -123,7 +188,7 @@ int TraceCallStack::FindIndexFromMethodAndParams(std::string method, std::string */ bool TraceCallStack::TestMethodAndParams(int index, std::string method, std::string params) const { - return ( 0 == mCallStack[index][0].compare(method) && 0 == mCallStack[index][1].compare(params) ); + return ( 0 == mCallStack[index].method.compare(method) && 0 == mCallStack[index].paramList.compare(params) ); } /** diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.h index d319487..32375a6 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.h @@ -20,9 +20,13 @@ #include #include +#include namespace Dali { +std::string ToString(int x); +std::string ToString(unsigned int x); +std::string ToString(float x); /** * Helper class to track method calls in the abstraction and search for them in test cases @@ -30,6 +34,9 @@ namespace Dali class TraceCallStack { public: + /// Typedef for passing and storing named parameters + typedef std::map< std::string, std::string > NamedParams; + /** * Constructor */ @@ -54,6 +61,13 @@ public: */ void PushCall(std::string method, std::string params); + /** + * Push a call onto the stack if the trace is active + * @param[in] method The name of the method + * @param[in] params A comma separated list of parameter values + * @param[in] altParams A map of named parameter values + */ + void PushCall(std::string method, std::string params, const NamedParams& altParams); /** * Search for a method in the stack @@ -80,12 +94,28 @@ public: /** * Search for a method in the stack with the given parameter list * @param[in] method The name of the method + * @param[in] params A map of named parameters to test for + * @return true if the method was in the stack + */ + bool FindMethodAndParams(std::string method, const NamedParams& params) const; + + /** + * Search for a method in the stack with the given parameter list + * @param[in] method The name of the method * @param[in] params A comma separated list of parameter values * @return index in the stack where the method was found or -1 otherwise */ int FindIndexFromMethodAndParams(std::string method, std::string params) const; /** + * Search for a method in the stack with the given parameter list + * @param[in] method The name of the method + * @param[in] params A map of named parameter values to match + * @return index in the stack where the method was found or -1 otherwise + */ + int FindIndexFromMethodAndParams(std::string method, const NamedParams& params) const; + + /** * Test if the given method and parameters are at a given index in the stack * @param[in] index Index in the call stack * @param[in] method Name of method to test @@ -98,15 +128,25 @@ public: */ void Reset(); - /** - * Get the call stack - * @return The call stack object (Vector of vector[2] of method/paramlist strings) - */ - inline const std::vector< std::vector< std::string > >& GetCallStack() { return mCallStack; } - private: bool mTraceActive; ///< True if the trace is active - std::vector< std::vector< std::string > > mCallStack; ///< The call stack + + struct FunctionCall + { + std::string method; + std::string paramList; + NamedParams namedParams; + FunctionCall( const std::string& aMethod, const std::string& aParamList ) + : method( aMethod ), paramList( aParamList ) + { + } + FunctionCall( const std::string& aMethod, const std::string& aParamList, const NamedParams& altParams ) + : method( aMethod ), paramList( aParamList ), namedParams( altParams ) + { + } + }; + + std::vector< FunctionCall > mCallStack; ///< The call stack }; } // namespace dali diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp index 0f56e92..a8fa8cc 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageAtlas.cpp @@ -61,7 +61,7 @@ bool IsOverlap( Rect rect1, Rect rect2 ) && rect2.y < rect1.y+rect1.height; } -} +} // anonymous namespace void dali_image_atlas_startup(void) { @@ -191,23 +191,33 @@ int UtcDaliImageAtlasUploadP(void) Rect pixelArea1 = TextureCoordinateToPixelArea(textureRect1, size); DALI_TEST_EQUALS( pixelArea1.width, 34, TEST_LOCATION ); DALI_TEST_EQUALS( pixelArea1.height, 34, TEST_LOCATION ); - std::stringstream out; - out< pixelArea2 = TextureCoordinateToPixelArea(textureRect2, size); DALI_TEST_EQUALS( pixelArea2.width, 50, TEST_LOCATION ); DALI_TEST_EQUALS( pixelArea2.height, 50, TEST_LOCATION ); - out.str(""); - out< pixelArea3 = TextureCoordinateToPixelArea(textureRect3, size); DALI_TEST_EQUALS( pixelArea3.width, 128, TEST_LOCATION ); DALI_TEST_EQUALS( pixelArea3.height, 128, TEST_LOCATION ); - out.str(""); - out<