| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright 2013 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 import unittest | |
| 7 | |
| 8 from features_utility import Parse, Filtered, MergedWith | |
| 9 | |
| 10 | |
| 11 class FeaturesUtilityTest(unittest.TestCase): | |
| 12 def testFromJson(self): | |
| 13 raw_features_json = { | |
| 14 'doc1': { | |
| 15 'extension_types': ['extension', 'platform_app'] | |
| 16 }, | |
| 17 'doc2': { | |
| 18 'extension_types': ['hosted_app', 'packaged_app'] | |
| 19 }, | |
| 20 'doc3': { | |
| 21 'whitelist': 'hashhashashhashashhashashhash' | |
| 22 }, | |
| 23 'doc4': [ | |
| 24 { 'extension_types': 'all' }, | |
| 25 { 'whitelist': 'hashhashashhashashhashashhash' } | |
| 26 ], | |
| 27 'doc5': { | |
| 28 'extension_types': ['extension'] | |
| 29 }, | |
| 30 'doc1.sub1': { | |
| 31 'extension_types': ['platform_app', 'hosted_app', 'packaged_app'] | |
| 32 } | |
| 33 } | |
| 34 | |
| 35 expected = { | |
| 36 'doc1': { | |
| 37 'platforms': ['apps', 'extensions'], | |
| 38 'name': 'doc1' | |
| 39 }, | |
| 40 'doc2': { | |
| 41 'platforms': [], | |
| 42 'name': 'doc2' | |
| 43 }, | |
| 44 'doc4': { | |
| 45 'platforms': ['apps', 'extensions'], | |
| 46 'name': 'doc4' | |
| 47 }, | |
| 48 'doc5': { | |
| 49 'platforms': ['extensions'], | |
| 50 'name': 'doc5' | |
| 51 }, | |
| 52 'doc1.sub1': { | |
| 53 'platforms': ['apps'], | |
| 54 'name': 'doc1.sub1' | |
| 55 } | |
| 56 } | |
| 57 | |
| 58 self.assertEqual(expected, Parse(raw_features_json)) | |
| 59 | |
| 60 def testFeatureList(self): | |
| 61 raw_features_json = { | |
| 62 'doc1': [ | |
| 63 { 'extension_types': ['extension'] }, | |
| 64 { 'extension_types': ['platform_app'] } | |
| 65 ], | |
| 66 'doc2': [ | |
| 67 { 'channel': 'dev', 'extension_types': ['extension', 'platform_app'] }, | |
| 68 { 'channel': 'stable' } | |
| 69 ], | |
| 70 'doc3': [ | |
| 71 { 'channel': 'beta' }, | |
| 72 { 'channel': 'dev' } | |
| 73 ], | |
| 74 'doc4': [ | |
| 75 { 'channel': 'beta' }, | |
| 76 { 'dependencies': ['permission:perm1'] } | |
| 77 ] | |
| 78 } | |
| 79 | |
| 80 expected = { | |
| 81 'doc1': { | |
| 82 'platforms': ['apps', 'extensions'], | |
| 83 'name': 'doc1' | |
| 84 }, | |
| 85 'doc2': { | |
| 86 'channel': 'stable', | |
| 87 'platforms': ['apps', 'extensions'], | |
| 88 'name': 'doc2' | |
| 89 }, | |
| 90 'doc3': { | |
| 91 'platforms': [], | |
| 92 'channel': 'beta', | |
| 93 'name': 'doc3' | |
| 94 }, | |
| 95 'doc4': { | |
| 96 'platforms': [], | |
| 97 'dependencies': ['permission:perm1'], | |
| 98 'name': 'doc4' | |
| 99 } | |
| 100 } | |
| 101 | |
| 102 self.assertEqual(expected, Parse(raw_features_json)) | |
| 103 | |
| 104 def testFilter(self): | |
| 105 unfiltered = { | |
| 106 'doc1': { 'platforms': ['apps'] }, | |
| 107 'doc2': { 'platforms': ['extensions'] }, | |
| 108 'doc3': { 'platforms': ['apps', 'extensions'] }, | |
| 109 'doc4': { 'platforms': [] } | |
| 110 } | |
| 111 | |
| 112 apps_names = set(('doc1', 'doc3')) | |
| 113 extension_names = set(('doc2', 'doc3')) | |
| 114 | |
| 115 self.assertEqual(sorted(apps_names), | |
| 116 sorted(Filtered(unfiltered, 'apps').keys())) | |
| 117 self.assertEqual(sorted(extension_names), | |
| 118 sorted(Filtered(unfiltered, 'extensions').keys())) | |
| 119 | |
| 120 def testMergeFeatures(self): | |
| 121 features = { | |
| 122 'doc1': { | |
| 123 'platforms': ['apps'] | |
| 124 }, | |
| 125 'doc3': { | |
| 126 'name': 'doc3' | |
| 127 } | |
| 128 } | |
| 129 | |
| 130 other = { | |
| 131 'doc1': { | |
| 132 'name': 'doc1', | |
| 133 'platforms': ['extensions'] | |
| 134 }, | |
| 135 'doc2': { | |
| 136 'name': 'doc2' | |
| 137 }, | |
| 138 'doc3': { | |
| 139 'platforms': ['extensions', 'apps'] | |
| 140 } | |
| 141 } | |
| 142 | |
| 143 expected = { | |
| 144 'doc1': { | |
| 145 'name': 'doc1', | |
| 146 'platforms': ['extensions'] | |
| 147 }, | |
| 148 'doc2': { | |
| 149 'name': 'doc2', | |
| 150 'platforms': [] | |
| 151 }, | |
| 152 'doc3': { | |
| 153 'name': 'doc3', | |
| 154 'platforms': ['extensions', 'apps'] | |
| 155 } | |
| 156 } | |
| 157 | |
| 158 self.assertEqual(expected, MergedWith(features, other)) | |
| 159 | |
| 160 if __name__ == '__main__': | |
| 161 unittest.main() | |
| OLD | NEW |