1bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski/*
2bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * Copyright (C) 2017 The Android Open Source Project
3bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski *
4bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License");
5bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * you may not use this file except in compliance with the License.
6bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * You may obtain a copy of the License at
7bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski *
8bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski *      http://www.apache.org/licenses/LICENSE-2.0
9bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski *
10bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * Unless required by applicable law or agreed to in writing, software
11bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS,
12bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * See the License for the specific language governing permissions and
14bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski * limitations under the License.
15bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski */
16bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski
17bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski#include "test/Common.h"
18bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski
19bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinskinamespace aapt {
20bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinskinamespace test {
21bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski
22bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinskistruct DummyDiagnosticsImpl : public IDiagnostics {
23bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski  void Log(Level level, DiagMessageActual& actual_msg) override {
24bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski    switch (level) {
25bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski      case Level::Note:
26bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski        return;
27bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski
28bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski      case Level::Warn:
29bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski        std::cerr << actual_msg.source << ": warn: " << actual_msg.message << "." << std::endl;
30bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski        break;
31bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski
32bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski      case Level::Error:
33bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski        std::cerr << actual_msg.source << ": error: " << actual_msg.message << "." << std::endl;
34bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski        break;
35bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski    }
36bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski  }
37bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski};
38bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski
39bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam LesinskiIDiagnostics* GetDiagnostics() {
40bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski  static DummyDiagnosticsImpl diag;
41bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski  return &diag;
42bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski}
43bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski
44bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinskitemplate <>
45bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam LesinskiValue* GetValueForConfigAndProduct<Value>(ResourceTable* table,
46bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski                                          const android::StringPiece& res_name,
47bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski                                          const ConfigDescription& config,
48bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski                                          const android::StringPiece& product) {
49bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski  Maybe<ResourceTable::SearchResult> result = table->FindResource(ParseNameOrDie(res_name));
50bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski  if (result) {
51bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski    ResourceConfigValue* config_value = result.value().entry->FindValue(config, product);
52bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski    if (config_value) {
53bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski      return config_value->value.get();
54bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski    }
55bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski  }
56bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski  return nullptr;
57bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski}
58bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski
59bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski}  // namespace test
60bab4ef56d7803f3a50ccfaca2729509338fcbb23Adam Lesinski}  // namespace aapt
61