| /* |
| * 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()); |
| } |
| } |