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