diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..d709899 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,20 @@ +version: 2.1 + +orbs: + python: circleci/python@1.2.0 + +jobs: + build-and-test: + executor: python/default + steps: + - checkout + - python/load-cache + - python/install-deps + - python/save-cache +workflows: + main: + jobs: + - python/test: + args: '--dev' + pkg-manager: pipenv + test-tool: pytest diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ + diff --git a/fib_test.py b/fib_test.py new file mode 100644 index 0000000..93e783f --- /dev/null +++ b/fib_test.py @@ -0,0 +1,6 @@ +import unittest + +class TestCase(unittest.TestCase): + + def test_true(self): + assert True diff --git a/fibonacci.py b/fibonacci.py new file mode 100644 index 0000000..f8c487d --- /dev/null +++ b/fibonacci.py @@ -0,0 +1,48 @@ +""" +Fibonacci numbers function. +""" + +# Copyright 2014 The University of Edinburgh. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. + +import sys + +def fibonacci(n): + """ + Calculate the Fibonacci number of the given integer. + @param n If n <= 0 then 0 is assumed. + @return fibonacci number. + """ + if n <= 0: + return 0 + elif n == 1: + return 1 + else: + return fibonacci(n - 1) + fibonacci(n - 2) + +def print_usage(): + """ Print usage information. """ + print("Usage: python fibonacci.py N") + print(" where N >= 0") + +if __name__ == '__main__': + if (len(sys.argv) < 2): + print_usage() + exit(1) + n = int(sys.argv[1]) + if (n < 0): + print_usage() + exit(2) + fib = fibonacci(n) + print("fibonacci(%d) = %d" % (n, fib)) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..490d735 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ + +pytest