summaryrefslogtreecommitdiff
path: root/python/testData/testRunner/env/doc/test1.py
blob: 3fd0252bdd557e069b1c1c64e47252c5678be71c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def factorial(n):
    """Return the factorial of n, an exact integer >= 0.

    If the result is small enough to fit in an int, return an int.
    Else return a long.

    >>> [factorial(n) for n in range(6)]
    [1, 1, 2, 6, 24, 120]
    """

    import math
    if not n >= 0:
        raise ValueError("n must be >= 0")
    if math.floor(n) != n:
        raise ValueError("n must be exact integer")
    if n+1 == n:  # catch a value like 1e300
        raise OverflowError("n too large")
    result = 1
    factor = 2
    while factor <= n:
        result *= factor
        factor += 1
    return result

class FirstGoodTest:
  """
  >>> [factorial(n) for n in range(6)]
  [1, 1, 2, 6, 24, 120]
  """
  def test_passes(self):
    pass

class SecondGoodTest:
  def test_passes(self):
    """
    >>> [factorial(n) for n in range(6)]
    [1, 1, 2, 6, 24, 120]
    """
    pass