# Path: agents/tools/attr_dict.py
# class AttrDict(dict):
#   def __init__(self, *args, **kwargs):
#   def __getattr__(self, key):
#   def __setattr__(self, key, value):
#   def unlocked(self):
#   def copy(self):


import tensorflow as tf
from agents.tools import attr_dict


class AttrDictTest(tf.test.TestCase):

  def test_construct_from_dict(self):
    initial = dict(foo=13, bar=42)
    obj = attr_dict.AttrDict(initial)
    self.assertEqual(13, obj.foo)
    self.assertEqual(42, obj.bar)

  def test_construct_from_kwargs(self):
    obj = attr_dict.AttrDict(foo=13, bar=42)
    self.assertEqual(13, obj.foo)
    self.assertEqual(42, obj.bar)

  def test_has_attribute(self):
    obj = attr_dict.AttrDict(foo=13)
    self.assertTrue('foo' in obj)
    self.assertFalse('bar' in obj)

  def test_access_default(self):
    obj = attr_dict.AttrDict()
    self.assertEqual(None, obj.foo)

  def test_access_magic(self):
    obj = attr_dict.AttrDict()
    with self.assertRaises(AttributeError):
      obj.__getstate__  # pylint: disable=pointless-statement

  def test_immutable_create(self):

# Path: agents/tools/attr_dict.py
# class AttrDict(dict):
#   def __init__(self, *args, **kwargs):
#   def __getattr__(self, key):
#   def __setattr__(self, key, value):
#   def unlocked(self):
#   def copy(self):


# Path: agents/tools/attr_dict_test.py
import tensorflow as tf
from agents.tools import attr_dict



class AttrDictTest(tf.test.TestCase):

  def test_construct_from_dict(self):
    initial = dict(foo=13, bar=42)
    obj = attr_dict.AttrDict(initial)
    self.assertEqual(13, obj.foo)
    self.assertEqual(42, obj.bar)

  def test_construct_from_kwargs(self):
    obj = attr_dict.AttrDict(foo=13, bar=42)
    self.assertEqual(13, obj.foo)
    self.assertEqual(42, obj.bar)

  def test_has_attribute(self):
    obj = attr_dict.AttrDict(foo=13)
    self.assertTrue('foo' in obj)
    self.assertFalse('bar' in obj)

  def test_access_default(self):
    obj = attr_dict.AttrDict()
    self.assertEqual(None, obj.foo)

  def test_access_magic(self):
    obj = attr_dict.AttrDict()
    with self.assertRaises(AttributeError):
      obj.__getstate__  # pylint: disable=pointless-statement

  def test_immutable_create(self):

    obj = attr_dict.AttrDict()