xref: /aosp_15_r20/external/deqp/framework/common/tcuResultCollector.cpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker  * drawElements Quality Program Tester Core
3*35238bceSAndroid Build Coastguard Worker  * ----------------------------------------
4*35238bceSAndroid Build Coastguard Worker  *
5*35238bceSAndroid Build Coastguard Worker  * Copyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker  *
7*35238bceSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker  *
11*35238bceSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker  *
13*35238bceSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Worker  * limitations under the License.
18*35238bceSAndroid Build Coastguard Worker  *
19*35238bceSAndroid Build Coastguard Worker  *//*!
20*35238bceSAndroid Build Coastguard Worker  * \file
21*35238bceSAndroid Build Coastguard Worker  * \brief Test result collector
22*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker 
24*35238bceSAndroid Build Coastguard Worker #include "tcuResultCollector.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "tcuTestContext.hpp"
26*35238bceSAndroid Build Coastguard Worker #include "tcuTestLog.hpp"
27*35238bceSAndroid Build Coastguard Worker 
28*35238bceSAndroid Build Coastguard Worker namespace tcu
29*35238bceSAndroid Build Coastguard Worker {
30*35238bceSAndroid Build Coastguard Worker 
testResultSeverity(qpTestResult testResult)31*35238bceSAndroid Build Coastguard Worker static int testResultSeverity(qpTestResult testResult)
32*35238bceSAndroid Build Coastguard Worker {
33*35238bceSAndroid Build Coastguard Worker     switch (testResult)
34*35238bceSAndroid Build Coastguard Worker     {
35*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_LAST:
36*35238bceSAndroid Build Coastguard Worker         return -1;
37*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_PASS:
38*35238bceSAndroid Build Coastguard Worker         return 0;
39*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_PENDING:
40*35238bceSAndroid Build Coastguard Worker         return 10;
41*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_NOT_SUPPORTED:
42*35238bceSAndroid Build Coastguard Worker         return 20;
43*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_QUALITY_WARNING:
44*35238bceSAndroid Build Coastguard Worker         return 30;
45*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_COMPATIBILITY_WARNING:
46*35238bceSAndroid Build Coastguard Worker         return 40;
47*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_TIMEOUT:
48*35238bceSAndroid Build Coastguard Worker         return 50;
49*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_WAIVER:
50*35238bceSAndroid Build Coastguard Worker         return 60;
51*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_FAIL:
52*35238bceSAndroid Build Coastguard Worker         return 100;
53*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_RESOURCE_ERROR:
54*35238bceSAndroid Build Coastguard Worker         return 110;
55*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_INTERNAL_ERROR:
56*35238bceSAndroid Build Coastguard Worker         return 120;
57*35238bceSAndroid Build Coastguard Worker     case QP_TEST_RESULT_CRASH:
58*35238bceSAndroid Build Coastguard Worker         return 150;
59*35238bceSAndroid Build Coastguard Worker     default:
60*35238bceSAndroid Build Coastguard Worker         DE_FATAL("Impossible case");
61*35238bceSAndroid Build Coastguard Worker     }
62*35238bceSAndroid Build Coastguard Worker     return 0;
63*35238bceSAndroid Build Coastguard Worker }
64*35238bceSAndroid Build Coastguard Worker 
ResultCollector(void)65*35238bceSAndroid Build Coastguard Worker ResultCollector::ResultCollector(void) : m_log(DE_NULL), m_prefix(""), m_result(QP_TEST_RESULT_LAST), m_message("Pass")
66*35238bceSAndroid Build Coastguard Worker {
67*35238bceSAndroid Build Coastguard Worker }
68*35238bceSAndroid Build Coastguard Worker 
ResultCollector(TestLog & log,const std::string & prefix)69*35238bceSAndroid Build Coastguard Worker ResultCollector::ResultCollector(TestLog &log, const std::string &prefix)
70*35238bceSAndroid Build Coastguard Worker     : m_log(&log)
71*35238bceSAndroid Build Coastguard Worker     , m_prefix(prefix)
72*35238bceSAndroid Build Coastguard Worker     , m_result(QP_TEST_RESULT_LAST)
73*35238bceSAndroid Build Coastguard Worker     , m_message("Pass")
74*35238bceSAndroid Build Coastguard Worker {
75*35238bceSAndroid Build Coastguard Worker }
76*35238bceSAndroid Build Coastguard Worker 
getResult(void) const77*35238bceSAndroid Build Coastguard Worker qpTestResult ResultCollector::getResult(void) const
78*35238bceSAndroid Build Coastguard Worker {
79*35238bceSAndroid Build Coastguard Worker     if (m_result == QP_TEST_RESULT_LAST)
80*35238bceSAndroid Build Coastguard Worker         return QP_TEST_RESULT_PASS;
81*35238bceSAndroid Build Coastguard Worker     else
82*35238bceSAndroid Build Coastguard Worker         return m_result;
83*35238bceSAndroid Build Coastguard Worker }
84*35238bceSAndroid Build Coastguard Worker 
addResult(qpTestResult result,const std::string & msg)85*35238bceSAndroid Build Coastguard Worker void ResultCollector::addResult(qpTestResult result, const std::string &msg)
86*35238bceSAndroid Build Coastguard Worker {
87*35238bceSAndroid Build Coastguard Worker     if (m_log != DE_NULL)
88*35238bceSAndroid Build Coastguard Worker         (*m_log) << TestLog::Message << m_prefix << msg << TestLog::EndMessage;
89*35238bceSAndroid Build Coastguard Worker 
90*35238bceSAndroid Build Coastguard Worker     if (testResultSeverity(result) > testResultSeverity(m_result))
91*35238bceSAndroid Build Coastguard Worker     {
92*35238bceSAndroid Build Coastguard Worker         m_result  = result;
93*35238bceSAndroid Build Coastguard Worker         m_message = msg;
94*35238bceSAndroid Build Coastguard Worker     }
95*35238bceSAndroid Build Coastguard Worker }
96*35238bceSAndroid Build Coastguard Worker 
checkResult(bool condition,qpTestResult result,const std::string & msg)97*35238bceSAndroid Build Coastguard Worker bool ResultCollector::checkResult(bool condition, qpTestResult result, const std::string &msg)
98*35238bceSAndroid Build Coastguard Worker {
99*35238bceSAndroid Build Coastguard Worker     if (!condition)
100*35238bceSAndroid Build Coastguard Worker         addResult(result, msg);
101*35238bceSAndroid Build Coastguard Worker     return condition;
102*35238bceSAndroid Build Coastguard Worker }
103*35238bceSAndroid Build Coastguard Worker 
fail(const std::string & msg)104*35238bceSAndroid Build Coastguard Worker void ResultCollector::fail(const std::string &msg)
105*35238bceSAndroid Build Coastguard Worker {
106*35238bceSAndroid Build Coastguard Worker     addResult(QP_TEST_RESULT_FAIL, msg);
107*35238bceSAndroid Build Coastguard Worker }
108*35238bceSAndroid Build Coastguard Worker 
check(bool condition,const std::string & msg)109*35238bceSAndroid Build Coastguard Worker bool ResultCollector::check(bool condition, const std::string &msg)
110*35238bceSAndroid Build Coastguard Worker {
111*35238bceSAndroid Build Coastguard Worker     return checkResult(condition, QP_TEST_RESULT_FAIL, msg);
112*35238bceSAndroid Build Coastguard Worker }
113*35238bceSAndroid Build Coastguard Worker 
setTestContextResult(TestContext & testCtx)114*35238bceSAndroid Build Coastguard Worker void ResultCollector::setTestContextResult(TestContext &testCtx)
115*35238bceSAndroid Build Coastguard Worker {
116*35238bceSAndroid Build Coastguard Worker     testCtx.setTestResult(getResult(), getMessage().c_str());
117*35238bceSAndroid Build Coastguard Worker }
118*35238bceSAndroid Build Coastguard Worker 
119*35238bceSAndroid Build Coastguard Worker } // namespace tcu
120