def test_validate_derived_extra_output(self): uo = usage.UsageOutputNames(x='goodbye', y='hello') with self.assertRaisesRegex(ValueError, 'SDK.*extra output.*peanut'): uo.validate_computed({'x': 'val', 'y': 'val', 'peanut': 'val'})
def test_validate_derived_missing_output(self): uo = usage.UsageOutputNames(x='goodbye', y='hello') with self.assertRaisesRegex(ValueError, 'SDK.*missing output.*y'): uo.validate_computed({'x': 'val'})
def test_validate_extra_output(self): uo = usage.UsageOutputNames(y='goodbye', a='hello', peanut='noeyes') with self.assertRaisesRegex(ValueError, 'Extra output.*peanut'): uo.validate(self.signature)
def test_validate_missing_output(self): uo = usage.UsageOutputNames(y='hello') with self.assertRaisesRegex(ValueError, 'Missing output.*a'): uo.validate(self.signature)
def test_invalid_init(self): with self.assertRaisesRegex(TypeError, 'key.*foo.*string, not.*bool'): usage.UsageOutputNames(foo=True)
def test_successful_init(self): obs = usage.UsageOutputNames(foo='bar') self.assertEqual(['foo'], list(obs.values.keys())) self.assertEqual(['bar'], list(obs.values.values()))
def test_validate_invalid_inputs(self): ua = usage.UsageAction(plugin_id='dummy_plugin', action_id='concatenate_ints') with self.assertRaisesRegex(TypeError, 'instance of UsageInputs'): ua.validate({}, usage.UsageOutputNames())