- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / renderer / safe_browsing / features_unittest.cc
1 // Copyright (c) 2012 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 "chrome/renderer/safe_browsing/features.h"
6
7 #include "base/format_macros.h"
8 #include "base/strings/stringprintf.h"
9 #include "chrome/renderer/safe_browsing/test_utils.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace safe_browsing {
13
14 TEST(PhishingFeaturesTest, TooManyFeatures) {
15   FeatureMap features;
16   for (size_t i = 0; i < FeatureMap::kMaxFeatureMapSize; ++i) {
17     EXPECT_TRUE(features.AddBooleanFeature(
18         base::StringPrintf("Feature%" PRIuS, i)));
19   }
20   EXPECT_EQ(FeatureMap::kMaxFeatureMapSize, features.features().size());
21
22   // Attempting to add more features should fail.
23   for (size_t i = 0; i < 3; ++i) {
24     EXPECT_FALSE(features.AddBooleanFeature(
25         base::StringPrintf("Extra%" PRIuS, i)));
26   }
27   EXPECT_EQ(FeatureMap::kMaxFeatureMapSize, features.features().size());
28 }
29
30 TEST(PhishingFeaturesTest, IllegalFeatureValue) {
31   FeatureMap features;
32   EXPECT_FALSE(features.AddRealFeature("toosmall", -0.1));
33   EXPECT_TRUE(features.AddRealFeature("zero", 0.0));
34   EXPECT_TRUE(features.AddRealFeature("pointfive", 0.5));
35   EXPECT_TRUE(features.AddRealFeature("one", 1.0));
36   EXPECT_FALSE(features.AddRealFeature("toolarge", 1.1));
37
38   FeatureMap expected_features;
39   expected_features.AddRealFeature("zero", 0.0);
40   expected_features.AddRealFeature("pointfive", 0.5);
41   expected_features.AddRealFeature("one", 1.0);
42   ExpectFeatureMapsAreEqual(features, expected_features);
43 }
44
45 }  // namespace safe_browsing