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