22import logging
33import os
44
5+ fib_results = {}
6+
7+ def fib (n ):
8+ if n < 2 :
9+ return n
10+ elif str (n ) in fib_results :
11+ return fib_results [str (n )]
12+ else :
13+ fib_results [str (n )] = fib (n - 1 ) + fib (n - 2 )
14+ return fib_results [str (n )]
15+
516
617def test_fibonacci (dut , request ):
718 LOGGER = logging .getLogger (__name__ )
819
9- # Fibonacci results starting from fib(35) to fib(45)
10- fib_results = [
11- 9227465 ,
12- 14930352 ,
13- 24157817 ,
14- 39088169 ,
15- 63245986 ,
16- 102334155 ,
17- 165580141 ,
18- 267914296 ,
19- 433494437 ,
20- 701408733 ,
21- ]
22-
2320 # Match "Runs: %d"
2421 res = dut .expect (r"Runs: (\d+)" , timeout = 60 )
2522 runs = int (res .group (0 ).decode ("utf-8" ).split (" " )[1 ])
@@ -30,7 +27,11 @@ def test_fibonacci(dut, request):
3027 res = dut .expect (r"N: (\d+)" , timeout = 300 )
3128 fib_n = int (res .group (0 ).decode ("utf-8" ).split (" " )[1 ])
3229 LOGGER .info ("Calculating Fibonacci({})" .format (fib_n ))
33- assert fib_n > 30 and fib_n < 50 , "Invalid Fibonacci number"
30+ assert fib_n > 0 , "Invalid Fibonacci number"
31+
32+ # Calculate Fibonacci results
33+ expected_result = fib (fib_n )
34+ LOGGER .info ("Expected Fibonacci result: {}" .format (expected_result ))
3435
3536 list_time = []
3637
@@ -48,7 +49,7 @@ def test_fibonacci(dut, request):
4849 assert fib_result > 0 , "Invalid Fibonacci result"
4950
5051 # Check if the result is correct
51- assert fib_result == fib_results [ fib_n - 35 ]
52+ assert fib_result == expected_result
5253
5354 # Match "Time: %lu.%03lu s"
5455 res = dut .expect (r"Time: (\d+)\.(\d+) s" , timeout = 300 )
0 commit comments