| #!/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() |