public void CanRemoveAllOverrides() { var manageableUnstructuredMarketDataSnapshot = new ManageableUnstructuredMarketDataSnapshot(new Dictionary<MarketDataValueSpecification, IDictionary<string, ValueSnapshot>>()); var manageableVolatilitySurfaceSnapshots = GetManageableVolatilitySurfaceSnapshots(); var manageableYieldCurveSnapshots = GetManageableYieldCurveSnapshots(); var manageableVolatilityCubeSnapshots = GetManageableVolatilityCubeSnapshots(); var manageableMarketDataSnapshot = new ManageableMarketDataSnapshot("SomeView", manageableUnstructuredMarketDataSnapshot, manageableYieldCurveSnapshots, manageableVolatilityCubeSnapshots, manageableVolatilitySurfaceSnapshots); var valueSpec = new MarketDataValueSpecification(MarketDataValueType.Primitive, UniqueId.Create("ID", "1")); const string valueName = "Value"; manageableMarketDataSnapshot.Values.Add(valueSpec, new Dictionary<string, ValueSnapshot> {{valueName, new ValueSnapshot(12){OverrideValue = 13}}}); Assert.True(manageableMarketDataSnapshot.HaveOverrides()); Assert.True(manageableMarketDataSnapshot.YieldCurves.Single().Value.HaveOverrides()); Assert.True(manageableMarketDataSnapshot.VolatilityCubes.Single().Value.HaveOverrides()); Assert.True(manageableMarketDataSnapshot.VolatilitySurfaces.Single().Value.HaveOverrides()); manageableMarketDataSnapshot.RemoveAllOverrides(); var valueSnapshot = manageableMarketDataSnapshot.Values[valueSpec][valueName]; CheckOverrideCleared(valueSnapshot); CheckOverrideCleared(manageableMarketDataSnapshot.YieldCurves.Values.Single().Values.Values.Single().Value.Single().Value); CheckOverrideCleared(manageableMarketDataSnapshot.VolatilityCubes.Values.Single().OtherValues.Values.Single().Value.Values.Single()); CheckOverrideCleared(manageableMarketDataSnapshot.VolatilitySurfaces.Values.Single().Values.Values.Single()); Assert.Equal(1, manageableMarketDataSnapshot.Values.Count); Assert.False(manageableMarketDataSnapshot.HaveOverrides()); Assert.False(manageableMarketDataSnapshot.YieldCurves.Single().Value.HaveOverrides()); Assert.False(manageableMarketDataSnapshot.VolatilityCubes.Single().Value.HaveOverrides()); Assert.False(manageableMarketDataSnapshot.VolatilitySurfaces.Single().Value.HaveOverrides()); }
public void Add(MarketDataValueSpecification spec, string valueName) { IDictionary <string, ValueSnapshot> entry; if (!Values.TryGetValue(spec, out entry)) { entry = new Dictionary <string, ValueSnapshot>(); Values.Add(spec, entry); } entry.Add(valueName, new ValueSnapshot(null)); InvokePropertyChanged("Values"); }
public static ManageableUnstructuredMarketDataSnapshot FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer) { var dictionary = new Dictionary <MarketDataValueSpecification, IDictionary <string, ValueSnapshot> >(); foreach (var entryField in ffc.GetAllByOrdinal(1)) { var entryMsg = (IFudgeFieldContainer)entryField.Value; MarketDataValueSpecification valueSpec = null; string valueName = null; ValueSnapshot value = null; foreach (var field in entryMsg) { switch (field.Name) { case "valueSpec": valueSpec = deserializer.FromField <MarketDataValueSpecification>(field); break; case "valueName": valueName = (string)field.Value; break; case "value": value = deserializer.FromField <ValueSnapshot>(field); break; default: throw new ArgumentOutOfRangeException(); } } IDictionary <string, ValueSnapshot> innerDict; if (!dictionary.TryGetValue(valueSpec, out innerDict)) { innerDict = new Dictionary <string, ValueSnapshot>(); dictionary.Add(valueSpec, innerDict); } innerDict.Add(valueName, value); } return(new ManageableUnstructuredMarketDataSnapshot(dictionary)); }
public void CanRemoveAllOverrides() { var manageableUnstructuredMarketDataSnapshot = new ManageableUnstructuredMarketDataSnapshot(new Dictionary <MarketDataValueSpecification, IDictionary <string, ValueSnapshot> >()); var manageableVolatilitySurfaceSnapshots = GetManageableVolatilitySurfaceSnapshots(); var manageableYieldCurveSnapshots = GetManageableYieldCurveSnapshots(); var manageableVolatilityCubeSnapshots = GetManageableVolatilityCubeSnapshots(); var manageableMarketDataSnapshot = new ManageableMarketDataSnapshot("SomeView", manageableUnstructuredMarketDataSnapshot, manageableYieldCurveSnapshots, manageableVolatilityCubeSnapshots, manageableVolatilitySurfaceSnapshots); var valueSpec = new MarketDataValueSpecification(MarketDataValueType.Primitive, UniqueId.Create("ID", "1")); const string valueName = "Value"; manageableMarketDataSnapshot.Values.Add(valueSpec, new Dictionary <string, ValueSnapshot> { { valueName, new ValueSnapshot(12) { OverrideValue = 13 } } }); Assert.True(manageableMarketDataSnapshot.HaveOverrides()); Assert.True(manageableMarketDataSnapshot.YieldCurves.Single().Value.HaveOverrides()); Assert.True(manageableMarketDataSnapshot.VolatilityCubes.Single().Value.HaveOverrides()); Assert.True(manageableMarketDataSnapshot.VolatilitySurfaces.Single().Value.HaveOverrides()); manageableMarketDataSnapshot.RemoveAllOverrides(); var valueSnapshot = manageableMarketDataSnapshot.Values[valueSpec][valueName]; CheckOverrideCleared(valueSnapshot); CheckOverrideCleared(manageableMarketDataSnapshot.YieldCurves.Values.Single().Values.Values.Single().Value.Single().Value); CheckOverrideCleared(manageableMarketDataSnapshot.VolatilityCubes.Values.Single().OtherValues.Values.Single().Value.Values.Single()); CheckOverrideCleared(manageableMarketDataSnapshot.VolatilitySurfaces.Values.Single().Values.Values.Single()); Assert.Equal(1, manageableMarketDataSnapshot.Values.Count); Assert.False(manageableMarketDataSnapshot.HaveOverrides()); Assert.False(manageableMarketDataSnapshot.YieldCurves.Single().Value.HaveOverrides()); Assert.False(manageableMarketDataSnapshot.VolatilityCubes.Single().Value.HaveOverrides()); Assert.False(manageableMarketDataSnapshot.VolatilitySurfaces.Single().Value.HaveOverrides()); }
private static UpdateAction <ManageableUnstructuredMarketDataSnapshot> PrepareRemoveAction(MarketDataValueSpecification spec, string k, ValueSnapshot v) { Action <ManageableUnstructuredMarketDataSnapshot> updateAction = delegate(ManageableUnstructuredMarketDataSnapshot s) { if (!s._values[spec].Remove(k)) { throw new InvalidOperationException("Unexpected missing key"); } s.InvokePropertyChanged("Values"); }; return(new UpdateAction <ManageableUnstructuredMarketDataSnapshot>(updateAction, OverriddenValueDisappearingWarning.Of(spec, k, v))); }
private static UpdateAction <ManageableUnstructuredMarketDataSnapshot> PrepareUpdateFrom(MarketDataValueSpecification currSpec, IDictionary <string, ValueSnapshot> currValues, MarketDataValueSpecification newSpec, IDictionary <string, ValueSnapshot> newValues) { var actions = currValues.ProjectStructure(newValues, (k, a, b) => { var newMarketValue = b.MarketValue; return(new UpdateAction <ManageableUnstructuredMarketDataSnapshot>(delegate(ManageableUnstructuredMarketDataSnapshot s) { s._values[currSpec][k].MarketValue = newMarketValue; })); }, (k, v) => PrepareRemoveAction(currSpec, k, v), (k, v) => { var valueSnapshot = v.Clone(); return(new UpdateAction <ManageableUnstructuredMarketDataSnapshot>( delegate(ManageableUnstructuredMarketDataSnapshot s) { s._values[currSpec].Add(k, valueSnapshot.Clone()); s.InvokePropertyChanged("Values"); })); }); UpdateAction <ManageableUnstructuredMarketDataSnapshot> ret = UpdateAction <ManageableUnstructuredMarketDataSnapshot> .Create(actions); if (!currSpec.Equals(newSpec)) {//we need to update the key, since we used a non standard comparer ret = ret.Concat( new UpdateAction <ManageableUnstructuredMarketDataSnapshot>(delegate(ManageableUnstructuredMarketDataSnapshot s) { var prevValue = s._values[currSpec]; s.Values[newSpec] = prevValue; s._values.Remove(currSpec); s.InvokePropertyChanged("Values"); }) ); } return(ret); }
private static UpdateAction <ManageableUnstructuredMarketDataSnapshot> PrepareRemoveAction(MarketDataValueSpecification marketDataValueSpecification, IDictionary <string, ValueSnapshot> valueSnapshots) { return(new UpdateAction <ManageableUnstructuredMarketDataSnapshot>( delegate(ManageableUnstructuredMarketDataSnapshot snap) { snap.Values.Remove(marketDataValueSpecification); snap.InvokePropertyChanged("Values"); }, OverriddenSecurityDisappearingWarning.Of(marketDataValueSpecification, valueSnapshots) )); }
private static UpdateAction <ManageableUnstructuredMarketDataSnapshot> PrepareAddAction(MarketDataValueSpecification marketDataValueSpecification, IDictionary <string, ValueSnapshot> valueSnapshots) { var clonedValues = Clone(valueSnapshots); return(new UpdateAction <ManageableUnstructuredMarketDataSnapshot>( delegate(ManageableUnstructuredMarketDataSnapshot snap) { snap.Values.Add(marketDataValueSpecification, Clone(clonedValues)); snap.InvokePropertyChanged("Values"); } )); }
public static IEnumerable <Warning> Of(MarketDataValueSpecification spec, IEnumerable <KeyValuePair <string, ValueSnapshot> > values) { var overrides = values.Where(v => v.Value.OverrideValue.HasValue); return(overrides.Any(v => v.Value.OverrideValue.HasValue) ? new Warning[] { new OverriddenSecurityDisappearingWarning(spec, overrides) } : new Warning[] { }); }
{//TODO does the user need to know scope? private OverriddenSecurityDisappearingWarning(MarketDataValueSpecification spec, IEnumerable <KeyValuePair <string, ValueSnapshot> > overrides) : base(string.Format("{0} will not be present in the new snapshot, overrides on ({1}) will be lost", spec, string.Join(",", overrides.Select(o => o.Key)))) { }
public static IEnumerable <Warning> Of(MarketDataValueSpecification spec, string k, ValueSnapshot v) { return(v.OverrideValue.HasValue ? new Warning[] { new OverriddenValueDisappearingWarning(spec, k) } : new Warning[] { }); }
{//TODO does the user need to know scope? private OverriddenValueDisappearingWarning(MarketDataValueSpecification spec, string valueName) : base(string.Format("Value {0} on {1} will not be present in the new snapshot, overrides will be lost", valueName, spec)) { }
public static IEnumerable<Warning> Of(MarketDataValueSpecification spec, string k, ValueSnapshot v) { return v.OverrideValue.HasValue ? new Warning[] { new OverriddenValueDisappearingWarning(spec, k) } : new Warning[] { }; }
//TODO does the user need to know scope? private OverriddenValueDisappearingWarning(MarketDataValueSpecification spec, string valueName) : base(string.Format("Value {0} on {1} will not be present in the new snapshot, overrides will be lost", valueName, spec)) { }
public static IEnumerable<Warning> Of(MarketDataValueSpecification spec, IEnumerable<KeyValuePair<string, ValueSnapshot>> values) { var overrides = values.Where(v => v.Value.OverrideValue.HasValue); return overrides.Any(v => v.Value.OverrideValue.HasValue) ? new Warning[] { new OverriddenSecurityDisappearingWarning(spec, overrides) } : new Warning[] { }; }
//TODO does the user need to know scope? private OverriddenSecurityDisappearingWarning(MarketDataValueSpecification spec, IEnumerable<KeyValuePair<string, ValueSnapshot>> overrides) : base(string.Format("{0} will not be present in the new snapshot, overrides on ({1}) will be lost", spec, string.Join(",", overrides.Select(o => o.Key)))) { }