Beispiel #1
0
    private static void RunTest()
    {
        var    parser = new ManualParser();
        string csv    = Properties.Resources.Csv;
        var    result = new StringBuilder();
        var    s      = new Stopwatch();

        for (int test = 0; test < 3; test++)
        {
            int lineCount = 0;
            s.Start();
            for (int i = 0; i < 1000000 / 50; i++)
            {
                foreach (var line in csv.Split(new[] { Environment.NewLine }, StringSplitOptions.None))
                {
                    string cur = line + s.ElapsedTicks.ToString();
                    result.AppendLine(parser.Parse(cur).ToString());
                    lineCount++;
                }
            }
            s.Stop();
            Console.WriteLine("Completed {0} lines in {1}ms", lineCount, s.ElapsedMilliseconds);
            s.Reset();
            result = new StringBuilder();
        }
    }
    public void Parse_GivenStringWithNoQuotesAndNoCommas_ShouldReturnThatString()
    {
        // Arrange
        var parser = new ManualParser();

        // Act
        string[] result = parser.Parse("This is my data").ToArray();
        // Assert
        Assert.AreEqual(1, result.Length, "Should only be one column returned");
        Assert.AreEqual("This is my data", result[0], "Incorrect value is returned");
    }
    public void Parse_GivenStringWithQuotesAndNoCommas_ShouldReturnColumnWithoutQuotes()
    {
        // Arrange
        var parser = new ManualParser();

        // Act
        string[] result = parser.Parse("\"This is my data\"").ToArray();
        // Assert
        Assert.AreEqual(1, result.Length, "Should be 1 column returned");
        Assert.AreEqual("This is my data", result[0], "Value is incorrect");
    }
    public void Parse_GivenStringWithQuotesContainingCommasAndCommas_ShouldReturnColumnsWithoutQuotes()
    {
        // Arrange
        var parser = new ManualParser();

        // Act
        string[] result = parser.Parse("\"This, is\", my data").ToArray();
        // Assert
        Assert.AreEqual(2, result.Length, "Should be 2 columns returned");
        Assert.AreEqual("This, is", result[0], "First value is incorrect");
        Assert.AreEqual("my data", result[1], "Second value is incorrect");
    }
    public void Parse_GivenStringWithNoQuotesAndOneComma_ShouldReturnTwoColumns()
    {
        // Arrange
        var parser = new ManualParser();

        // Act
        string[] result = parser.Parse("This is, my data").ToArray();
        // Assert
        Assert.AreEqual(2, result.Length, "Should be 2 columns returned");
        Assert.AreEqual("This is", result[0], "First value is incorrect");
        Assert.AreEqual("my data", result[1], "Second value is incorrect");
    }
    static void Main(string[] args)
    {
        var    parser    = new ManualParser();
        string csv       = Properties.Resources.Csv;
        var    result    = new StringBuilder();
        var    s         = new Stopwatch();
        int    lineCount = 0;

        s.Start();
        for (int i = 0; i < 3000; i++)
        {
            foreach (var line in csv.Split(new[] { Environment.NewLine }, StringSplitOptions.None))
            {
                result.AppendLine(parser.Parse(line).ToString());
                lineCount++;
            }
        }
        s.Stop();
        Console.WriteLine("Completed {0} lines in {1}ms", lineCount, s.ElapsedMilliseconds);
    }