コード例 #1
0
        //+ TestMethods
        private void a_valid_FxArray(double[][] data, double eRate)
        {
            var  stochArray = new FxArray(data, eRate);
            bool result     = _fxArrayCache.TryAddItem(stochArray, out _fxHash, FxArrayIdentifier);

            result.ShouldBeTrue();
        }
コード例 #2
0
        private static string ReadFxArray(string fullPath, Cache <FxArray> cache, int maxHorizon, int maxSim)
        {
            List <List <double> > unstructuredData = new List <List <double> >();
            double currentExchangeRate;

            using (var reader = new StreamReader(fullPath))
            {
                string line   = reader.ReadLine();
                var    values = line.Split(',');
                if (!(string.Equals(values[0], "1") && string.Equals(values[1], "0")))
                {
                    throw new ArgumentException("Fx Data is in an unexpected format");
                }
                var firstLoopData = new List <double>();
                currentExchangeRate = values[2].ConvertParameterToDouble("Fx Value");
                int colsToRead = 1;

                do
                {
                    if (reader.EndOfStream)
                    {
                        throw new ArgumentException("Fx Data is in an unexpected format");
                    }
                    line   = reader.ReadLine();
                    values = line.Split(',');

                    if (values[1].ConvertParameterToInt("Fx Data") == 0)
                    {
                        if (currentExchangeRate != values[2].ConvertParameterToDouble("Fx Value"))
                        {
                            throw new ArgumentException("Fx Data is in an unexpected format");
                        }
                        break;
                    }

                    if (colsToRead > maxHorizon)
                    {
                        continue;
                    }

                    if (!string.Equals(values[0], "1") || values[1].ConvertParameterToInt("Fx Value") != colsToRead)
                    {
                        throw new ArgumentException("Fx Data is in an unexpected format");
                    }

                    var data = new List <double>();
                    data.Add(values[2].ConvertParameterToDouble("Fx Value"));
                    unstructuredData.Add(data);
                    colsToRead++;
                } while (true);

                int currentSim  = 2;
                var yearsRead   = new Queue <int>(Enumerable.Range(1, colsToRead - 1));
                int currentYear = 0;

                while (!reader.EndOfStream)
                {
                    line   = reader.ReadLine();
                    values = line.Split(',');
                    // in case you have blank rows
                    if (values.All(val => string.IsNullOrWhiteSpace(val)))
                    {
                        continue;
                    }

                    int simRead  = values[0].ConvertParameterToInt("Fx Data");
                    int yearRead = values[1].ConvertParameterToInt("Fx Data");

                    if (yearRead > maxHorizon)
                    {
                        continue;
                    }

                    if (yearsRead.Count() == 0)
                    {
                        yearsRead = new Queue <int>(Enumerable.Range(1, colsToRead - 1));
                        currentSim++;
                        if (currentSim > maxSim)
                        {
                            break;
                        }
                        if (!values[2].ConvertParameterToDouble("Fx Value").EqualsWithPrecision(currentExchangeRate))
                        {
                            throw new ArgumentException("Current Exchange Rates do not match in ESG File");
                        }
                        continue;
                    }


                    currentYear = yearsRead.Dequeue();


                    if (simRead != currentSim || yearRead != currentYear)
                    {
                        throw new ArgumentException("Fx Data is in an unexpected format");
                    }

                    unstructuredData[currentYear - 1].Add(values[2].ConvertParameterToDouble("Fx Data"));
                }
            }

            var structuredData = unstructuredData.InvertEnumerableOrder();
            var fxArray        = new FxArray(structuredData, currentExchangeRate);

            _ = cache.TryAddItem(fxArray, out var hash, fullPath, maxHorizon, maxSim);

            return(hash);
        }
コード例 #3
0
 public void TestInitialiser()
 {
     _fxArray    = null;
     _stochArray = null;
 }
コード例 #4
0
 public void TestCompletion()
 {
     _fxArray    = null;
     _stochArray = null;
 }
コード例 #5
0
 //+ TestMethods
 private void a_valid_fxArray(double[][] rates, double currentFx)
 {
     _fxArray = new FxArray(rates, currentFx);
 }