Skip to content

Commit

Permalink
Add float/double NaN parse tests (#132)
Browse files Browse the repository at this point in the history
  • Loading branch information
nietras authored Apr 20, 2024
1 parent d7d05b5 commit db693a6
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions src/Sep.Test/SepReaderColTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -167,23 +167,44 @@ static void Run(SepReader.ColAction action, string colValue = ColText, Func<SepR

static void AssertParseFloats(Func<SepReaderOptions, SepReaderOptions> configure)
{
Run(col => Assert.AreEqual(ColValue, col.Parse<float>()), configure: configure);
Run(col => Assert.AreEqual(ColValue, col.Parse<double>()), configure: configure);
Run(col => Assert.AreEqual(ColValue, col.Parse<float>()), ColText, configure: configure);
Run(col => Assert.AreEqual(float.NaN, col.Parse<float>()), "NaN", configure: configure);
Run(col => Assert.AreEqual(float.NaN, col.Parse<float>()), "+NaN", configure: configure);
Run(col => Assert.AreEqual(float.NaN, col.Parse<float>()), "-NaN", configure: configure);

Run(col => Assert.AreEqual(ColValue, col.Parse<double>()), ColText, configure: configure);
Run(col => Assert.AreEqual(double.NaN, col.Parse<double>()), "NaN", configure: configure);
Run(col => Assert.AreEqual(double.NaN, col.Parse<double>()), "+NaN", configure: configure);
Run(col => Assert.AreEqual(double.NaN, col.Parse<double>()), "-NaN", configure: configure);
}

static void AssertTryParseReturnFloats(Func<SepReaderOptions, SepReaderOptions> configure)
{
Run(col => Assert.AreEqual(ColValue, col.TryParse<float>()), configure: configure);
Run(col => Assert.AreEqual(ColValue, col.TryParse<float>()), ColText, configure: configure);
Run(col => Assert.AreEqual(float.NaN, col.TryParse<float>()), "NaN", configure: configure);
Run(col => Assert.AreEqual(float.NaN, col.TryParse<float>()), "+NaN", configure: configure);
Run(col => Assert.AreEqual(float.NaN, col.TryParse<float>()), "-NaN", configure: configure);
Run(col => Assert.AreEqual(null, col.TryParse<float>()), "a", configure: configure);
Run(col => Assert.AreEqual(ColValue, col.TryParse<double>()), configure: configure);

Run(col => Assert.AreEqual(ColValue, col.TryParse<double>()), ColText, configure: configure);
Run(col => Assert.AreEqual(double.NaN, col.TryParse<double>()), "NaN", configure: configure);
Run(col => Assert.AreEqual(double.NaN, col.TryParse<double>()), "+NaN", configure: configure);
Run(col => Assert.AreEqual(double.NaN, col.TryParse<double>()), "-NaN", configure: configure);
Run(col => Assert.AreEqual(null, col.TryParse<double>()), "a", configure: configure);
}

static void AssertTryParseOutFloats(Func<SepReaderOptions, SepReaderOptions> configure)
{
Run(col => Assert.AreEqual((float?)ColValue, col.TryParse<float>(out var v) ? v : null), configure: configure);
Run(col => Assert.AreEqual((float?)null, col.TryParse<float>(out var v) ? v : null), "a", configure: configure);
Run(col => Assert.AreEqual((float?)float.NaN, col.TryParse<float>(out var v) ? v : null), "NaN", configure: configure);
Run(col => Assert.AreEqual((float?)float.NaN, col.TryParse<float>(out var v) ? v : null), "+NaN", configure: configure);
Run(col => Assert.AreEqual((float?)float.NaN, col.TryParse<float>(out var v) ? v : null), "-NaN", configure: configure);

Run(col => Assert.AreEqual((double?)ColValue, col.TryParse<double>(out var v) ? v : null), configure: configure);
Run(col => Assert.AreEqual((double?)null, col.TryParse<double>(out var v) ? v : null), "a", configure: configure);
Run(col => Assert.AreEqual((double?)double.NaN, col.TryParse<double>(out var v) ? v : null), "NaN", configure: configure);
Run(col => Assert.AreEqual((double?)double.NaN, col.TryParse<double>(out var v) ? v : null), "+NaN", configure: configure);
Run(col => Assert.AreEqual((double?)double.NaN, col.TryParse<double>(out var v) ? v : null), "-NaN", configure: configure);
}
}

0 comments on commit db693a6

Please sign in to comment.