|  | #!/usr/bin/env python | 
|  | # Copyright (c) 2012 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. | 
|  |  | 
|  | import json_schema | 
|  | import unittest | 
|  |  | 
|  | class JsonSchemaUnittest(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/json_schema_test.json') | 
|  | self.assertEquals(compiled, json_schema.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.assertEquals( | 
|  | expected, json_schema.DeleteNodes(given, matcher=should_delete)) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | unittest.main() |