Exemplo n.º 1
0
class SchemasTest(unittest.TestCase):
  def setUp(self):
    f = file(datafile('zoo.json'))
    discovery = f.read()
    f.close()
    discovery = simplejson.loads(discovery)
    self.sc = Schemas(discovery)

  def test_basic_formatting(self):
    self.assertEqual(sorted(LOAD_FEED.splitlines()),
                     sorted(self.sc.prettyPrintByName('LoadFeed').splitlines()))

  def test_empty_edge_case(self):
    self.assertTrue('Unknown type' in self.sc.prettyPrintSchema({}))

  def test_simple_object(self):
    self.assertEqual({}, eval(self.sc.prettyPrintSchema({'type': 'object'})))

  def test_string(self):
    self.assertEqual(type(""), type(eval(self.sc.prettyPrintSchema({'type':
      'string'}))))

  def test_integer(self):
    self.assertEqual(type(20), type(eval(self.sc.prettyPrintSchema({'type':
      'integer'}))))

  def test_number(self):
    self.assertEqual(type(1.2), type(eval(self.sc.prettyPrintSchema({'type':
      'number'}))))

  def test_boolean(self):
    self.assertEqual(type(True), type(eval(self.sc.prettyPrintSchema({'type':
      'boolean'}))))

  def test_string_default(self):
    self.assertEqual('foo', eval(self.sc.prettyPrintSchema({'type':
      'string', 'default': 'foo'})))

  def test_integer_default(self):
    self.assertEqual(20, eval(self.sc.prettyPrintSchema({'type':
      'integer', 'default': 20})))

  def test_number_default(self):
    self.assertEqual(1.2, eval(self.sc.prettyPrintSchema({'type':
      'number', 'default': 1.2})))

  def test_boolean_default(self):
    self.assertEqual(False, eval(self.sc.prettyPrintSchema({'type':
      'boolean', 'default': False})))

  def test_null(self):
    self.assertEqual(None, eval(self.sc.prettyPrintSchema({'type': 'null'})))

  def test_any(self):
    self.assertEqual('', eval(self.sc.prettyPrintSchema({'type': 'any'})))

  def test_array(self):
    self.assertEqual([{}], eval(self.sc.prettyPrintSchema({'type': 'array',
      'items': {'type': 'object'}})))

  def test_nested_references(self):
    feed = {
        'items': [ {
            'photo': {
              'hash': 'A String',
              'hashAlgorithm': 'A String',
              'filename': 'A String',
              'type': 'A String',
              'size': 42
              },
            'kind': 'zoo#animal',
            'etag': 'A String',
            'name': 'A String'
          }
        ],
        'kind': 'zoo#animalFeed',
        'etag': 'A String'
      }

    self.assertEqual(feed, eval(self.sc.prettyPrintByName('AnimalFeed')))

  def test_additional_properties(self):
    items = {
        'animals': {
          'a_key': {
            'photo': {
              'hash': 'A String',
              'hashAlgorithm': 'A String',
              'filename': 'A String',
              'type': 'A String',
              'size': 42
              },
            'kind': 'zoo#animal',
            'etag': 'A String',
            'name': 'A String'
          }
        },
        'kind': 'zoo#animalMap',
        'etag': 'A String'
      }

    self.assertEqual(items, eval(self.sc.prettyPrintByName('AnimalMap')))

  def test_unknown_name(self):
    self.assertRaises(KeyError,
        self.sc.prettyPrintByName, 'UknownSchemaThing')
Exemplo n.º 2
0
class SchemasTest(unittest.TestCase):
    def setUp(self):
        f = open(datafile("zoo.json"))
        discovery = f.read()
        f.close()
        discovery = json.loads(discovery)
        self.sc = Schemas(discovery)

    def test_basic_formatting(self):
        self.assertEqual(
            sorted(LOAD_FEED.splitlines()),
            sorted(self.sc.prettyPrintByName("LoadFeed").splitlines()),
        )

    def test_empty_edge_case(self):
        self.assertTrue("Unknown type" in self.sc.prettyPrintSchema({}))

    def test_simple_object(self):
        self.assertEqual({}, eval(self.sc.prettyPrintSchema({"type": "object"})))

    def test_string(self):
        self.assertEqual(
            type(""), type(eval(self.sc.prettyPrintSchema({"type": "string"})))
        )

    def test_integer(self):
        self.assertEqual(
            type(20), type(eval(self.sc.prettyPrintSchema({"type": "integer"})))
        )

    def test_number(self):
        self.assertEqual(
            type(1.2), type(eval(self.sc.prettyPrintSchema({"type": "number"})))
        )

    def test_boolean(self):
        self.assertEqual(
            type(True), type(eval(self.sc.prettyPrintSchema({"type": "boolean"})))
        )

    def test_string_default(self):
        self.assertEqual(
            "foo", eval(self.sc.prettyPrintSchema({"type": "string", "default": "foo"}))
        )

    def test_integer_default(self):
        self.assertEqual(
            20, eval(self.sc.prettyPrintSchema({"type": "integer", "default": 20}))
        )

    def test_number_default(self):
        self.assertEqual(
            1.2, eval(self.sc.prettyPrintSchema({"type": "number", "default": 1.2}))
        )

    def test_boolean_default(self):
        self.assertEqual(
            False,
            eval(self.sc.prettyPrintSchema({"type": "boolean", "default": False})),
        )

    def test_null(self):
        self.assertEqual(None, eval(self.sc.prettyPrintSchema({"type": "null"})))

    def test_any(self):
        self.assertEqual("", eval(self.sc.prettyPrintSchema({"type": "any"})))

    def test_array(self):
        self.assertEqual(
            [{}],
            eval(
                self.sc.prettyPrintSchema(
                    {"type": "array", "items": {"type": "object"}}
                )
            ),
        )

    def test_nested_references(self):
        feed = {
            "items": [
                {
                    "photo": {
                        "hash": "A String",
                        "hashAlgorithm": "A String",
                        "filename": "A String",
                        "type": "A String",
                        "size": 42,
                    },
                    "kind": "zoo#animal",
                    "etag": "A String",
                    "name": "A String",
                }
            ],
            "kind": "zoo#animalFeed",
            "etag": "A String",
        }

        self.assertEqual(feed, eval(self.sc.prettyPrintByName("AnimalFeed")))

    def test_additional_properties(self):
        items = {
            "animals": {
                "a_key": {
                    "photo": {
                        "hash": "A String",
                        "hashAlgorithm": "A String",
                        "filename": "A String",
                        "type": "A String",
                        "size": 42,
                    },
                    "kind": "zoo#animal",
                    "etag": "A String",
                    "name": "A String",
                }
            },
            "kind": "zoo#animalMap",
            "etag": "A String",
        }

        self.assertEqual(items, eval(self.sc.prettyPrintByName("AnimalMap")))

    def test_unknown_name(self):
        self.assertRaises(KeyError, self.sc.prettyPrintByName, "UknownSchemaThing")