def test_really_slow(self): num_partials = 300 time_target = 24 * 3600 partials = [] current_time = uint64(time.time()) for i in range(num_partials): partials.append((uint64(current_time - (i + 100) * 200), 20)) # Decreases by 5x assert get_new_difficulty(partials, num_partials, time_target, 20, current_time, 1) == 4 # Respects min difficulty assert get_new_difficulty(partials, num_partials, time_target, 20, current_time, 10) == 10
def test_recently_updated(self): num_partials = 300 time_target = 24 * 3600 partials = [] current_time = uint64(time.time()) for i in range(num_partials): partials.append((current_time - i * 200, 20)) assert get_new_difficulty(partials, num_partials, time_target, 50, current_time, 1) == 50 partials[0] = (current_time, 50) assert get_new_difficulty(partials, num_partials, time_target, 50, current_time, 1) == 50
def test_decreases_diff(self): num_partials = 300 time_target = 24 * 3600 partials = [] current_time = uint64(time.time()) for i in range(num_partials): partials.append((uint64(current_time - (i) * 380), 20)) assert get_new_difficulty(partials, num_partials, time_target, 20, current_time, 1) == 15
def test_kind_of_slow(self): num_partials = 300 time_target = 24 * 3600 partials = [] current_time = uint64(time.time()) for i in range(num_partials): partials.append((uint64(current_time - (i + 20) * 200), 20)) # Decreases by 1.5x assert get_new_difficulty(partials, num_partials, time_target, 20, current_time, 1) == (20 // 1.5)
def test_not_enough_partials_yet(self): num_partials = 300 time_target = 24 * 3600 partials = [] current_time = uint64(time.time()) for i in range(num_partials): partials.append((uint64(current_time - (i) * 200), 20)) partials[-1] = (partials[-1][0], 15) # Doesn't change diff assert get_new_difficulty(partials, num_partials, time_target, 20, current_time, 1) == 20
def test_no_things_in_db(self): time_target = 24 * 3600 current_time = uint64(time.time()) assert get_new_difficulty([], 300, time_target, 10, current_time, 1) == 10