/// <summary> /// Удалить параметр в загруженной БД /// </summary> /// <param name="Identifier">Идентификатор параметра</param> public void RemoveParameter(Guid Identifier) { bool blocked = false; try { if (mutex.WaitOne(1000)) { blocked = true; if (state == DataBaseState.Loaded || state == DataBaseState.Saving) { dataBase.Remove(Identifier); } else { throw new InvalidOperationException("База данных не загружена."); } } else { throw new TimeoutException(); } } catch (Exception ex) { throw new Exception(ex.Message, ex); } finally { if (blocked) { mutex.ReleaseMutex(); } } }
public void Remove(int[] values) { DataBase.DataBase db = new DataBase.DataBase(); FieldInfo currentIndexInfo = typeof(DataBase.DataBase) .GetFields(BindingFlags.NonPublic | BindingFlags.Instance) .FirstOrDefault(p => p.FieldType == (typeof(int))); FieldInfo fieldValue = typeof(DataBase.DataBase) .GetFields(BindingFlags.NonPublic | BindingFlags.Instance) .First(p => p.FieldType == typeof(int[])); fieldValue.SetValue(db, values); currentIndexInfo.SetValue(db, values.Length); db.Remove(); int currentIndex = (int)currentIndexInfo.GetValue(db); Assert.That(currentIndex, Is.EqualTo(values.Length - 1)); }
public void TestInvalidRemove() { DataBase.DataBase db = new DataBase.DataBase(); Assert.That(() => db.Remove(), Throws.InvalidOperationException); }