1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/variations/active_field_trials.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "components/variations/metrics_util.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace variations {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST(VariationsUtilTest, GetFieldTrialActiveGroups) {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef std::set<ActiveGroupId, ActiveGroupIdCompare> ActiveGroupIdSet;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string trial_one("trial one");
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string group_one("group one");
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string trial_two("trial two");
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string group_two("group two");
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::FieldTrial::ActiveGroups active_groups;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::FieldTrial::ActiveGroup active_group;
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  active_group.trial_name = trial_one;
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  active_group.group_name = group_one;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  active_groups.push_back(active_group);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  active_group.trial_name = trial_two;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  active_group.group_name = group_two;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  active_groups.push_back(active_group);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Create our expected groups of IDs.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ActiveGroupIdSet expected_groups;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ActiveGroupId name_group_id;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  name_group_id.name = metrics::HashName(trial_one);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  name_group_id.group = metrics::HashName(group_one);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  expected_groups.insert(name_group_id);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  name_group_id.name = metrics::HashName(trial_two);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  name_group_id.group = metrics::HashName(group_two);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  expected_groups.insert(name_group_id);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<ActiveGroupId> active_group_ids;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  testing::TestGetFieldTrialActiveGroupIds(active_groups, &active_group_ids);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(2U, active_group_ids.size());
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (size_t i = 0; i < active_group_ids.size(); ++i) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ActiveGroupIdSet::iterator expected_group =
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expected_groups.find(active_group_ids[i]);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_FALSE(expected_group == expected_groups.end());
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    expected_groups.erase(expected_group);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, expected_groups.size());
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace variations
52