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#ifndef H_AAPT_SPLIT_TEST_RULES 18dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski#define H_AAPT_SPLIT_TEST_RULES 19dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 20dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski#include "Rule.h" 21dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 22dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski#include <gtest/gtest.h> 23dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 24dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskinamespace split { 25dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskinamespace test { 26dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 27dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskistruct AndRule : public Rule { 28dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski AndRule() { 29dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski op = Rule::AND_SUBRULES; 30dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski } 31dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 32dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski AndRule& add(const Rule& rhs) { 33dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski subrules.add(new Rule(rhs)); 34dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski return *this; 35dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski } 36dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski}; 37dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 38dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskistruct OrRule : public Rule { 39dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski OrRule() { 40dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski op = Rule::OR_SUBRULES; 41dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski } 42dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 43dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski OrRule& add(const Rule& rhs) { 44dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski subrules.add(new Rule(rhs)); 45dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski return *this; 46dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski } 47dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski}; 48dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 49dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule EqRule(Rule::Key key, long value); 50dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule LtRule(Rule::Key key, long value); 51dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule GtRule(Rule::Key key, long value); 52dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule ContainsAnyRule(Rule::Key key, const char* str1); 53dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule ContainsAnyRule(Rule::Key key, const char* str1, const char* str2); 54dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinskiconst Rule AlwaysTrue(); 55dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 56dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski::testing::AssertionResult RulePredFormat( 57dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski const char* actualExpr, const char* expectedExpr, 58dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski const android::sp<Rule>& actual, const Rule& expected); 59dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 60dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski#define EXPECT_RULES_EQ(actual, expected) \ 61dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski EXPECT_PRED_FORMAT2(::split::test::RulePredFormat, actual, expected) 62dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 63dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski} // namespace test 64dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski} // namespace split 65dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski 66dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski#endif // H_AAPT_SPLIT_TEST_RULES 67