| #!/usr/bin/env python3 |
| # Copyright 2012 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import compiler |
| import json_schema |
| import unittest |
| |
| |
| class CompilerUnittest(unittest.TestCase): |
| |
| def testNocompile(self): |
| compiled = [{ |
| "namespace": "compile", |
| "description": "The compile API.", |
| "functions": [], |
| "types": {} |
| }, { |
| "namespace": "functions", |
| "description": "The functions API.", |
| "functions": [{ |
| "id": "two" |
| }, { |
| "id": "four" |
| }], |
| "types": { |
| "one": { |
| "key": "value" |
| } |
| } |
| }, { |
| "namespace": "types", |
| "description": "The types API.", |
| "functions": [{ |
| "id": "one" |
| }], |
| "types": { |
| "two": { |
| "key": "value" |
| }, |
| "four": { |
| "key": "value" |
| } |
| } |
| }, { |
| "namespace": "nested", |
| "description": "The nested API.", |
| "properties": { |
| "sync": { |
| "functions": [{ |
| "id": "two" |
| }, { |
| "id": "four" |
| }], |
| "types": { |
| "two": { |
| "key": "value" |
| }, |
| "four": { |
| "key": "value" |
| } |
| } |
| } |
| } |
| }] |
| |
| schema = json_schema.CachedLoad('test/compiler_test.json') |
| self.assertEqual(compiled, compiler.DeleteNodes(schema, 'nocompile')) |
| |
| def should_delete(value): |
| return isinstance(value, dict) and not value.get('valid', True) |
| |
| expected = [{'one': {'test': 'test'}}, {'valid': True}, {}] |
| given = [{ |
| 'one': { |
| 'test': 'test' |
| }, |
| 'two': { |
| 'valid': False |
| } |
| }, { |
| 'valid': True |
| }, {}, { |
| 'valid': False |
| }] |
| self.assertEqual(expected, compiler.DeleteNodes(given, |
| matcher=should_delete)) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |