Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: chrome/browser/extensions/api/declarative/declarative_rule_unittest.cc

Issue 11827026: Overhaul JSON Schema Compiler to support a number of features required to (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/declarative/declarative_rule.h" 5 #include "chrome/browser/extensions/api/declarative/declarative_rule.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/test/values_test_util.h" 8 #include "base/test/values_test_util.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/common/extensions/matcher/url_matcher_constants.h" 10 #include "chrome/common/extensions/matcher/url_matcher_constants.h"
11 #include "testing/gmock/include/gmock/gmock.h" 11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 namespace extensions { 14 namespace extensions {
15 15
16 using json_schema_compiler::any::Any;
17 using base::test::ParseJson; 16 using base::test::ParseJson;
18 17
18 namespace {
19
20 template<typename T>
21 linked_ptr<T> ScopedToLinkedPtr(scoped_ptr<T> ptr) {
22 return linked_ptr<T>(ptr.release());
23 }
24
25 } // namespace
26
19 struct RecordingCondition { 27 struct RecordingCondition {
20 typedef int MatchData; 28 typedef int MatchData;
21 29
22 URLMatcherConditionFactory* factory; 30 URLMatcherConditionFactory* factory;
23 scoped_ptr<base::Value> value; 31 scoped_ptr<base::Value> value;
24 32
25 void GetURLMatcherConditionSets( 33 void GetURLMatcherConditionSets(
26 URLMatcherConditionSet::Vector* condition_sets) const { 34 URLMatcherConditionSet::Vector* condition_sets) const {
27 // No condition sets. 35 // No condition sets.
28 } 36 }
(...skipping 16 matching lines...) Expand all
45 result->factory = url_matcher_condition_factory; 53 result->factory = url_matcher_condition_factory;
46 result->value.reset(condition.DeepCopy()); 54 result->value.reset(condition.DeepCopy());
47 return result.Pass(); 55 return result.Pass();
48 } 56 }
49 }; 57 };
50 typedef DeclarativeConditionSet<RecordingCondition> RecordingConditionSet; 58 typedef DeclarativeConditionSet<RecordingCondition> RecordingConditionSet;
51 59
52 TEST(DeclarativeConditionTest, ErrorConditionSet) { 60 TEST(DeclarativeConditionTest, ErrorConditionSet) {
53 URLMatcher matcher; 61 URLMatcher matcher;
54 RecordingConditionSet::AnyVector conditions; 62 RecordingConditionSet::AnyVector conditions;
55 conditions.push_back(make_linked_ptr(new Any(ParseJson("{\"key\": 1}")))); 63 conditions.push_back(ScopedToLinkedPtr(ParseJson("{\"key\": 1}")));
56 conditions.push_back(make_linked_ptr(new Any(ParseJson("{\"bad_key\": 2}")))); 64 conditions.push_back(ScopedToLinkedPtr(ParseJson("{\"bad_key\": 2}")));
57 65
58 std::string error; 66 std::string error;
59 scoped_ptr<RecordingConditionSet> result = 67 scoped_ptr<RecordingConditionSet> result =
60 RecordingConditionSet::Create(matcher.condition_factory(), 68 RecordingConditionSet::Create(matcher.condition_factory(),
61 conditions, &error); 69 conditions, &error);
62 EXPECT_EQ("Found error key", error); 70 EXPECT_EQ("Found error key", error);
63 ASSERT_FALSE(result); 71 ASSERT_FALSE(result);
64 } 72 }
65 73
66 TEST(DeclarativeConditionTest, CreateConditionSet) { 74 TEST(DeclarativeConditionTest, CreateConditionSet) {
67 URLMatcher matcher; 75 URLMatcher matcher;
68 RecordingConditionSet::AnyVector conditions; 76 RecordingConditionSet::AnyVector conditions;
69 conditions.push_back(make_linked_ptr(new Any(ParseJson("{\"key\": 1}")))); 77 conditions.push_back(ScopedToLinkedPtr(ParseJson("{\"key\": 1}")));
70 conditions.push_back(make_linked_ptr(new Any(ParseJson("[\"val1\", 2]")))); 78 conditions.push_back(ScopedToLinkedPtr(ParseJson("[\"val1\", 2]")));
71 79
72 // Test insertion 80 // Test insertion
73 std::string error; 81 std::string error;
74 scoped_ptr<RecordingConditionSet> result = 82 scoped_ptr<RecordingConditionSet> result =
75 RecordingConditionSet::Create(matcher.condition_factory(), 83 RecordingConditionSet::Create(matcher.condition_factory(),
76 conditions, &error); 84 conditions, &error);
77 EXPECT_EQ("", error); 85 EXPECT_EQ("", error);
78 ASSERT_TRUE(result); 86 ASSERT_TRUE(result);
79 EXPECT_EQ(2u, result->conditions().size()); 87 EXPECT_EQ(2u, result->conditions().size());
80 88
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 result->condition_set_id, 142 result->condition_set_id,
135 URLMatcherConditionSet::Conditions()); 143 URLMatcherConditionSet::Conditions());
136 } 144 }
137 return result.Pass(); 145 return result.Pass();
138 } 146 }
139 }; 147 };
140 148
141 TEST(DeclarativeConditionTest, FulfillConditionSet) { 149 TEST(DeclarativeConditionTest, FulfillConditionSet) {
142 typedef DeclarativeConditionSet<FulfillableCondition> FulfillableConditionSet; 150 typedef DeclarativeConditionSet<FulfillableCondition> FulfillableConditionSet;
143 FulfillableConditionSet::AnyVector conditions; 151 FulfillableConditionSet::AnyVector conditions;
144 conditions.push_back(make_linked_ptr(new Any(ParseJson( 152 conditions.push_back(ScopedToLinkedPtr(ParseJson(
145 "{\"url_id\": 1, \"max\": 3}")))); 153 "{\"url_id\": 1, \"max\": 3}")));
146 conditions.push_back(make_linked_ptr(new Any(ParseJson( 154 conditions.push_back(ScopedToLinkedPtr(ParseJson(
147 "{\"url_id\": 2, \"max\": 5}")))); 155 "{\"url_id\": 2, \"max\": 5}")));
148 conditions.push_back(make_linked_ptr(new Any(ParseJson( 156 conditions.push_back(ScopedToLinkedPtr(ParseJson(
149 "{\"url_id\": 3, \"max\": 1}")))); 157 "{\"url_id\": 3, \"max\": 1}")));
150 conditions.push_back(make_linked_ptr(new Any(ParseJson( 158 conditions.push_back(ScopedToLinkedPtr(ParseJson(
151 "{\"max\": -5}")))); // No url. 159 "{\"max\": -5}"))); // No url.
152 160
153 // Test insertion 161 // Test insertion
154 std::string error; 162 std::string error;
155 scoped_ptr<FulfillableConditionSet> result = 163 scoped_ptr<FulfillableConditionSet> result =
156 FulfillableConditionSet::Create(NULL, conditions, &error); 164 FulfillableConditionSet::Create(NULL, conditions, &error);
157 ASSERT_EQ("", error); 165 ASSERT_EQ("", error);
158 ASSERT_TRUE(result); 166 ASSERT_TRUE(result);
159 EXPECT_EQ(4u, result->conditions().size()); 167 EXPECT_EQ(4u, result->conditions().size());
160 168
161 std::set<URLMatcherConditionSet::ID> url_matches; 169 std::set<URLMatcherConditionSet::ID> url_matches;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 } 231 }
224 232
225 int GetMinimumPriority() const { 233 int GetMinimumPriority() const {
226 return min_priority; 234 return min_priority;
227 } 235 }
228 }; 236 };
229 typedef DeclarativeActionSet<SummingAction> SummingActionSet; 237 typedef DeclarativeActionSet<SummingAction> SummingActionSet;
230 238
231 TEST(DeclarativeActionTest, ErrorActionSet) { 239 TEST(DeclarativeActionTest, ErrorActionSet) {
232 SummingActionSet::AnyVector actions; 240 SummingActionSet::AnyVector actions;
233 actions.push_back(make_linked_ptr(new Any(ParseJson("{\"value\": 1}")))); 241 actions.push_back(ScopedToLinkedPtr(ParseJson("{\"value\": 1}")));
234 actions.push_back(make_linked_ptr(new Any(ParseJson( 242 actions.push_back(ScopedToLinkedPtr(ParseJson("{\"error\": \"the error\"}")));
235 "{\"error\": \"the error\"}"))));
236 243
237 std::string error; 244 std::string error;
238 bool bad = false; 245 bool bad = false;
239 scoped_ptr<SummingActionSet> result = 246 scoped_ptr<SummingActionSet> result =
240 SummingActionSet::Create(actions, &error, &bad); 247 SummingActionSet::Create(actions, &error, &bad);
241 EXPECT_EQ("the error", error); 248 EXPECT_EQ("the error", error);
242 EXPECT_FALSE(bad); 249 EXPECT_FALSE(bad);
243 EXPECT_FALSE(result); 250 EXPECT_FALSE(result);
244 251
245 actions.clear(); 252 actions.clear();
246 actions.push_back(make_linked_ptr(new Any(ParseJson("{\"value\": 1}")))); 253 actions.push_back(ScopedToLinkedPtr(ParseJson("{\"value\": 1}")));
247 actions.push_back(make_linked_ptr(new Any(ParseJson("{\"bad\": 3}")))); 254 actions.push_back(ScopedToLinkedPtr(ParseJson("{\"bad\": 3}")));
248 result = SummingActionSet::Create(actions, &error, &bad); 255 result = SummingActionSet::Create(actions, &error, &bad);
249 EXPECT_EQ("", error); 256 EXPECT_EQ("", error);
250 EXPECT_TRUE(bad); 257 EXPECT_TRUE(bad);
251 EXPECT_FALSE(result); 258 EXPECT_FALSE(result);
252 } 259 }
253 260
254 TEST(DeclarativeActionTest, ApplyActionSet) { 261 TEST(DeclarativeActionTest, ApplyActionSet) {
255 SummingActionSet::AnyVector actions; 262 SummingActionSet::AnyVector actions;
256 actions.push_back(make_linked_ptr(new Any(ParseJson( 263 actions.push_back(ScopedToLinkedPtr(ParseJson(
257 "{\"value\": 1," 264 "{\"value\": 1,"
258 " \"priority\": 5}")))); 265 " \"priority\": 5}")));
259 actions.push_back(make_linked_ptr(new Any(ParseJson("{\"value\": 2}")))); 266 actions.push_back(ScopedToLinkedPtr(ParseJson("{\"value\": 2}")));
260 267
261 // Test insertion 268 // Test insertion
262 std::string error; 269 std::string error;
263 bool bad = false; 270 bool bad = false;
264 scoped_ptr<SummingActionSet> result = 271 scoped_ptr<SummingActionSet> result =
265 SummingActionSet::Create(actions, &error, &bad); 272 SummingActionSet::Create(actions, &error, &bad);
266 EXPECT_EQ("", error); 273 EXPECT_EQ("", error);
267 EXPECT_FALSE(bad); 274 EXPECT_FALSE(bad);
268 ASSERT_TRUE(result); 275 ASSERT_TRUE(result);
269 EXPECT_EQ(2u, result->actions().size()); 276 EXPECT_EQ(2u, result->actions().size());
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 " \"priority\": 200 \n" 385 " \"priority\": 200 \n"
379 "}"), 386 "}"),
380 json_rule.get())); 387 json_rule.get()));
381 rule = Rule::Create(matcher.condition_factory(), kExtensionId, base::Time(), 388 rule = Rule::Create(matcher.condition_factory(), kExtensionId, base::Time(),
382 json_rule, &AtLeastOneCondition, &error); 389 json_rule, &AtLeastOneCondition, &error);
383 EXPECT_FALSE(rule); 390 EXPECT_FALSE(rule);
384 EXPECT_EQ("No conditions", error); 391 EXPECT_EQ("No conditions", error);
385 } 392 }
386 393
387 } // namespace extensions 394 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698