1/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package android.net;
17
18import static android.net.NetworkPolicyManager.MASK_ALL_NETWORKS;
19import static android.net.NetworkPolicyManager.MASK_METERED_NETWORKS;
20import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
21import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED;
22import static android.net.NetworkPolicyManager.RULE_NONE;
23import static android.net.NetworkPolicyManager.RULE_REJECT_ALL;
24import static android.net.NetworkPolicyManager.RULE_REJECT_METERED;
25import static android.net.NetworkPolicyManager.RULE_TEMPORARY_ALLOW_METERED;
26import static android.net.NetworkPolicyManager.uidRulesToString;
27
28import junit.framework.TestCase;
29
30public class NetworkPolicyManagerTest extends TestCase {
31
32    public void testUidRulesToString() {
33        uidRulesToStringTest(RULE_NONE, "0 (NONE)");
34        uidRulesToStringTest(RULE_ALLOW_METERED, "1 (ALLOW_METERED)");
35        uidRulesToStringTest(RULE_TEMPORARY_ALLOW_METERED, "2 (TEMPORARY_ALLOW_METERED)");
36        uidRulesToStringTest(RULE_REJECT_METERED, "4 (REJECT_METERED)");
37        uidRulesToStringTest(RULE_ALLOW_ALL, "32 (ALLOW_ALL)");
38        uidRulesToStringTest(RULE_REJECT_ALL, "64 (REJECT_ALL)");
39
40        uidRulesToStringTest(RULE_ALLOW_METERED | RULE_ALLOW_ALL,
41                "33 (ALLOW_METERED|ALLOW_ALL)");
42        uidRulesToStringTest(RULE_ALLOW_METERED | RULE_REJECT_ALL,
43                "65 (ALLOW_METERED|REJECT_ALL)");
44        uidRulesToStringTest(RULE_TEMPORARY_ALLOW_METERED | RULE_ALLOW_ALL,
45                "34 (TEMPORARY_ALLOW_METERED|ALLOW_ALL)");
46        uidRulesToStringTest(RULE_TEMPORARY_ALLOW_METERED | RULE_REJECT_ALL,
47                "66 (TEMPORARY_ALLOW_METERED|REJECT_ALL)");
48        uidRulesToStringTest(RULE_REJECT_METERED | RULE_ALLOW_ALL,
49                "36 (REJECT_METERED|ALLOW_ALL)");
50        uidRulesToStringTest(RULE_REJECT_METERED | RULE_REJECT_ALL,
51                "68 (REJECT_METERED|REJECT_ALL)");
52    }
53
54    private void uidRulesToStringTest(int uidRules, String expected) {
55        final String actual = uidRulesToString(uidRules);
56        assertEquals("Wrong string for uidRules " + uidRules, expected, actual);
57    }
58
59    public void testMeteredNetworksMask() {
60        assertEquals(RULE_NONE, MASK_METERED_NETWORKS
61                & RULE_NONE);
62
63        assertEquals(RULE_ALLOW_METERED, MASK_METERED_NETWORKS
64                & RULE_ALLOW_METERED);
65        assertEquals(RULE_ALLOW_METERED, MASK_METERED_NETWORKS
66                & (RULE_ALLOW_METERED | RULE_ALLOW_ALL));
67        assertEquals(RULE_ALLOW_METERED, MASK_METERED_NETWORKS
68                & (RULE_ALLOW_METERED | RULE_REJECT_ALL));
69
70        assertEquals(RULE_TEMPORARY_ALLOW_METERED, MASK_METERED_NETWORKS
71                & RULE_TEMPORARY_ALLOW_METERED);
72        assertEquals(RULE_TEMPORARY_ALLOW_METERED, MASK_METERED_NETWORKS
73                & (RULE_TEMPORARY_ALLOW_METERED | RULE_ALLOW_ALL));
74        assertEquals(RULE_TEMPORARY_ALLOW_METERED, MASK_METERED_NETWORKS
75                & (RULE_TEMPORARY_ALLOW_METERED | RULE_REJECT_ALL));
76
77        assertEquals(RULE_REJECT_METERED, MASK_METERED_NETWORKS
78                & RULE_REJECT_METERED);
79        assertEquals(RULE_REJECT_METERED, MASK_METERED_NETWORKS
80                & (RULE_REJECT_METERED | RULE_ALLOW_ALL));
81        assertEquals(RULE_REJECT_METERED, MASK_METERED_NETWORKS
82                & (RULE_REJECT_METERED | RULE_REJECT_ALL));
83    }
84
85    public void testAllNetworksMask() {
86        assertEquals(RULE_NONE, MASK_ALL_NETWORKS
87                & RULE_NONE);
88
89        assertEquals(RULE_ALLOW_ALL, MASK_ALL_NETWORKS
90                & RULE_ALLOW_ALL);
91        assertEquals(RULE_ALLOW_ALL, MASK_ALL_NETWORKS
92                & (RULE_ALLOW_ALL | RULE_ALLOW_METERED));
93        assertEquals(RULE_ALLOW_ALL, MASK_ALL_NETWORKS
94                & (RULE_ALLOW_ALL | RULE_TEMPORARY_ALLOW_METERED));
95        assertEquals(RULE_ALLOW_ALL, MASK_ALL_NETWORKS
96                & (RULE_ALLOW_ALL | RULE_REJECT_METERED));
97
98        assertEquals(RULE_REJECT_ALL, MASK_ALL_NETWORKS
99                & RULE_REJECT_ALL);
100        assertEquals(RULE_REJECT_ALL, MASK_ALL_NETWORKS
101                & (RULE_REJECT_ALL | RULE_ALLOW_METERED));
102        assertEquals(RULE_REJECT_ALL, MASK_ALL_NETWORKS
103                & (RULE_REJECT_ALL | RULE_TEMPORARY_ALLOW_METERED));
104        assertEquals(RULE_REJECT_ALL, MASK_ALL_NETWORKS
105                & (RULE_REJECT_ALL | RULE_REJECT_METERED));
106    }
107}
108