private async Task CoreHandler() { var canEnter = await once.WaitAsync(BindSettings.DelayTime); if (canEnter && Interlocked.CompareExchange(ref notify, 0, 1) == 1) { try { var infos = ChangeWatcher.ChangeInfos; ChangeWatcher.Clear(); var repo = ChangeReport.FromChanges(GetConfiguration(), infos); var saver = new ChangeSaver(repo, BindSettings.Conditions); saver.EmitAndSave(); OnConfigChanged(infos); Saved?.Invoke(this, infos); } catch (Exception ex) { SaveException?.Invoke(this, ex); } finally { Interlocked.Exchange(ref notify, 1); } } }
public void EmitWithTransfer_MustReturnResult() { var reports = new ChangeReport[] { new ChangeReport(null, null, new IConfigurationChangeInfo[] { new ConfigurationChangeInfo() }) }; var condition = new IChangeTransferCondition[] { new NullTransfer() }; var saver = new ChangeSaver(reports, condition); var map = saver.Emit(); Assert.AreEqual(1, map.Count); Assert.IsTrue(map.ContainsKey(reports[0])); var res = map[reports[0]]; Assert.AreEqual(map.Keys.First(), res.Report); Assert.AreEqual(condition[0], res.Transfer); Assert.AreEqual(condition[0], res.SelectCondition); Assert.AreEqual(string.Empty, res.Transfed); }
public void EmitWithNoting_MutReturnEmptyDic() { var reports = new ChangeReport[0]; var condition = new IChangeTransferCondition[0]; var saver = new ChangeSaver(reports, condition); var map = saver.Emit(); Assert.AreEqual(0, map.Count); }
public void EmptyChangeInfo_MustSkip() { var reports = new ChangeReport[] { new ChangeReport(null, null, new IConfigurationChangeInfo[0]) }; var saver = new ChangeSaver(reports, new NullTransfer()); var res = saver.Emit(); Assert.AreEqual(0, res.Count); }
public void PropertyValueMustEqualInput() { var reports = new ChangeReport[0]; var condition = new IChangeTransferCondition[0]; var saver = new ChangeSaver(reports, condition); Assert.AreEqual(reports, saver.Reports); Assert.AreEqual(condition, saver.Transfers); saver = new ChangeSaver(reports, (IEnumerable <IChangeTransferCondition>)condition); Assert.AreEqual(reports, saver.Reports); Assert.AreEqual(condition, saver.Transfers); }
public void CallEmitAndSave_MustReturnReport() { var reports = new ChangeReport[] { new ChangeReport(null, null, new IConfigurationChangeInfo[] { new ConfigurationChangeInfo() }) }; var saver = new IChangeTransferCondition[] { new NullTransfer() }; var rep = new ChangeSaver(reports, saver); var res = ChangeSaverExtensions.EmitAndSave(rep); Assert.IsNotNull(res); }
private async Task CoreHandler() { if (notify && await once.WaitAsync(BindSettings.DelayTime)) { try { var infos = ChangeWatcher.ChangeInfos; ChangeWatcher.Clear(); var repo = ChangeReport.FromChanges(ChangeNotifyable, infos); var saver = new ChangeSaver(repo, BindSettings.Conditions); var res = saver.EmitAndSave(); Updater(BindValue); Saved?.Invoke(this, infos); } catch (Exception ex) { SaveException?.Invoke(this, ex); } } }