def test_check_history_breaks_at_first_error(self): obj1 = create_plot_object(dt.DiceTable()) obj2 = create_plot_object(dt.DiceTable()) obj1['tuple_list'] = [(2.0, 1)] del obj2['pts'] hist = np.array([obj1, obj2]) self.assertEqual(fh.check_history(hist), 'error: corrupted "tuple_list"')
def test_check_saved_tables_within_array_returns_first_error(self): obj1 = create_saved_dice_table(dt.DiceTable()) obj2 = create_saved_dice_table(dt.DiceTable()) obj1._tuple_list = [(2.0, 1)] obj2._title = 2 save_data_array = np.array([obj1, obj2]) self.assertEqual(fh.check_saved_tables_within_array(save_data_array), 'error: invalid tuple list')
def test_SavedDiceTable_equality_test_false_by_tuple_list(self): table_1 = dt.DiceTable() table_1.add_die(1, dt.WeightedDie({1: 5, 2: 1})) data_obj = create_saved_dice_table(table_1) table_2 = dt.DiceTable() table_2.add_die(1, dt.WeightedDie({1: 1, 2: 5})) other_data_obj = create_saved_dice_table(table_2) self.assertEqual(data_obj.title, other_data_obj.title) self.assertFalse(data_obj == other_data_obj)
def test_SavedDiceTable_equality_test_true(self): table = dt.DiceTable() table.add_die(2, dt.Die(2)) data_obj = create_saved_dice_table(table) not_really_equal_data_obj = fh.SavedDiceTable('2D2', [(2, 1), (3, 2), (4, 1)], [], []) self.assertTrue(data_obj == not_really_equal_data_obj)
def test_check_data_reports_multiple_errors(self): obj = create_plot_object(dt.DiceTable()) obj['tuple_list'] = [(10 * 1000, 2.0)] obj['dice'] = [('a', 2.)] self.assertEqual( fh.check_data(obj), 'error: corrupted "tuple_list" dicelist at (\'a\', 2.0)')
def test_SavedDiceTable_get_dice_table(self): table = dt.DiceTable() table.add_die(2, dt.Die(2)) data_obj = create_saved_dice_table(table) data_obj_table = data_obj.dice_table self.assertNotEqual(data_obj_table, table) self.assertEqual(data_obj_table.frequency_all(), table.frequency_all()) self.assertEqual(data_obj_table.get_list(), table.get_list())
def test_DiceTableManager_request_reload(self): table = dt.DiceTable() table.add_die(1, dt.Die(2)) table.add_die(1, dt.Die(4)) data_obj = fh.SavedDiceTable('1D2 \\ 1D4', table.frequency_all(), table.get_list(), []) self.DTM.request_reload(data_obj) self.assertEqual(self.DTM.title, '1D2\n1D4') self.assertEqual(self.DTM.full_text, '2: 1\n3: 2\n4: 2\n5: 2\n6: 1\n')
def test_check_data_incorrect_type_at_key(self): table = dt.DiceTable() table.add_die(3, dt.Die(6)) obj = create_plot_object(table) obj['pts'] = 'a' #for difference in python2 and 3 self.assertIn( fh.check_data(obj), ("error: pts not <type 'list'>", "error: pts not <class 'list'>"))
def test_check_data_all_die_types_pass(self): table = dt.DiceTable() table.add_die(1, dt.Die(4)) table.add_die(1, dt.ModDie(4, 2)) table.add_die(1, dt.WeightedDie({1: 2})) table.add_die(1, dt.ModWeightedDie({1: 2}, 3)) table.add_die(1, dt.StrongDie(dt.Die(3), 3)) obj = create_plot_object(table) self.assertEqual(fh.check_data(obj), 'ok')
def test_read_write_hist_np_work_ok_for_normal_case(self): table = dt.DiceTable() table.add_die(1, dt.Die(3)) obj1 = create_plot_object(table) table.add_die(2, dt.Die(5)) obj2 = create_plot_object(table) hist = np.array([obj1, obj2]) fh.write_history_np(hist) msg, new_hist = fh.read_history_np() self.assertEqual(msg, 'ok') self.assertArrayEqual(hist, new_hist)
def test_read_write_saved_tables_array_work_ok_for_normal_case(self): table = dt.DiceTable() table.add_die(1, dt.Die(3)) obj1 = create_saved_dice_table(table) table.add_die(2, dt.Die(5)) obj2 = create_saved_dice_table(table) save_data = np.array([obj1, obj2]) fh.write_saved_tables_array(save_data) msg, new_save_data = fh.read_saved_tables_array() self.assertEqual(msg, 'ok') self.assertArrayEqual(save_data, new_save_data)
def test_read_np_returns_error_and_empty_if_corrupted_file(self): table = dt.DiceTable() table.add_die(1, dt.Die(3)) obj1 = create_plot_object(table) table.add_die(2, dt.Die(5)) obj2 = create_plot_object(table) hist = np.array([obj1, obj2]) fh.write_history_np(hist) #for differences between python2 and 3 try: with open('numpy_history.npy', 'r') as f: to_write = f.read()[:-1] except UnicodeDecodeError: with open('numpy_history.npy', 'r', errors='ignore') as f: to_write = f.read()[:-1] with open('numpy_history.npy', 'w') as f: f.write(to_write) msg, hist = fh.read_history_np() self.assertEqual(msg, 'error: file corrupted') self.assertArrayEqual(hist, np.array([], dtype=object))
def test_read_saved_tables_array_returns_error_and_empty_if_corrupted_file( self): table = dt.DiceTable() table.add_die(1, dt.Die(3)) obj1 = create_saved_dice_table(table) table.add_die(2, dt.Die(5)) obj2 = create_saved_dice_table(table) save_data_array = np.array([obj1, obj2]) fh.write_saved_tables_array(save_data_array) # for differences between python2 and 3 try: with open('save_data.npy', 'r') as f: to_write = f.read()[:-1] except UnicodeDecodeError: with open('save_data.npy', 'r', errors='ignore') as f: to_write = f.read()[:-1] with open('save_data.npy', 'w') as f: f.write(to_write) msg, new_data = fh.read_saved_tables_array() self.assertEqual(msg, 'error: file corrupted') self.assertArrayEqual(new_data, np.array([], dtype=object))
def test_check_data_incorrect_die_in_dice(self): obj = create_plot_object(dt.DiceTable()) obj['dice'] = [('a', 2.)] self.assertEqual(fh.check_data(obj), 'error: dicelist at (\'a\', 2.0)')
def test_check_data_incorrect_val_in_tuple_list(self): obj = create_plot_object(dt.DiceTable()) obj['tuple_list'] = [(10 * 1000, 2.0)] self.assertEqual(fh.check_data(obj), 'error: corrupted "tuple_list"')
def test_check_data_long_in_freq_in_tuple_list_ok(self): obj = create_plot_object(dt.DiceTable()) obj['tuple_list'] = [(10 * 1000, 2)] self.assertEqual(fh.check_data(obj), 'ok')
def test_check_data_incorrect_y_range(self): obj = create_plot_object(dt.DiceTable()) obj['y_range'] = (1.0, 2) self.assertEqual(fh.check_data(obj), 'error: incorrect y_range')
def test_SavedDiceTable_get_title(self): table = dt.DiceTable() table.add_die(2, dt.Die(1)) table.add_die(3, dt.Die(2)) data_obj = create_saved_dice_table(table) self.assertEqual('2D1 \\ 3D2', data_obj.title)
def test_SavedDiceTable_get_title_on_empty_obj(self): data_obj = create_saved_dice_table(dt.DiceTable()) self.assertEqual('', data_obj.title)
def request_reset(self): '''reset dice table''' self._table = dt.DiceTable()
def __init__(self): '''just a shell for table''' self._table = dt.DiceTable()
def test_check_history_ok_for_valid_hist(self): obj1 = create_plot_object(dt.DiceTable()) obj2 = create_plot_object(dt.DiceTable()) hist = np.array([obj1, obj2]) self.assertEqual(fh.check_history(hist), 'ok')
def test_SavedDiceTable_get_graph_pts(self): table = dt.DiceTable() table.add_die(1, dt.Die(2)) data_obj = create_saved_dice_table(table) self.assertEqual([(1, 50.0), (2, 50.0)], data_obj.graph_pts)
def dice_table(self): new_table = dt.DiceTable() new_table.add(1, self._tuple_list) for die, number in self._dice_list: new_table.update_list(number, die) return new_table
def test_SavedDiceTable_get_y_range(self): table = dt.DiceTable() table.add_die(2, dt.Die(2)) data_obj = create_saved_dice_table(table) self.assertEqual((25.0, 50.0), data_obj.y_range)
def test_dice_table_data_get_tuple_list(self): data_obj = create_saved_dice_table(dt.DiceTable()) self.assertEqual([(0, 1)], data_obj.tuple_list)
def request_reload(self, plot_obj): '''loads plot_obj as the main die table''' self._table = dt.DiceTable() for die, number in plot_obj['dice']: self._table.update_list(number, die) self._table.add(1, plot_obj['tuple_list'])
def test_check_data_empty_table(self): table = dt.DiceTable() obj = create_plot_object(table) self.assertEqual(fh.check_data(obj), 'ok')
def test_check_data_missing_key(self): table = dt.DiceTable() table.add_die(3, dt.Die(6)) obj = create_plot_object(table) del obj['pts'] self.assertEqual(fh.check_data(obj), 'error: missing key')
def test_SavedDiceTable_get_tuple_list_does_not_mutate_original_list(self): data_obj = create_saved_dice_table(dt.DiceTable()) new_tuple_list = data_obj.tuple_list new_tuple_list[0] = 5 self.assertEqual([(0, 1)], data_obj.tuple_list)