/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ #include "Log.h" #include "StringUtil.h" #include "Report.h" Report* Report::mInstance = NULL; Report* Report::Instance(const char* dirName) { if (mInstance == NULL) { mInstance = new Report(); ASSERT(mInstance->init(dirName)); } return mInstance; } void Report::Finalize() { delete mInstance; mInstance = NULL; } Report::Report() { } Report::~Report() { writeSummary(); } bool Report::init(const char* dirName) { if (dirName == NULL) { return true; } android::String8 report; if (report.appendFormat("%s/report.txt", dirName) != 0) { return false; } return FileUtil::init(report.string()); } void Report::printf(const char* fmt, ...) { va_list ap; va_start(ap, fmt); FileUtil::doVprintf(false, -1, fmt, ap); va_end(ap); } void Report::addCasePassed(const android::String8& name) { mPassedCases.push_back(name); } void Report::addCaseFailed(const android::String8& name) { mFailedCases.push_back(name); } void Report::writeSummary() { printf("= Test cases executed: %d, passed: %d, failed: %d =", mPassedCases.size() + mFailedCases.size(), mPassedCases.size(), mFailedCases.size()); printf("= Failed cases ="); std::list<android::String8>::iterator it; for (it = mFailedCases.begin(); it != mFailedCases.end(); it++) { printf("* %s", it->string()); } printf("= Passed cases ="); for (it = mPassedCases.begin(); it != mPassedCases.end(); it++) { printf("* %s", it->string()); } }