def given_no_information_when_asked_to_guess_test(): # given number_guesser = NumberGuesser() # when guessed_number = number_guesser.guess() # then assert guessed_number is None, 'there should be no guess.'
def given_one_datapoint_when_asked_to_guess_test(): number_guesser = NumberGuesser() previously_chosen_number = 5 number_guesser.number_was(previously_chosen_number) guessed_number = number_guesser.guess() assert type(guessed_number) is int, 'the answer should be a number' assert guessed_number == previously_chosen_number, 'the answer should be previously chosen number.'
def given_a_one_off_observation_followed_by_a_set_of_observations_test(): # given number_guesser = NumberGuesser() previously_chosen_numbers = [1, 2] one_off_observation = 0 all_observations = previously_chosen_numbers + [one_off_observation] number_guesser.number_was(one_off_observation) number_guesser.numbers_were(previously_chosen_numbers) # when guessed_numbers = [number_guesser.guess() for i in range(0, 100)] # then for guessed_number in guessed_numbers: assert guessed_number in all_observations, \ 'every guess should be one of the previously chosen numbers' # testSet = set(guessed_numbers) assert len(set(guessed_numbers)) == len(all_observations), \ "It should eventually guess every number at least once."
def given_no_information_when_asked_to_guess_test(): # given number_guesser = NumberGuesser() # when result = number_guesser.guess() # then assert result is None, "Then it should provide no result."
def given_multiple_datapoints_when_asked_to_guess_many_times_test(): number_guesser = NumberGuesser() previously_chosen_numbers = [1,2,5] number_guesser.numbers_were(previously_chosen_numbers) guessed_numbers = [number_guesser.guess() for i in range(0,100)] for guessed_number in guessed_numbers: assert guessed_number in previously_chosen_numbers, 'every guess should be one of the previously chosen numbers' assert len(set(guessed_numbers)) > 1, "It shouldn't always guess the same number"
def given_two_datapoints_when_asked_to_guess_test(): # given number_guesser = NumberGuesser() previously_chosen_numbers = [1, 2, 5] number_guesser.numbers_were(previously_chosen_numbers) # when guessed_number = number_guesser.guess() # then assert guessed_number in previously_chosen_numbers, 'the guess should be one of the previously chosen numbers'
def given_one_datapoint_when_asked_to_guess_test(): #given number_guesser = NumberGuesser() previously_chosen_number = 5 number_guesser.number_was(previously_chosen_number) #when guessed_number = number_guesser.guess() #then assert type(guessed_number) is int, 'the answer should be a number' assert guessed_number == previously_chosen_number, 'the answer should be the previously chosen number.'
def given_multiple_datapoints_when_asked_to_guess_many_times_test(): #given number_guesser = NumberGuesser() previously_chosen_numbers = [1,2,5] number_guesser.numbers_were(previously_chosen_numbers) #when guessed_numbers = [number_guesser.guess() for i in range(0,100)] #then for guessed_number in guessed_numbers: assert guessed_number in previously_chosen_numbers, 'every guess should be one of the previously chosen numbers' assert len(set(guessed_numbers)) > 1, "It shouldn't always guess the same number."
def given_a_starting_set_of_observations_followed_by_a_one_off_observation_test(): number_guesser = NumberGuesser() previously_chosen_numbers = [1, 2, 5] number_guesser.numbers_were(previously_chosen_numbers) one_off_observation = 0 number_guesser.number_was(one_off_observation) guessed_numbers = [number_guesser.guess() for i in range(0, 100)] for guessed_number in guessed_numbers: assert guessed_number in previously_chosen_numbers + [one_off_observation], 'every guess should be one of the previously chosen numbers' assert len(set(guessed_numbers)) > 1, "It shouldn't always guess the same number"
def given_no_information_when_asked_to_guess_test(): # given - Generally, 'Given this scenario' # In this case, 'Given no prior information for NumberGuesser' number_guesser = NumberGuesser() # when - Generally, 'When this happens ...' # In this case, 'When NumberGuesser guesses a number...' result = number_guesser.guess() # then assert result is None, "Then it should provide no result."
def given_a_starting_set_of_observations_followed_by_a_one_off_observation_test(): #given number_guesser = NumberGuesser() previously_chosen_numbers = [1,2,5] number_guesser.numbers_were(previously_chosen_numbers) one_off_observation = 0 number_guesser.number_was(one_off_observation) #when guessed_numbers = [number_guesser.guess() for i in range(0,100)] #then for guessed_number in guessed_numbers: assert guessed_number in previously_chosen_numbers + [one_off_observation], 'every guess should be one of the previously chosen numbers' assert len(set(guessed_numbers)) > 1, "It shouldn't always guess the same number."
def given_a_one_off_observation_followed_by_a_set_of_observations_test(): #given number_guesser = NumberGuesser() print number_guesser._guessed_numbers previously_chosen_numbers = [1,2] one_off_observation = 0 number_guesser.number_was(one_off_observation) number_guesser.numbers_were(previously_chosen_numbers) all_observations = previously_chosen_numbers + [one_off_observation] #when guessed_numbers = [number_guesser.guess() for i in range(0,100)] #then for guessed_number in guessed_numbers: print guessed_number, all_observations assert guessed_number in all_observations, 'every guess should be one of the previously chosen numbers' assert len(set(guessed_numbers)) == len(all_observations), "It should eventually guess every number at least once."
def given_training_data_with_unique_values(): training_data = [3,1,4,5,7,6,2] number_guesser = NumberGuesser(training_data) result = number_guesser.guess() assert result in training_data, "Then, it should guess training values only."
def given_one_training_value_test(): training_data = [3] number_guesser = NumberGuesser(training_data) result = number_guesser.guess() assert result in training_data, "Then, it should guess training values only."