1# test utime resolutions 2 3try: 4 import utime 5except ImportError: 6 print("SKIP") 7 raise SystemExit 8 9 10def gmtime_time(): 11 return utime.gmtime(utime.time()) 12 13 14def localtime_time(): 15 return utime.localtime(utime.time()) 16 17 18def test(): 19 TEST_TIME = 2500 20 EXPECTED_MAP = ( 21 # (function name, min. number of results in 2.5 sec) 22 ("time", 3), 23 ("gmtime", 3), 24 ("localtime", 3), 25 ("gmtime_time", 3), 26 ("localtime_time", 3), 27 ("ticks_ms", 15), 28 ("ticks_us", 15), 29 ("ticks_ns", 15), 30 ("ticks_cpu", 15), 31 ) 32 33 # call time functions 34 results_map = {} 35 end_time = utime.ticks_ms() + TEST_TIME 36 while utime.ticks_diff(end_time, utime.ticks_ms()) > 0: 37 utime.sleep_ms(100) 38 for func_name, _ in EXPECTED_MAP: 39 try: 40 time_func = getattr(utime, func_name, None) or globals()[func_name] 41 now = time_func() # may raise AttributeError 42 except (KeyError, AttributeError): 43 continue 44 try: 45 results_map[func_name].add(now) 46 except KeyError: 47 results_map[func_name] = {now} 48 49 # check results 50 for func_name, min_len in EXPECTED_MAP: 51 print("Testing %s" % func_name) 52 results = results_map.get(func_name) 53 if results is None: 54 pass 55 elif func_name == "ticks_cpu" and results == {0}: 56 # ticks_cpu() returns 0 on some ports (e.g. unix) 57 pass 58 elif len(results) < min_len: 59 print( 60 "%s() returns %s result%s in %s ms, expecting >= %s" 61 % (func_name, len(results), "s"[: len(results) != 1], TEST_TIME, min_len) 62 ) 63 64 65test() 66