示例#1
0
        public void TestCase2()
        {
            // Web url is: https://www.quandl.com/api/v1/datasets/WIKI/AAPL.csv?sort_order=asc&exclude_headers=true&rows=3&trim_start=2012-11-01&trim_end=2013-11-30&column=4&collapse=quarterly&transformation=rdiff

            DataField[] expectedDataFields = new DataField[] { new DataField("StockData", CommonTypes.DateTime), new DataField("PriceValue", CommonTypes.Double) };
            DataHeader expectedHeader = new DataHeader(expectedDataFields);

            List<DataRecord> expectedDataRecords = new List<DataRecord>
            {
                new DataRecord(new DateTime(2013, 3, 31), -0.16820266496096),
                new DataRecord(new DateTime(2013, 6, 30), -0.10421090679077),
                new DataRecord(new DateTime(2013, 9, 30), 0.2023049958389),
            };

            DataSet expectedDataSet = new DataSet(expectedHeader, expectedDataRecords);

            QuandlDataProvider provider = new QuandlDataProvider();

            Dictionary<string, string> dataPathParams = new Dictionary<string, string>()
            {
                { "DatabaseCode", "WIKI" },
                { "TableCode", "AAPL" },
                { "FormatCode", "CSV" },
            };

            Dictionary<string, object> dataQueryParams = new Dictionary<string,object>
            {
                { "DatabaseCode", "WIKI" },
                { "TableCode", "AAPL" },
                { "FormatCode", FileType.CSV },
                { "AuthToken", null },
                { "TrimStart", new DateTime(2012, 11, 1)},
                { "TrimEnd", new DateTime(2013, 11, 30) },
                { "SortOrder", SortOrder.Ascending },
                { "ExcludeHeader", true },
                { "ExcludeData", null },
                { "Rows", 3},
                { "Column", 4},
                { "Frequency", CollapseType.Quarterly },
                { "Calculation", TransformationType.Rdiff }
            };

            // TODO: Make it typed

            DataPath dataPath = new DataPath(dataPathParams);
            DataQuery dataQuery = new DataQuery(dataQueryParams);

            DataRequest request = new DataRequest(dataPath, dataQuery);

            DataSet actualDataSet = provider.ReadData(request);

            AreEqual(expectedDataSet, actualDataSet);
        }
示例#2
0
        private static void AreEqual(DataSet expected, DataSet actual)
        {
            Assert.AreEqual(expected.Header.Fields.Length, actual.Header.Fields.Length);

            int numFields = expected.Header.Fields.Length;

            for (int i = 0; i < numFields; i++)
            {
                DataField expectedField = expected.Header.Fields[i];
                DataField actualField = actual.Header.Fields[i];

                Assert.AreEqual(expectedField.Key, actualField.Key);
                Assert.AreEqual(expectedField.Type, actualField.Type);
                Assert.AreEqual(expectedField.IsNullable, actualField.IsNullable);
            }

            Assert.AreEqual(expected.Records.Count, actual.Records.Count);

            int recordCount = expected.Records.Count;

            for(int i = 0; i < recordCount; i++)
            {
                DataRecord expectedRecord = expected.Records[i];
                DataRecord actualRecord = actual.Records[i];

                Assert.AreEqual(expectedRecord.Values.Length, actualRecord.Values.Length);

                int fieldCount = expectedRecord.Values.Length;

                for(int j = 0; j < fieldCount; j++)
                {
                    object expectedValue = expectedRecord.Values[j];
                    object actualValue = actualRecord.Values[j];

                    if(expectedValue != null && actualValue != null && expectedValue.GetType() == CommonTypes.Float && actualValue.GetType() == CommonTypes.Float)
                    {
                        Assert.AreEqual((float)expectedValue, (float)actualValue, FLOAT_DELTA);
                    }
                    else if(expectedValue != null && actualValue != null && expectedValue.GetType() == CommonTypes.Double && actualValue.GetType() == CommonTypes.Double)
                    {
                        Assert.AreEqual((double)expectedValue, (double)actualValue, DOUBLE_DELTA);
                    }
                    else
                    {
                        Assert.AreEqual(expectedValue, actualValue);
                    }
                }
            }
        }