public void TrackValue_InitDispatcher_InitiateDispatcher() { var dispatcher = new TrackDispatcher(new OffsetTokenDispatcher()); var value = new TrackValue <int>(dispatcher); Assert.AreEqual(value.TrackDispatcher, dispatcher); }
public void TrackDispatcher_InitOffsetTokenDispatcher_InitiateOffsetTokenDispatcher() { var offsetTokenDispatcher = new OffsetTokenDispatcher(); var dispatcher = new TrackDispatcher(offsetTokenDispatcher); Assert.AreEqual(dispatcher.OffsetTokenDispatcher, offsetTokenDispatcher); }
public void TrackDictionaryTest_InitDispatcher_InitiateDispatcher() { var dispatcher = new TrackDispatcher(new OffsetTokenDispatcher()); var dictionary = new TrackDictionary <int, int>(dispatcher); Assert.AreEqual(dictionary.TrackDispatcher, dispatcher); }
public void TrackValue_InitValueAndDispatcher_InitiateDispatcher(int value) { var dispatcher = new TrackDispatcher(new OffsetTokenDispatcher()); var trackTalue = new TrackValue <int>(value, dispatcher); Assert.AreEqual(trackTalue.TrackDispatcher, dispatcher); }
public void Disable_Disable_TokenNotNull() { var dispatcher = new TrackDispatcher(new OffsetTokenDispatcher()); using (var disableToken = dispatcher.Disable()) { Assert.IsNotNull(disableToken); } }
public void Disable_Disable_IsEnableFalse() { var dispatcher = new TrackDispatcher(new OffsetTokenDispatcher()); using (dispatcher.Disable()) { Assert.IsFalse(dispatcher.IsEnable); } }
public void Add(T item) { if (TrackDispatcher.IsEnable) { TrackDispatcher.AddAndExecute(new CollectionUniqueExecutor <T>(this, new CollectionUniqueCommand <T>(CollectionUniqueChanged.Add, item))); } else { AddForce(item); } }
public bool Remove(T item) { if (TrackDispatcher.IsEnable) { TrackDispatcher.AddAndExecute(new CollectionUniqueExecutor <T>(this, new CollectionUniqueCommand <T>(CollectionUniqueChanged.Remove, item))); return(true); } else { return(RemoveForce(item)); } }
public void Offset_RollBackStart_BaseValue() { const int BASE_VALUE = 0; const int CHANGE_VALUE = 1; var offsetTokenDispatcher = new OffsetTokenDispatcher(); var offsetToken = offsetTokenDispatcher.CurrentToken; var dispatcher = new TrackDispatcher(offsetTokenDispatcher); var trackValue = new TrackValue <int>(BASE_VALUE, dispatcher); trackValue.Value = CHANGE_VALUE; dispatcher.Offset(offsetToken); Assert.AreEqual(trackValue.Value, BASE_VALUE); }
public TrackList(IEnumerable <T> items, TrackDispatcher trackDispatcher) { this.items.AddRange(items); }
public TrackCollection(TrackDispatcher trackDispatcher) : base(trackDispatcher) { }
public ComponentBase(TrackDispatcher trackDispatcher) { TrackDispatcher = trackDispatcher ?? throw new ArgumentNullException(); }
public TrackList(TrackDispatcher trackDispatcher) : base(trackDispatcher) { }
/// <summary> /// Создать отслеживаемый список значений /// </summary> /// <typeparam name="T">Тип элемента списка</typeparam> /// <param name="trackDispatcher">Текущий диспетчер</param> /// <returns>Отслеживаемый список</returns> public static ITrackList <T> CreateList <T>(this TrackDispatcher trackDispatcher) { return(new TrackList <T>(trackDispatcher)); }
/// <summary> /// Создать отслеживаемый список значений /// </summary> /// <typeparam name="T">Тип элемента списка</typeparam> /// <param name="trackDispatcher">Текущий диспетчер</param> /// <param name="items">Значения для инициализации</param> /// <returns>Отслеживаемый список</returns> public static ITrackList <T> CreateList <T>(this TrackDispatcher trackDispatcher, IEnumerable <T> items) { return(new TrackList <T>(items, trackDispatcher)); }
/// <summary> /// Создать отслеживаемый словарь /// </summary> /// <typeparam name="TKey">Тип ключа</typeparam> /// <typeparam name="TValue">Тип значения</typeparam> /// <param name="trackDispatcher">Текущий диспетчер</param> /// <returns>Отслеживаемый словать</returns> public static ITrackDictionary <TKey, TValue> CreateDictionary <TKey, TValue>(this TrackDispatcher trackDispatcher) { return(new TrackDictionary <TKey, TValue>(trackDispatcher)); }
/// <summary> /// Создать отслеживаемое значение на основе указаного диспетчера /// </summary> /// <typeparam name="T">Тип создаваемого значения</typeparam> /// <param name="trackDispatcher">Текущий диспетчер</param> /// <param name="initValue"></param> /// <returns>Отслеживаемое значение</returns> public static ITrackValue <T> CreateValue <T>(this TrackDispatcher trackDispatcher, T initValue) { return(new TrackValue <T>(initValue, trackDispatcher)); }
/// <summary> /// Создать множество уникальных значений /// </summary> /// <typeparam name="T">Тип значения</typeparam> /// <param name="trackDispatcher">Текущий диспетчер</param> /// <returns>Множество уникальных значений</returns> public static ITrackSet <T> CreateSet <T>(this TrackDispatcher trackDispatcher) { return(new TrackCollectionUnique <T>(trackDispatcher)); }
public Location(TrackDispatcher trackDispatcher) : base(trackDispatcher) { }
public TrackDictionary(TrackDispatcher trackDispatcher) : base(trackDispatcher) { }