1dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski/*
2dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski * Copyright (C) 2014 The Android Open Source Project
3dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski *
4dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License");
5dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski * you may not use this file except in compliance with the License.
6dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski * You may obtain a copy of the License at
7dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski *
8dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski *      http://www.apache.org/licenses/LICENSE-2.0
9dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski *
10dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski * Unless required by applicable law or agreed to in writing, software
11dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS,
12dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski * See the License for the specific language governing permissions and
14dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski * limitations under the License.
15dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski */
16dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
17dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski#include "TestRules.h"
18dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
19dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski#include <utils/String8.h>
20dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
21dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiusing android::String8;
22dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiusing android::sp;
23dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
24dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskinamespace split {
25dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskinamespace test {
26dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
27dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule EqRule(Rule::Key key, long value) {
28dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    Rule rule;
29dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.op = Rule::EQUALS;
30dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.key = key;
31dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.longArgs.add(value);
32dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    return rule;
33dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski}
34dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
35dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule GtRule(Rule::Key key, long value) {
36dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    Rule rule;
37dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.op = Rule::GREATER_THAN;
38dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.key = key;
39dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.longArgs.add(value);
40dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    return rule;
41dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski}
42dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
43dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule LtRule(Rule::Key key, long value) {
44dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    Rule rule;
45dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.op = Rule::LESS_THAN;
46dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.key = key;
47dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.longArgs.add(value);
48dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    return rule;
49dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski}
50dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
51dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule ContainsAnyRule(Rule::Key key, const char* str1) {
52dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    Rule rule;
53dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.op = Rule::CONTAINS_ANY;
54dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.key = key;
55dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.stringArgs.add(String8(str1));
56dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    return rule;
57dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski}
58dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
59dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule ContainsAnyRule(Rule::Key key, const char* str1, const char* str2) {
60dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    Rule rule;
61dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.op = Rule::CONTAINS_ANY;
62dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.key = key;
63dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.stringArgs.add(String8(str1));
64dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.stringArgs.add(String8(str2));
65dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    return rule;
66dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski}
67dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
68dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule AlwaysTrue() {
69dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    Rule rule;
70dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    rule.op = Rule::ALWAYS_TRUE;
71dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    return rule;
72dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski}
73dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
74dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski::testing::AssertionResult RulePredFormat(
75dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski        const char*, const char*,
76dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski        const sp<Rule>& actual, const Rule& expected) {
77dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    const String8 expectedStr(expected.toJson());
78c3344e8a6d7402326204d1232a4c5ffa382f70a9Adam Lesinski    const String8 actualStr(actual != NULL ? actual->toJson() : String8());
79dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
80dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    if (expectedStr != actualStr) {
81dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski        return ::testing::AssertionFailure()
82dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski                << "Expected: " << expectedStr.string() << "\n"
83dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski                << "  Actual: " << actualStr.string();
84dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    }
85dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski    return ::testing::AssertionSuccess();
86dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski}
87dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
88dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski
89dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski} // namespace test
90dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski} // namespace split
91