def testKeys(self): params = InputParameters() params.add('foo', 1949) params.add('bar', 1980) gold = ['foo', 'bar'] for i, v in enumerate(params.keys()): self.assertEqual(v, gold[i])
def testAdd(self): params = InputParameters() params.add('foo') self.assertEqual(list(params.keys()), ['foo']) self.assertFalse(params.isValid('foo')) self.assertIn('foo', params) self.assertIsNone(params.get('foo')) self.assertTrue(params.hasParameter('foo')) with self.assertLogs(level='WARNING') as log: params.add('foo') self.assertEqual(len(log.output), 1) self.assertIn( "Cannot add parameter, the parameter 'foo' already exists.", log.output[0])
def testSet(self): params = InputParameters() params.add('foo') params.set('foo', 42) self.assertEqual(list(params.keys()), ['foo']) self.assertTrue(params.isValid('foo')) self.assertIn('foo', params) self.assertIsNotNone(params.get('foo')) self.assertEqual(params.get('foo'), 42) self.assertTrue(params.hasParameter('foo')) with self.assertLogs(level='WARNING') as log: params.set('bar', 1980) self.assertEqual(len(log.output), 1) self.assertIn("The parameter 'bar' does not exist", log.output[0]) # Sub-options params2 = InputParameters() params2.add('bar') params.add('sub', params2) params.set('sub', {'bar': 2013}) self.assertEqual(params2.get('bar'), 2013) self.assertEqual(params.get('sub').get('bar'), 2013) params2.set('bar', 1954) self.assertEqual(params2.get('bar'), 1954) self.assertEqual(params.get('sub').get('bar'), 1954) params3 = InputParameters() params3.add('bar', default=2011) params.set('sub', params3) self.assertEqual(params2.get('bar'), 1954) self.assertEqual(params3.get('bar'), 2011) self.assertEqual(params.get('sub').get('bar'), 2011) params.set('sub', 'bar', 1944) self.assertEqual(params2.get('bar'), 1954) self.assertEqual(params3.get('bar'), 1944) self.assertEqual(params.get('sub').get('bar'), 1944) with self.assertLogs(level='WARNING') as log: params.set('foo', 1980, 2011) params.set('foo') self.assertEqual(len(log.output), 2) self.assertIn("Extra argument(s) found: 1980", log.output[0]) self.assertIn("One or more names must be supplied.", log.output[1])
def testSet(self): params = InputParameters() params.add('foo') params.set('foo', 42) self.assertEqual(list(params.keys()), ['foo']) self.assertTrue(params.isValid('foo')) self.assertIn('foo', params) self.assertIsNotNone(params.get('foo')) self.assertEqual(params.get('foo'), 42) self.assertTrue(params.hasParameter('foo')) with self.assertLogs(level='WARNING') as log: params.set('bar', 1980) self.assertEqual(len(log.output), 1) self.assertIn("Cannot set value, the parameter 'bar' does not exist", log.output[0]) # Sub-options params2 = InputParameters() params2.add('bar') params.add('sub', params2) params.set('sub', {'bar': 2013}) self.assertEqual(params2.get('bar'), 2013) self.assertEqual(params.get('sub').get('bar'), 2013) params2.set('bar', 1954) self.assertEqual(params2.get('bar'), 1954) self.assertEqual(params.get('sub').get('bar'), 1954) params3 = InputParameters() params3.add('bar', default=2011) params.set('sub', params3) self.assertEqual(params2.get('bar'), 1954) self.assertEqual(params3.get('bar'), 2011) self.assertEqual(params.get('sub').get('bar'), 2011) params.set('sub', bar=1944) self.assertEqual(params2.get('bar'), 1954) self.assertEqual(params3.get('bar'), 1944) self.assertEqual(params.get('sub').get('bar'), 1944) # More errors with self.assertLogs(level='WARNING') as log: params.set('foo', 1980, this='that') self.assertEqual(len(log.output), 1) self.assertIn( "Key, value pairs are not allowed when setting the 'foo' parameter.", log.output[0]) with self.assertLogs(level='WARNING') as log: params.set('foo', 1980, 2011) params.set('foo') self.assertEqual(len(log.output), 2) self.assertIn( "A single second argument is required for the 'foo' parameter.", log.output[0]) self.assertIn( "A single second argument is required for the 'foo' parameter.", log.output[1]) with self.assertLogs(level='WARNING') as log: params.set('sub', 1980, bar=1948) self.assertEqual(len(log.output), 1) self.assertIn( "Key, value pairs are not allowed when setting the 'sub' parameter with a supplied dict argument.", log.output[0]) with self.assertLogs(level='WARNING') as log: params.set('sub', 1980) self.assertEqual(len(log.output), 1) self.assertIn( "The second argument for the 'sub' parameter must be a dict() or InputParametrs object", log.output[0])