def test__pop(self): init = self.__class__.test_parameters P = JSONParameterSet(init) self.assertEqual(P.pop('a'), 2) self.assertEqual(P.pop('c'), {"a": 1, "b": 2}) self.assertEqual(P.as_dict(), {'b': "hello", "d": [1, 2, 3, 4]}) self.assertEqual(P.pop('foo', 42), 42) self.assertEqual(P.pop('foo', None), None)
def test__init__should_accept_a_filename_or_string(self): init = self.__class__.test_parameters P1 = JSONParameterSet(init) with open("test_file", "w") as f: f.write(init) P2 = JSONParameterSet("test_file") self.assertEqual(P1.as_dict(), P2.as_dict()) os.remove("test_file")
def test_save(self): init = self.__class__.test_parameters P1 = JSONParameterSet(init) P1.save("test_file") P2 = JSONParameterSet("test_file") self.assertEqual(P1.as_dict(), P2.as_dict()) os.remove("test_file")
def test_diff(self): P1 = JSONParameterSet(self.__class__.test_parameters) P2 = JSONParameterSet(dedent(""" { "a" : 3, "b" : "hello", "c" : {"a": 1, "b": 22}, "d" : [1, 2, 77, 4] } """)) self.assertEqual(P1.diff(P2), ({'a': 2, 'c': {'b': 2}, 'd': [1, 2, 3, 4]}, {'a': 3, 'c': {'b': 22}, 'd': [1, 2, 77, 4]})) P3 = YAMLParameterSet(TestYAMLParameterSet.test_parameters) self.assertEqual(P2.diff(P3), P2.diff(P1))
def test_diff(self): P1 = JSONParameterSet(self.__class__.test_parameters) P2 = JSONParameterSet( dedent(""" { "a" : 3, "b" : "hello", "c" : {"a": 1, "b": 22}, "d" : [1, 2, 77, 4] } """)) self.assertEqual(P1.diff(P2), ({ 'a': 2, 'c': { 'b': 2 }, 'd': [1, 2, 3, 4] }, { 'a': 3, 'c': { 'b': 22 }, 'd': [1, 2, 77, 4] })) try: P3 = YAMLParameterSet(TestYAMLParameterSet.test_parameters) except ImportError: pass else: self.assertEqual(P2.diff(P3), P2.diff(P1))
def test_diff(self): P1 = SimpleParameterSet("x = 2\ny = 3") P2 = SimpleParameterSet("x = 3\ny = 3\nz = 4") self.assertEqual(P1.diff(P2), ({'x': 2}, {'x': 3, 'z': 4})) P3 = JSONParameterSet( dedent(""" { "x" : 2, "y" : 4, "z": 4 }""")) self.assertEqual(P1.diff(P3), ({'y': 3}, {'y': 4, 'z': 4}))
def setUp(self): ## setup parsets with legal params self.PSETS = [SimpleParameterSet(""), JSONParameterSet("")] try: self.PSETS.append(YAMLParameterSet("")) except ImportError: pass self.PConfigParser = ConfigParserParameterSet("") for k in ('a', 'b', 'c', 'd', 'l', 'save'): up_dict = {k: 1} self.PConfigParser.update(up_dict) for P in self.PSETS: P.update(up_dict)
def test__update(self): P = JSONParameterSet(self.__class__.test_parameters) P.update([("x", 1), ("y", 2)], z=3) self.assertEqual(P["x"], 1) self.assertEqual(P["z"], 3)
def test__pretty__output_should_be_useable_to_create_an_identical_parameterset( self): init = self.__class__.test_parameters P1 = JSONParameterSet(init) P2 = JSONParameterSet(P1.pretty()) self.assertEqual(P1.as_dict(), P2.as_dict())
def test__pretty__output_should_be_useable_to_create_an_identical_parameterset(self): init = self.__class__.test_parameters P1 = JSONParameterSet(init) P2 = JSONParameterSet(P1.pretty()) self.assertEqual(P1.as_dict(), P2.as_dict())
def test__str(self): init = self.__class__.test_parameters P = JSONParameterSet(init) as_string = str(P) self.assertIsInstance(as_string, str)
def test__init__should_accept_an_empty_initializer(self): P = JSONParameterSet("") self.assertEqual(P.as_dict(), {})