def test_parse(self): obj = { "id": 12, "tick": 123, "map": { "width": 111, "height": 222 }, "players": [{ "id": 1, "name": "b", "total_mass": 23, "isActive": True, "cells": [{ "id": 1, "mass": 2, "radius": 3, "position": { "x": 1, "y": 2 }, "target": { "x": 3, "y": 4 } }] }], "resources": { "regular": [{ "x": 1, "y": 2 }], "silver": [{ "x": 3, "y": 4 }], "gold": [{ "x": 5, "y": 6 }] }, "viruses": [{ "mass": 2, "position": { "x": 1, "y": 2 } }] } game = Game.parse(obj, 1) self.assertEqual(12, game.id) self.assertEqual(123, game.tick) self.assertEqual(111, game.map.width) self.assertEqual(222, game.map.height) self.assertEqual(1, len(game.players)) player = game.players[0] self.assertEqual(1, player.id) self.assertEqual("b", player.name) self.assertEqual(23, player.total_mass) self.assertEqual(True, player.active) self.assertEqual(1, len(player.cells)) cell = player.cells[0] self.assertEqual(1, cell.id) self.assertEqual(2, cell.mass) self.assertEqual(3, cell.radius) self.assertTrue(cell.position.almost_equals(Vec2(1, 2))) self.assertTrue(cell.target.almost_equals(Vec2(3, 4))) self.assertEqual(1, len(game.resources.regular)) self.assertTrue(game.resources.regular[0].almost_equals(Vec2(1, 2))) self.assertEqual(1, len(game.resources.silver)) self.assertTrue(game.resources.silver[0].almost_equals(Vec2(3, 4))) self.assertEqual(1, len(game.resources.gold)) self.assertTrue(game.resources.gold[0].almost_equals(Vec2(5, 6))) self.assertEqual(1, len(game.viruses)) virus = game.viruses[0] self.assertEqual(2, virus.mass) self.assertTrue(virus.position.almost_equals(Vec2(1, 2)))