// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "media/learning/common/feature_dictionary.h"

#include "testing/gtest/include/gtest/gtest.h"

namespace media {
namespace learning {

class FeatureDictionaryTest : public testing::Test {};

TEST_F(FeatureDictionaryTest, FillsInFeatures) {
  FeatureDictionary dict;
  const std::string feature_name_1("feature 1");
  const FeatureValue feature_value_1("feature value 1");

  const std::string feature_name_2("feature 2");
  const FeatureValue feature_value_2("feature value 2");

  const std::string feature_name_3("feature 3");
  const FeatureValue feature_value_3("feature value 3");

  dict.Add(feature_name_1, feature_value_1);
  dict.Add(feature_name_2, feature_value_2);
  dict.Add(feature_name_3, feature_value_3);

  LearningTask task;
  task.feature_descriptions.push_back({"some other feature"});
  task.feature_descriptions.push_back({feature_name_3});
  task.feature_descriptions.push_back({feature_name_1});

  FeatureVector features;
  features.push_back(FeatureValue(0));  // some other feature

  dict.Lookup(task, &features);
  EXPECT_EQ(features.size(), 3u);
  EXPECT_EQ(features[0], FeatureValue(0));
  EXPECT_EQ(features[1], feature_value_3);
  EXPECT_EQ(features[2], feature_value_1);
}

}  // namespace learning
}  // namespace media
