X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftest-trace-call-stack.cpp;h=231603681c956027101022c63dcb16143b10ecaa;hb=21772bd941d55887df80e60cb8e02ff16459030c;hp=dd063edfeb3c36e7b43314fb5c716485324f140d;hpb=cef353d5b0add148dd99197bf25fb47a9c23d4d9;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git 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 dd063ed..2316036 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) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -16,9 +16,9 @@ */ #include "test-trace-call-stack.h" - #include #include +#include "dali-test-suite-utils.h" namespace Dali { @@ -46,8 +46,9 @@ std::string ToString(float x) /** * Constructor */ -TraceCallStack::TraceCallStack(std::string prefix) +TraceCallStack::TraceCallStack(bool logging, std::string prefix) : mTraceActive(false), + mLogging(logging), mPrefix(prefix) { } @@ -145,7 +146,26 @@ bool TraceCallStack::FindMethodAndGetParameters(std::string method, std::string& } if(!found) { - fprintf(stderr, "Search for %s(%s) failed\n", method.c_str(), params.c_str()); + fprintf(stderr, "Search for %s() failed\n", method.c_str()); + } + return found; +} + +bool TraceCallStack::FindMethodAndGetParameters(std::string method, NamedParams& 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].namedParams; + break; + } + } + if(!found) + { + fprintf(stderr, "Search for %s() failed\n", method.c_str()); } return found; } @@ -209,6 +229,10 @@ int32_t TraceCallStack::FindIndexFromMethodAndParams(std::string method, std::st break; } } + if(index == -1) + { + fprintf(stderr, "Search for %s(%s) failed\n", method.c_str(), params.c_str()); + } return index; } @@ -221,10 +245,14 @@ int TraceCallStack::FindIndexFromMethodAndParams(std::string method, const Trace { // Test each of the passed in parameters: bool match = true; - for(NamedParams::const_iterator iter = params.begin(); iter != params.end(); ++iter) + + for(auto iter = params.mParams.begin(); iter != params.mParams.end(); ++iter) { - NamedParams::const_iterator paramIter = mCallStack[i].namedParams.find(iter->first); - if(paramIter == params.end() || paramIter->second.compare(iter->second) != 0) + auto paramIter = mCallStack[i].namedParams.find(iter->parameterName); + std::string value = paramIter->value.str(); + std::string iValue = iter->value.str(); + + if(paramIter == mCallStack[i].namedParams.end() || value.compare(iValue)) { match = false; break; @@ -237,9 +265,54 @@ int TraceCallStack::FindIndexFromMethodAndParams(std::string method, const Trace } } } + + if(index == -1) + { + fprintf(stderr, "Search for %s(%s) failed\n", method.c_str(), params.str().c_str()); + } + return index; } +const TraceCallStack::NamedParams* TraceCallStack::FindLastMatch(std::string method, const TraceCallStack::NamedParams& params) const +{ + int index = -1; + + if(mCallStack.size() > 0) + { + for(index = static_cast(mCallStack.size() - 1); index >= 0; --index) + { + if(0 == mCallStack[index].method.compare(method)) + { + // Test each of the passed in parameters: + bool match = true; + + for(auto iter = params.mParams.begin(); iter != params.mParams.end(); ++iter) + { + auto paramIter = mCallStack[index].namedParams.find(iter->parameterName); + std::string value = paramIter->value.str(); + std::string iValue = iter->value.str(); + + if(paramIter == mCallStack[index].namedParams.end() || value.compare(iValue)) + { + match = false; + break; + } + } + if(match == true) + { + break; + } + } + } + } + if(index >= 0) + { + return &mCallStack[index].namedParams; + } + return nullptr; +} + /** * Test if the given method and parameters are at a given index in the stack * @param[in] index Index in the call stack @@ -259,4 +332,17 @@ void TraceCallStack::Reset() mCallStack.clear(); } +bool TraceCallStack::NamedParams::NameValue::operator==(int match) const +{ + std::ostringstream matchStr; + matchStr << match; + std::string valueStr = value.str(); + bool retval = !valueStr.compare(matchStr.str()); + if(!retval) + { + tet_printf("Comparing parameter \"%s\": %s with %s failed\n", parameterName.c_str(), value.str().c_str(), matchStr.str().c_str()); + } + return retval; +} + } // namespace Dali