def test_edit_and_mark(self): data = DataArray(preset_data=[[1, 2], [3, 4]]) self.assertEqual(data[0].tolist(), [1, 2]) self.assertEqual(data[0, 1], 2) data.modified_range = None self.assertIsNone(data.last_saved_index) self.assertEqual(len(data), 2) data[0] = np.array([5, 6]) data[1, 0] = 7 self.assertEqual(data.ndarray.tolist(), [[5, 6], [7, 4]]) self.assertEqual(data.modified_range, (0, 2)) # as if we saved the first two points... the third should still # show as modified data.mark_saved(1) self.assertEqual(data.last_saved_index, 1) self.assertEqual(data.modified_range, (2, 2)) # now we save the third point... no modifications left. data.mark_saved(2) self.assertEqual(data.last_saved_index, 2) self.assertEqual(data.modified_range, None) data.clear_save() self.assertEqual(data.last_saved_index, None) self.assertEqual(data.modified_range, (0, 2))
def test_fraction_complete(self): data = DataArray(shape=(5, 10)) self.assertIsNone(data.ndarray) self.assertEqual(data.fraction_complete(), 0.0) data.init_data() self.assertEqual(data.fraction_complete(), 0.0) # index = 1 * 10 + 7 - add 1 (for index 0) and you get 18 # each index is 2% of the total, so this is 36% data[1, 7] = 1 self.assertEqual(data.fraction_complete(), 18 / 50) # add a last_saved_index but modified_range is still bigger data.mark_saved(13) self.assertEqual(data.fraction_complete(), 18 / 50) # now last_saved_index wins data.mark_saved(19) self.assertEqual(data.fraction_complete(), 20 / 50) # now pretend we get more info from syncing data.synced_index = 22 self.assertEqual(data.fraction_complete(), 23 / 50)