| // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef NET_PROXY_RESOLUTION_PROXY_CONFIG_SERVICE_COMMON_UNITTEST_H_ |
| #define NET_PROXY_RESOLUTION_PROXY_CONFIG_SERVICE_COMMON_UNITTEST_H_ |
| |
| #include "net/proxy_resolution/proxy_config.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| // Helper functions to describe the expected value of a |
| // ProxyConfig::ProxyRules, and to check for a match. |
| |
| namespace net { |
| |
| // This structure contains our expectations on what values the ProxyRules |
| // should have. |
| struct ProxyRulesExpectation { |
| ProxyRulesExpectation(ProxyConfig::ProxyRules::Type type, |
| const char* single_proxy, |
| const char* proxy_for_http, |
| const char* proxy_for_https, |
| const char* proxy_for_ftp, |
| const char* fallback_proxy, |
| const char* flattened_bypass_rules, |
| bool reverse_bypass); |
| |
| // Call this within an EXPECT_TRUE(), to assert that |rules| matches |
| // our expected values |*this|. |
| ::testing::AssertionResult Matches( |
| const ProxyConfig::ProxyRules& rules) const; |
| |
| // Creates an expectation that the ProxyRules has no rules. |
| static ProxyRulesExpectation Empty(); |
| |
| // Creates an expectation that the ProxyRules has nothing other than |
| // the specified bypass rules. |
| static ProxyRulesExpectation EmptyWithBypass( |
| const char* flattened_bypass_rules); |
| |
| // Creates an expectation that the ProxyRules is for a single proxy |
| // server for all schemes. |
| static ProxyRulesExpectation Single(const char* single_proxy, |
| const char* flattened_bypass_rules); |
| |
| // Creates an expectation that the ProxyRules specifies a different |
| // proxy server for each URL scheme. |
| static ProxyRulesExpectation PerScheme(const char* proxy_http, |
| const char* proxy_https, |
| const char* proxy_ftp, |
| const char* flattened_bypass_rules); |
| |
| // Same as above, but additionally with a SOCKS fallback. |
| static ProxyRulesExpectation PerSchemeWithSocks( |
| const char* proxy_http, |
| const char* proxy_https, |
| const char* proxy_ftp, |
| const char* fallback_proxy, |
| const char* flattened_bypass_rules); |
| |
| // Same as PerScheme, but with the bypass rules reversed |
| static ProxyRulesExpectation PerSchemeWithBypassReversed( |
| const char* proxy_http, |
| const char* proxy_https, |
| const char* proxy_ftp, |
| const char* flattened_bypass_rules); |
| |
| ProxyConfig::ProxyRules::Type type; |
| const char* single_proxy; |
| const char* proxy_for_http; |
| const char* proxy_for_https; |
| const char* proxy_for_ftp; |
| const char* fallback_proxy; |
| const char* flattened_bypass_rules; |
| bool reverse_bypass; |
| }; |
| |
| } // namespace net |
| |
| #endif // NET_PROXY_RESOLUTION_PROXY_CONFIG_SERVICE_COMMON_UNITTEST_H_ |