2
2
import logging
3
3
import os
4
4
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
+
5
16
6
17
def test_fibonacci (dut , request ):
7
18
LOGGER = logging .getLogger (__name__ )
8
19
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
-
23
20
# Match "Runs: %d"
24
21
res = dut .expect (r"Runs: (\d+)" , timeout = 60 )
25
22
runs = int (res .group (0 ).decode ("utf-8" ).split (" " )[1 ])
@@ -30,7 +27,11 @@ def test_fibonacci(dut, request):
30
27
res = dut .expect (r"N: (\d+)" , timeout = 300 )
31
28
fib_n = int (res .group (0 ).decode ("utf-8" ).split (" " )[1 ])
32
29
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 ))
34
35
35
36
list_time = []
36
37
@@ -48,7 +49,7 @@ def test_fibonacci(dut, request):
48
49
assert fib_result > 0 , "Invalid Fibonacci result"
49
50
50
51
# Check if the result is correct
51
- assert fib_result == fib_results [ fib_n - 35 ]
52
+ assert fib_result == expected_result
52
53
53
54
# Match "Time: %lu.%03lu s"
54
55
res = dut .expect (r"Time: (\d+)\.(\d+) s" , timeout = 300 )
0 commit comments