Merge pull request #7 from mahalex/fix-unrepresentable-datetime-bug
Fix unrepresentable datetime bug
This commit is contained in:
commit
6fe9eda50b
@ -449,6 +449,19 @@ namespace MatFileHandler.Tests
|
||||
Assert.That(duration[2], Is.EqualTo(new TimeSpan(1, 3, 5)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test unrepresentable datetime.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestDatetime_Unrepresentable()
|
||||
{
|
||||
var matFile = GetTests("good")["datetime-unrepresentable"];
|
||||
var obj = matFile["d"].Value as IMatObject;
|
||||
var datetime = new DatetimeAdapter(obj);
|
||||
var d0 = datetime[0];
|
||||
Assert.That(d0, Is.Null);
|
||||
}
|
||||
|
||||
private static AbstractTestDataFactory<IMatFile> GetTests(string factoryName) =>
|
||||
new MatTestDataFactory(Path.Combine(TestDirectory, factoryName));
|
||||
|
||||
|
BIN
MatFileHandler.Tests/test-data/good/datetime-unrepresentable.mat
Normal file
BIN
MatFileHandler.Tests/test-data/good/datetime-unrepresentable.mat
Normal file
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.28107.0
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.28621.142
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatFileHandler", "MatFileHandler\MatFileHandler.csproj", "{C0CD11D3-016A-4FCD-AF0B-D745F79F3749}"
|
||||
EndProject
|
||||
@ -9,6 +9,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MatFileHandler.Tests", "Mat
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2CF58D3D-4CEC-419B-AD67-58665A888BDF}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
LICENSE.md = LICENSE.md
|
||||
MatFileHandler\Objects.md = MatFileHandler\Objects.md
|
||||
README.md = README.md
|
||||
EndProjectSection
|
||||
|
@ -56,7 +56,18 @@ namespace MatFileHandler
|
||||
/// Gets values of datetime object at given position in the array converted to <see cref="DateTimeOffset"/>.
|
||||
/// </summary>
|
||||
/// <param name="list">Indices.</param>
|
||||
/// <returns>Value converted to <see cref="DateTimeOffset"/>.</returns>
|
||||
public DateTimeOffset this[params int[] list] => epoch.AddMilliseconds(data[Dimensions.DimFlatten(list)]);
|
||||
/// <returns>Value converted to <see cref="DateTimeOffset"/>; null if the resulting value is unrepresentable.</returns>
|
||||
public DateTimeOffset? this[params int[] list]
|
||||
{
|
||||
get
|
||||
{
|
||||
var milliseconds = data[Dimensions.DimFlatten(list)];
|
||||
if (milliseconds < -62_135_596_800_000.0 || milliseconds > 253_402_300_799_999.0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return epoch.AddMilliseconds(milliseconds);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +1,13 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
|
||||
<PackageVersion>1.3.0-beta3</PackageVersion>
|
||||
<PackageVersion>1.3.0-beta4</PackageVersion>
|
||||
<PackageId>MatFileHandler</PackageId>
|
||||
<Title>A library for reading and writing MATLAB .mat files.</Title>
|
||||
<Authors>Alexander Luzgarev</Authors>
|
||||
<Description>MatFileHandler provides a simple interface for reading and writing MATLAB .mat files (of so-called "Level 5") and extracting the contents of numerical arrays, logical arrays, sparse arrays, char arrays, cell arrays and structure arrays.</Description>
|
||||
<Copyright>Copyright 2017-2018 Alexander Luzgarev</Copyright>
|
||||
<PackageLicenseUrl>https://raw.githubusercontent.com/mahalex/MatFileHandler/master/LICENSE.md</PackageLicenseUrl>
|
||||
<PackageLicenseFile>LICENSE.md</PackageLicenseFile>
|
||||
<PackageProjectUrl>https://github.com/mahalex/MatFileHandler</PackageProjectUrl>
|
||||
<PackageReleaseNotes>First release.</PackageReleaseNotes>
|
||||
<PackageTags>Matlab</PackageTags>
|
||||
@ -31,4 +31,7 @@
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.ValueTuple" Version="4.4.0" Condition="'$(TargetFramework)' == 'net461'" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<ItemGroup>
|
||||
<None Include="..\LICENSE.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
Loading…
x
Reference in New Issue
Block a user