def get(self, fibonacci_length):
     """
     Handle get request
     """
     length = int(fibonacci_length)
     if length <= len(FibonacciHandler.cache_in_str):
         self.write(' '.join(FibonacciHandler.cache_in_str[:length]))
     else:
         result = fibonacci.fibonacci_non_recursive(length, base=FibonacciHandler.cache)
         self.write(' '.join(str(item) for item in result))
def test(host, port):
    """
    Functional test trigger method
    """
    print "Host: %s, Port: %d" % (host, port)
    http_client = httpclient.HTTPClient()

    # Normal cases
    print "Test normal cases..."
    # Case#1: Fibonacci request (length=0)
    test_case(host, port, 0, "")
    # Case#2: Fibonacci request (length=1)
    test_case(host, port, 1, "0")
    # Case#3: Fibonacci request (length=5)
    test_case(host, port, 5, "0 1 1 2 3")
    # Case#4: Fibonacci request (length=300)
    test_case(host, port, 300, " ".join(str(item) for item in fibonacci.fibonacci_non_recursive(300)))
    # Case#5: Fibonacci request (length=2000)
    test_case(host, port, 2000, " ".join(str(item) for item in fibonacci.fibonacci_non_recursive(2000)))
Example #3
0
 def get(self, fibonacci_length):
     """
     Handle get request
     """
     length = int(fibonacci_length)
     if length <= len(FibonacciHandler.cache_in_str):
         self.write(' '.join(FibonacciHandler.cache_in_str[:length]))
     else:
         result = fibonacci.fibonacci_non_recursive(
             length, base=FibonacciHandler.cache)
         self.write(' '.join(str(item) for item in result))
    def initialize_cache(cls, cache_size):
        """
        Initialize cache according to specified size
        """
        print "Initialize cache (size: %d)..." % cache_size
        # The int list cache is for requested length is larger than cache,
        # so the furthr calculation can base on it
        cls.cache = fibonacci.fibonacci_non_recursive(cache_size)

        # The string list cache for the requested length is not larger than cache,
        # so the response can be constructed directly from it.
        # Maintain this list can avoid the int to string convertion for every request handling
        cls.cache_in_str = [str(item) for item in cls.cache]
Example #5
0
    def initialize_cache(cls, cache_size):
        """
        Initialize cache according to specified size
        """
        print "Initialize cache (size: %d)..." % cache_size
        # The int list cache is for requested length is larger than cache,
        # so the furthr calculation can base on it
        cls.cache = fibonacci.fibonacci_non_recursive(cache_size)

        # The string list cache for the requested length is not larger than cache,
        # so the response can be constructed directly from it.
        # Maintain this list can avoid the int to string convertion for every request handling
        cls.cache_in_str = [str(item) for item in cls.cache]
Example #6
0
def test(host, port):
    """
    Functional test trigger method
    """
    print "Host: %s, Port: %d" % (host, port)
    http_client = httpclient.HTTPClient()

    # Normal cases
    print "Test normal cases..."
    # Case#1: Fibonacci request (length=0)
    test_case(host, port, 0, "")
    # Case#2: Fibonacci request (length=1)
    test_case(host, port, 1, "0")
    # Case#3: Fibonacci request (length=5)
    test_case(host, port, 5, "0 1 1 2 3")
    # Case#4: Fibonacci request (length=300)
    test_case(
        host, port, 300,
        " ".join(str(item) for item in fibonacci.fibonacci_non_recursive(300)))
    # Case#5: Fibonacci request (length=2000)
    test_case(
        host, port, 2000, " ".join(
            str(item) for item in fibonacci.fibonacci_non_recursive(2000)))
    def test_fibonacci_no_recursive(self):
        # Test valid length input and verify result
        self.assertEqual(fibonacci.fibonacci_non_recursive(0), [])
        self.assertEqual(fibonacci.fibonacci_non_recursive(1), [0])
        self.assertEqual(fibonacci.fibonacci_non_recursive(2), [0, 1])
        self.assertEqual(fibonacci.fibonacci_non_recursive(5), [0, 1, 1, 2, 3])
        self.assertEqual(fibonacci.fibonacci_non_recursive(10), [0, 1, 1, 2, 3, 5, 8, 13, 21, 34])

        # Test a long length input and verify the results between
        # fibonacci.ibonacci_non_recursive(length) and fibonacci.fibonacci(length)
        self.assertEqual(fibonacci.fibonacci_non_recursive(150), fibonacci.fibonacci(150))

        # Test the result when base sequence input is specified
        self.assertEqual(fibonacci.fibonacci_non_recursive(10), fibonacci.fibonacci_non_recursive(10, [0, 1, 1, 2, 3]))

        self.assertEqual(
            fibonacci.fibonacci_non_recursive(200),
            fibonacci.fibonacci_non_recursive(200, fibonacci.fibonacci_non_recursive(100)),
        )

        # Test negative length input and expect exception
        self.assertRaises(Exception, fibonacci.fibonacci_non_recursive, -2)
    def test_fibonacci_no_recursive(self):
        # Test valid length input and verify result
        self.assertEqual(fibonacci.fibonacci_non_recursive(0), [])
        self.assertEqual(fibonacci.fibonacci_non_recursive(1), [0])
        self.assertEqual(fibonacci.fibonacci_non_recursive(2), [0,1])
        self.assertEqual(fibonacci.fibonacci_non_recursive(5), [0,1,1,2,3])
        self.assertEqual(fibonacci.fibonacci_non_recursive(10), [0,1,1,2,3,5,8,13,21,34])

        # Test a long length input and verify the results between 
        # fibonacci.ibonacci_non_recursive(length) and fibonacci.fibonacci(length)
        self.assertEqual(fibonacci.fibonacci_non_recursive(150), 
            fibonacci.fibonacci(150))

        # Test the result when base sequence input is specified
        self.assertEqual(fibonacci.fibonacci_non_recursive(10), 
            fibonacci.fibonacci_non_recursive(10, [0,1,1,2,3]))

        self.assertEqual(fibonacci.fibonacci_non_recursive(200), 
            fibonacci.fibonacci_non_recursive(200, fibonacci.fibonacci_non_recursive(100)))

        # Test negative length input and expect exception
        self.assertRaises(Exception, fibonacci.fibonacci_non_recursive, -2)