def test_empty(self):
        """Start with an empty object"""

        x = PropertyDict()

        self.assertIsNone(x.couch)
        self.assertIsNone(x.potato)

        x.couch = self.dict_b
        x.potato = self.dict_a

        self.assertEqual(x.couch.z.a, 7)
        self.assertEqual(x.couch.zz.b, 8)
        self.assertEqual(x.couch.z['a'], 7)
        self.assertEqual(x.couch.zz['b'], 8)
        self.assertEqual(x.couch['z'].a, 7)
        self.assertEqual(x.couch['zz'].b, 8)
        self.assertEqual(x.couch['z']['a'], 7)
        self.assertEqual(x.couch['zz']['b'], 8)
        self.assertEqual(x['couch'].z.a, 7)
        self.assertEqual(x['couch'].zz.b, 8)
        self.assertEqual(x['couch'].z['a'], 7)
        self.assertEqual(x['couch'].zz['b'], 8)
        self.assertEqual(x['couch']['z'].a, 7)
        self.assertEqual(x['couch']['zz'].b, 8)
        self.assertEqual(x['couch']['z']['a'], 7)
        self.assertEqual(x['couch']['zz']['b'], 8)

        self.assertEqual(x.potato.a, 1)
        self.assertEqual(x.potato['a'], 1)
        self.assertEqual(x.potato.b, 2)
        self.assertEqual(x.potato['b'], 2)
        self.assertEqual(x.potato.c[0], 3)
        self.assertEqual(x.potato.c[1], 4)
        self.assertEqual(x.potato.c[2], 5)
        self.assertEqual(x.potato['c'][0], 3)
        self.assertEqual(x.potato['c'][1], 4)
        self.assertEqual(x.potato['c'][2], 5)
        self.assertEqual(x.potato.d[0].a, 1)
        self.assertEqual(x.potato.d[1].b, 2)
        self.assertEqual(x.potato.d[0]['a'], 1)
        self.assertEqual(x.potato.d[1]['b'], 2)
        self.assertEqual(x.potato['d'][0].a, 1)
        self.assertEqual(x.potato['d'][1].b, 2)
        self.assertEqual(x.potato['d'][0]['a'], 1)
        self.assertEqual(x.potato['d'][1]['b'], 2)
        self.assertEqual(x['potato'].a, 1)
        self.assertEqual(x['potato']['a'], 1)
        self.assertEqual(x['potato'].b, 2)
        self.assertEqual(x['potato']['b'], 2)
        self.assertEqual(x['potato'].c[0], 3)
        self.assertEqual(x['potato'].c[1], 4)
        self.assertEqual(x['potato'].c[2], 5)
        self.assertEqual(x['potato']['c'][0], 3)
        self.assertEqual(x['potato']['c'][1], 4)
        self.assertEqual(x['potato']['c'][2], 5)
        self.assertEqual(x['potato'].d[0].a, 1)
        self.assertEqual(x['potato'].d[1].b, 2)
        self.assertEqual(x['potato'].d[0]['a'], 1)
        self.assertEqual(x['potato'].d[1]['b'], 2)
        self.assertEqual(x['potato']['d'][0].a, 1)
        self.assertEqual(x['potato']['d'][1].b, 2)
        self.assertEqual(x['potato']['d'][0]['a'], 1)
        self.assertEqual(x['potato']['d'][1]['b'], 2)
    def test_empty(self):
        """Start with an empty object"""

        x = PropertyDict()

        self.assertIsNone(x.couch)
        self.assertIsNone(x.potato)

        x.couch = self.dict_b
        x.potato = self.dict_a

        self.assertEqual(x.couch.z.a, 7)
        self.assertEqual(x.couch.zz.b, 8)
        self.assertEqual(x.couch.z['a'], 7)
        self.assertEqual(x.couch.zz['b'], 8)
        self.assertEqual(x.couch['z'].a, 7)
        self.assertEqual(x.couch['zz'].b, 8)
        self.assertEqual(x.couch['z']['a'], 7)
        self.assertEqual(x.couch['zz']['b'], 8)
        self.assertEqual(x['couch'].z.a, 7)
        self.assertEqual(x['couch'].zz.b, 8)
        self.assertEqual(x['couch'].z['a'], 7)
        self.assertEqual(x['couch'].zz['b'], 8)
        self.assertEqual(x['couch']['z'].a, 7)
        self.assertEqual(x['couch']['zz'].b, 8)
        self.assertEqual(x['couch']['z']['a'], 7)
        self.assertEqual(x['couch']['zz']['b'], 8)

        self.assertEqual(x.potato.a, 1)
        self.assertEqual(x.potato['a'], 1)
        self.assertEqual(x.potato.b, 2)
        self.assertEqual(x.potato['b'], 2)
        self.assertEqual(x.potato.c[0], 3)
        self.assertEqual(x.potato.c[1], 4)
        self.assertEqual(x.potato.c[2], 5)
        self.assertEqual(x.potato['c'][0], 3)
        self.assertEqual(x.potato['c'][1], 4)
        self.assertEqual(x.potato['c'][2], 5)
        self.assertEqual(x.potato.d[0].a, 1)
        self.assertEqual(x.potato.d[1].b, 2)
        self.assertEqual(x.potato.d[0]['a'], 1)
        self.assertEqual(x.potato.d[1]['b'], 2)
        self.assertEqual(x.potato['d'][0].a, 1)
        self.assertEqual(x.potato['d'][1].b, 2)
        self.assertEqual(x.potato['d'][0]['a'], 1)
        self.assertEqual(x.potato['d'][1]['b'], 2)
        self.assertEqual(x['potato'].a, 1)
        self.assertEqual(x['potato']['a'], 1)
        self.assertEqual(x['potato'].b, 2)
        self.assertEqual(x['potato']['b'], 2)
        self.assertEqual(x['potato'].c[0], 3)
        self.assertEqual(x['potato'].c[1], 4)
        self.assertEqual(x['potato'].c[2], 5)
        self.assertEqual(x['potato']['c'][0], 3)
        self.assertEqual(x['potato']['c'][1], 4)
        self.assertEqual(x['potato']['c'][2], 5)
        self.assertEqual(x['potato'].d[0].a, 1)
        self.assertEqual(x['potato'].d[1].b, 2)
        self.assertEqual(x['potato'].d[0]['a'], 1)
        self.assertEqual(x['potato'].d[1]['b'], 2)
        self.assertEqual(x['potato']['d'][0].a, 1)
        self.assertEqual(x['potato']['d'][1].b, 2)
        self.assertEqual(x['potato']['d'][0]['a'], 1)
        self.assertEqual(x['potato']['d'][1]['b'], 2)