Home | History | Annotate | Download | only in search
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "components/search/search.h"
      6 
      7 #include "base/metrics/field_trial.h"
      8 #include "base/metrics/statistics_recorder.h"
      9 #include "components/variations/entropy_provider.h"
     10 #include "testing/gtest/include/gtest/gtest.h"
     11 
     12 namespace chrome {
     13 
     14 class EmbeddedSearchFieldTrialTest : public testing::Test {
     15  protected:
     16   virtual void SetUp() {
     17     field_trial_list_.reset(new base::FieldTrialList(
     18         new metrics::SHA1EntropyProvider("42")));
     19     base::StatisticsRecorder::Initialize();
     20   }
     21 
     22  private:
     23   scoped_ptr<base::FieldTrialList> field_trial_list_;
     24 };
     25 
     26 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoEmptyAndValid) {
     27   FieldTrialFlags flags;
     28 
     29   EXPECT_TRUE(GetFieldTrialInfo(&flags));
     30   EXPECT_EQ(0ul, flags.size());
     31 
     32   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
     33                                                      "Group77"));
     34   EXPECT_TRUE(GetFieldTrialInfo(&flags));
     35   EXPECT_EQ(0ul, flags.size());
     36 }
     37 
     38 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoInvalidNumber) {
     39   FieldTrialFlags flags;
     40 
     41   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
     42                                                      "Group77.2"));
     43   EXPECT_TRUE(GetFieldTrialInfo(&flags));
     44   EXPECT_EQ(0ul, flags.size());
     45 }
     46 
     47 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoInvalidName) {
     48   FieldTrialFlags flags;
     49 
     50   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
     51                                                      "Invalid77"));
     52   EXPECT_TRUE(GetFieldTrialInfo(&flags));
     53   EXPECT_EQ(0ul, flags.size());
     54 }
     55 
     56 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoValidGroup) {
     57   FieldTrialFlags flags;
     58 
     59   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
     60                                                      "Group77"));
     61   EXPECT_TRUE(GetFieldTrialInfo(&flags));
     62   EXPECT_EQ(0ul, flags.size());
     63 }
     64 
     65 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoValidFlag) {
     66   FieldTrialFlags flags;
     67 
     68   EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
     69   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
     70                                                      "Group77 foo:6"));
     71   EXPECT_TRUE(GetFieldTrialInfo(&flags));
     72   EXPECT_EQ(1ul, flags.size());
     73   EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
     74 }
     75 
     76 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoNewName) {
     77   FieldTrialFlags flags;
     78 
     79   EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
     80   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
     81                                                      "Group77 foo:6"));
     82   EXPECT_TRUE(GetFieldTrialInfo(&flags));
     83   EXPECT_EQ(1ul, flags.size());
     84   EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
     85 }
     86 
     87 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoNewNameOverridesOld) {
     88   FieldTrialFlags flags;
     89 
     90   EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
     91   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
     92                                                      "Group77 foo:6"));
     93   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended",
     94                                                      "Group78 foo:5"));
     95   EXPECT_TRUE(GetFieldTrialInfo(&flags));
     96   EXPECT_EQ(1ul, flags.size());
     97   EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
     98 }
     99 
    100 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoLotsOfFlags) {
    101   FieldTrialFlags flags;
    102 
    103   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
    104       "EmbeddedSearch", "Group77 bar:1 baz:7 cat:dogs"));
    105   EXPECT_TRUE(GetFieldTrialInfo(&flags));
    106   EXPECT_EQ(3ul, flags.size());
    107   EXPECT_EQ(true, GetBoolValueForFlagWithDefault("bar", false, flags));
    108   EXPECT_EQ(7ul, GetUInt64ValueForFlagWithDefault("baz", 0, flags));
    109   EXPECT_EQ("dogs",
    110             GetStringValueForFlagWithDefault("cat", std::string(), flags));
    111   EXPECT_EQ("default",
    112             GetStringValueForFlagWithDefault("moose", "default", flags));
    113 }
    114 
    115 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoDisabled) {
    116   FieldTrialFlags flags;
    117 
    118   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
    119       "EmbeddedSearch", "Group77 bar:1 baz:7 cat:dogs DISABLED"));
    120   EXPECT_FALSE(GetFieldTrialInfo(&flags));
    121   EXPECT_EQ(0ul, flags.size());
    122 }
    123 
    124 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoControlFlags) {
    125   FieldTrialFlags flags;
    126 
    127   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
    128       "EmbeddedSearch", "Control77 bar:1 baz:7 cat:dogs"));
    129   EXPECT_TRUE(GetFieldTrialInfo(&flags));
    130   EXPECT_EQ(3ul, flags.size());
    131 }
    132 
    133 typedef EmbeddedSearchFieldTrialTest ShouldHideTopVerbatimTest;
    134 
    135 TEST_F(ShouldHideTopVerbatimTest, DoNotHideByDefault) {
    136   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
    137                                                      "Control"));
    138   EXPECT_FALSE(ShouldHideTopVerbatimMatch());
    139 }
    140 
    141 TEST_F(ShouldHideTopVerbatimTest, DoNotHideInInstantExtended) {
    142   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
    143                                                      "Group1"));
    144   EXPECT_FALSE(ShouldHideTopVerbatimMatch());
    145 }
    146 
    147 TEST_F(ShouldHideTopVerbatimTest, EnableByFlagInInstantExtended) {
    148   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
    149                                                      "Group1 hide_verbatim:1"));
    150   EXPECT_TRUE(ShouldHideTopVerbatimMatch());
    151 }
    152 
    153 TEST_F(ShouldHideTopVerbatimTest, EnableByFlagOutsideInstantExtended) {
    154   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
    155       "EmbeddedSearch", "Controll1 hide_verbatim:1"));
    156   EXPECT_TRUE(ShouldHideTopVerbatimMatch());
    157 }
    158 
    159 TEST_F(ShouldHideTopVerbatimTest, DisableByFlag) {
    160   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
    161                                                      "Group1 hide_verbatim:0"));
    162   EXPECT_FALSE(ShouldHideTopVerbatimMatch());
    163 }
    164 
    165 }  // namespace chrome
    166