Example #1
0
 def test_arity(self):
   # e.g., def square(n):
   #         return n * n
   # arity(square) = 1
   fn = FunctionRef("", 1, "square")
   squarearg = ArgRef(fn, "n")
   self.assertEqual(fn.arity(), 1)
Example #2
0
 def test_init(self):
   fn1 = FunctionRef("foo", 1, "fooFn")
   fn2 = FunctionRef("foo", 1, "fooFn")
   self.assertEqual(fn1, fn2)
   self.assertIs(fn1, fn2)
   with self.assertRaises(Exception) as e:
     FunctionRef("foo", 1, "foofn")
Example #3
0
 def test_get_return(self):
   fn = FunctionRef("baz", 1, "bazFn")
   argref, returntype = fn.get_return()
   self.assertIsNone(argref)
   self.assertEqual(returntype, types.NoneType)
   retval = ArgRef(fn, "")
   retval.add_sample(1)
   argref, returntype = fn.get_return()
   self.assertIs(argref, ArgRef(fn, ""))
   self.assertIs(returntype, int)
Example #4
0
 def test_signaturenature(self):
   import types
   fn = FunctionRef("", -1, "map")
   arg1 = ArgRef(fn, "fn")
   arg2 = ArgRef(fn, "coll")
   retval = ArgRef(fn, "")
   arg1.add_sample(lambda x: x*x)
   arg2.add_sample([1,2,3])
   retval.add_sample([1,4,9])
   fn.set_signaturenature()
   self.assertEqual(fn.signature[""], (-1, ParameterizedList([int])))
   self.assertEqual(fn.signature["fn"], (0, types.FunctionType))
   self.assertEqual(fn.signature["coll"], (1, ParameterizedList([int])))
Example #5
0
 def test_get_num_samples(self):
   fn = FunctionRef("bar", 1, "barFn")
   arg1 = ArgRef(fn, "arg1")
   retval = ArgRef(fn, "")
   # Pretend we observed an input, but an exception was thrown.
   arg1.add_sample(True)
   self.assertEqual(fn.get_num_samples(), 1)
   # Observing an output shouldn't change anything
   retval.add_sample("asdf")
   self.assertEqual(fn.get_num_samples(), 1)
   # Observing a successful run should increment by one.
   arg1.add_sample(False)
   retval.add_sample("foo")
   self.assertEqual(fn.get_num_samples(), 2)
Example #6
0
 def setUp(self):
   self.fn = FunctionRef("foo", 1, "fooFn")