X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftest-trace-call-stack.cpp;h=9fde7c4a2d6a24a56494134fab109fa41440a787;hp=bda38d337cfffee1fdf187b30db7a9cee6ab8c99;hb=6154e1e69b7cd3afb49213c4f6f5730dd3df074e;hpb=d1766e06ae2518d8c941170fe8e03c8a82de8c3e diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.cpp index bda38d3..9fde7c4 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 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. @@ -17,24 +17,58 @@ #include "test-trace-call-stack.h" +#include + 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 */ -TraceCallStack::TraceCallStack() : mTraceActive(false) { } +TraceCallStack::TraceCallStack() +: mTraceActive(false) +{ +} /** * Destructor */ -TraceCallStack::~TraceCallStack() { } +TraceCallStack::~TraceCallStack() +{ +} /** * Turn on / off tracing */ -void TraceCallStack::Enable(bool enable) { mTraceActive = enable; } +void TraceCallStack::Enable(bool enable) +{ + mTraceActive = enable; +} -bool TraceCallStack::IsEnabled() { return mTraceActive; } +bool TraceCallStack::IsEnabled() +{ + return mTraceActive; +} /** * Push a call onto the stack if the trace is active @@ -45,10 +79,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); } } @@ -60,9 +101,9 @@ void TraceCallStack::PushCall(std::string method, std::string params) bool TraceCallStack::FindMethod(std::string method) const { bool found = false; - for( size_t i=0; i < mCallStack.size(); i++ ) + 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; @@ -71,12 +112,27 @@ bool TraceCallStack::FindMethod(std::string method) const return found; } +bool TraceCallStack::FindMethodAndGetParameters(std::string method, std::string& params) const +{ + bool found = false; + for(size_t i = 0; i < mCallStack.size(); i++) + { + if(0 == mCallStack[i].method.compare(method)) + { + found = true; + params = mCallStack[i].paramList; + break; + } + } + return found; +} + int TraceCallStack::CountMethod(std::string method) const { int numCalls = 0; - for( size_t i=0; i < mCallStack.size(); i++ ) + for(size_t i = 0; i < mCallStack.size(); i++) { - if( 0 == mCallStack[i][0].compare(method) ) + if(0 == mCallStack[i].method.compare(method)) { numCalls++; } @@ -92,7 +148,25 @@ int TraceCallStack::CountMethod(std::string method) const */ bool TraceCallStack::FindMethodAndParams(std::string method, std::string params) const { - return FindIndexFromMethodAndParams( method, params ) > -1; + return FindIndexFromMethodAndParams(method, params) > -1; +} + +bool TraceCallStack::FindMethodAndParams(std::string method, const NamedParams& params) const +{ + return FindIndexFromMethodAndParams(method, params) > -1; +} + +bool TraceCallStack::FindMethodAndParamsFromStartIndex(std::string method, std::string params, size_t& startIndex) const +{ + for(size_t i = startIndex; i < mCallStack.size(); ++i) + { + if((mCallStack[i].method.compare(method) == 0) && (mCallStack[i].paramList.compare(params) == 0)) + { + startIndex = i; + return true; + } + } + return false; } /** @@ -101,20 +175,48 @@ bool TraceCallStack::FindMethodAndParams(std::string method, std::string params) * @param[in] params A comma separated list of parameter values * @return index in the stack where the method was found or -1 otherwise */ -int TraceCallStack::FindIndexFromMethodAndParams(std::string method, std::string params) const +int32_t TraceCallStack::FindIndexFromMethodAndParams(std::string method, std::string params) const { - int index = -1; - for( size_t i=0; i < mCallStack.size(); i++ ) + int32_t 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; + index = static_cast(i); break; } } return index; } +int TraceCallStack::FindIndexFromMethodAndParams(std::string method, const TraceCallStack::NamedParams& params) const +{ + int32_t 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 = static_cast(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 +225,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)); } /** @@ -134,5 +236,4 @@ void TraceCallStack::Reset() mCallStack.clear(); } - } // namespace Dali