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());
        }
Exemple #2
0
        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");
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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());
        }
Exemple #5
0
        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)));
        }
Exemple #6
0
        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);
        }
Exemple #7
0
 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)
                ));
 }
Exemple #8
0
        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");
            }
                       ));
        }
Exemple #9
0
        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[] { });
        }
Exemple #10
0
 {//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))))
     {
     }
Exemple #11
0
 public static IEnumerable <Warning> Of(MarketDataValueSpecification spec, string k, ValueSnapshot v)
 {
     return(v.OverrideValue.HasValue ? new Warning[] { new OverriddenValueDisappearingWarning(spec, k) } : new Warning[] { });
 }
Exemple #12
0
 {//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))
     {
     }
Exemple #13
0
 public static IEnumerable<Warning> Of(MarketDataValueSpecification spec, string k, ValueSnapshot v)
 {
     return v.OverrideValue.HasValue ? new Warning[] { new OverriddenValueDisappearingWarning(spec, k) } : new Warning[] { };
 }
Exemple #14
0
 //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))
 {
 }
Exemple #15
0
 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[] { };
 }
Exemple #16
0
 //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))))
 {
 }