chromium/tools/json_schema_compiler/json_schema_test.py

#!/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 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.assertEqual(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.assertEqual(expected,
                     json_schema.DeleteNodes(given, matcher=should_delete))


if __name__ == '__main__':
  unittest.main()