def StandardTests(allowExtraArgs): CheckResults(Tf._ClassWithVarArgInit(allowExtraArgs), allowExtraArgs, (), {}) CheckResults(Tf._ClassWithVarArgInit(allowExtraArgs, 1), allowExtraArgs, (), {'a':1}) CheckResults(Tf._ClassWithVarArgInit(allowExtraArgs, 1, 2, 3), allowExtraArgs, (), {'a':1, 'b':2, 'c':3}) CheckResults(Tf._ClassWithVarArgInit(allowExtraArgs, 1, 2, c=3), allowExtraArgs, (), {'a':1, 'b':2, 'c':3})
def test_TfMakePyConstructorWithVarArgs(self): with self.assertRaises(TypeError): Tf._ClassWithVarArgInit() def CheckResults(c, allowExtraArgs, args, kwargs): self.assertEqual(c.allowExtraArgs, allowExtraArgs) self.assertEqual(c.args, args) self.assertEqual(c.kwargs, kwargs) def StandardTests(allowExtraArgs): CheckResults(Tf._ClassWithVarArgInit(allowExtraArgs), allowExtraArgs, (), {}) CheckResults(Tf._ClassWithVarArgInit(allowExtraArgs, 1), allowExtraArgs, (), {'a':1}) CheckResults(Tf._ClassWithVarArgInit(allowExtraArgs, 1, 2, 3), allowExtraArgs, (), {'a':1, 'b':2, 'c':3}) CheckResults(Tf._ClassWithVarArgInit(allowExtraArgs, 1, 2, c=3), allowExtraArgs, (), {'a':1, 'b':2, 'c':3}) # Tests with extra arguments disallowed. StandardTests(allowExtraArgs=False) # These cases should emit an error because there are unexpected # arguments with self.assertRaises(TypeError): Tf._ClassWithVarArgInit(False, 1, 2, 3, 4) with self.assertRaises(TypeError): Tf._ClassWithVarArgInit(False, d=4) # This should emit an error because we have multiple values for a single # arg. with self.assertRaises(TypeError): Tf._ClassWithVarArgInit(False, 1, 2, 3, b=4) # Tests with extra arguments allowed. StandardTests(allowExtraArgs=True) CheckResults(Tf._ClassWithVarArgInit(True, 1, 2, 3, 4, 5), True, (4,5), {'a':1, 'b':2, 'c':3}) CheckResults(Tf._ClassWithVarArgInit(True, 1, 2, c=3, d=6, f=8), True, (), {'a':1, 'b':2, 'c':3, 'd':6, 'f':8}) CheckResults(Tf._ClassWithVarArgInit(True, 1, 2, 3, 4, d=8), True, (4,), {'a':1, 'b':2, 'c':3, 'd':8})