Skip to content

Commit

Permalink
Improve test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
Apollo3zehn committed Aug 23, 2024
1 parent 300f501 commit 719a29b
Show file tree
Hide file tree
Showing 17 changed files with 457 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"'DATA'",
"yyyy-MM"
],
"FileTemplate": "prefix_average_data_yyyy-MM-dd_HH-mm-ss.dat",
"FileTemplate": "'prefix_average_data_'yyyy-MM-dd_HH-mm-ss'.dat'",
"FileDateTimePreselector": "prefix_average_data_(.{19})",
"FileDateTimeSelector": "yyyy-MM-dd_HH-mm-ss",
"FilePeriod": "1.00:00:00",
Expand All @@ -16,7 +16,7 @@
"'DATA'",
"yyyy-MM"
],
"FileTemplate": "prefix_real_time_data_yyyy-MM-dd_HH-mm-ss.dat",
"FileTemplate": "'prefix_real_time_data_'yyyy-MM-dd_HH-mm-ss'.dat'",
"FileDateTimePreselector": "prefix_real_time_data_(.{19})",
"FileDateTimeSelector": "yyyy-MM-dd_HH-mm-ss",
"FilePeriod": "00:30:00",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
<None Update="*DATABASES/**/*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="expected/*.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Nexus.Extensibility;
using System.Globalization;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text.Json;
using Xunit;
Expand Down Expand Up @@ -278,15 +279,29 @@ await Assert.ThrowsAsync<ArgumentException>(() =>
dataSource.GetAvailabilityAsync("/A/B/C", begin, end, CancellationToken.None));
}

[Fact]
public async Task CanRead_Database_M()
[Theory]
[InlineData("A", "2019-12-31T00:00:00Z", "2020-01-03T00:00:00Z")]
[InlineData("B", "2019-12-31T00:00:00Z", "2020-01-03T00:00:00Z")]
[InlineData("C", "2019-12-31T00:00:00Z", "2020-01-03T00:00:00Z")]
[InlineData("D", "2019-12-31T00:00:00Z", "2020-01-03T00:00:00Z")]
[InlineData("E", "2019-12-31T00:00:00Z", "2020-01-03T00:00:00Z")]
[InlineData("F", "2019-12-31T00:00:00Z", "2020-01-03T00:00:00Z")]
[InlineData("G", "2019-12-31T00:00:00Z", "2020-01-02T00:00:00Z")]
[InlineData("H", "2019-12-31T00:00:00Z", "2020-01-03T00:00:00Z")]
[InlineData("I", "2019-12-31T00:00:00Z", "2020-01-02T00:00:00Z")]
[InlineData("J", "2020-01-01T00:00:00Z", "2020-01-05T00:00:00Z")]
[InlineData("K", "2020-01-01T00:00:00Z", "2020-01-02T00:00:00Z")]
[InlineData("L", "2020-01-01T00:00:00Z", "2020-01-04T00:00:00Z")]
[InlineData("M", "2020-01-01T00:00:00Z", "2020-01-02T00:00:00Z")]
[InlineData("N", "2020-01-01T00:00:00Z", "2020-01-04T00:00:00Z")]
public async Task CanRead_ReadInfos(string database, string beginString, string endString)
{
// Arrange
var readInfos = new List<ReadInfo>();
var dataSource = new StructuredFileDataSourceTester(readInfos.Add) as IDataSource;

var context = new DataSourceContext(
ResourceLocator: new Uri(Path.Combine(Directory.GetCurrentDirectory(), "DATABASES/M")),
ResourceLocator: new Uri(Path.Combine(Directory.GetCurrentDirectory(), $"DATABASES/{database}")),
SystemConfiguration: default!,
SourceConfiguration: default!,
RequestConfiguration: default!);
Expand All @@ -298,8 +313,8 @@ public async Task CanRead_Database_M()
var representation = resource.Representations![0];
var catalogItem = new CatalogItem(catalog, resource, representation, default);

var begin = new DateTime(2020, 01, 01, 0, 0, 0, DateTimeKind.Utc);
var end = new DateTime(2020, 01, 02, 0, 0, 0, DateTimeKind.Utc);
var begin = DateTime.ParseExact(beginString, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
var end = DateTime.ParseExact(endString, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
var (data, status) = ExtensibilityUtilities.CreateBuffers(representation, begin, end);

var request = new ReadRequest(catalogItem, data, status);
Expand All @@ -314,63 +329,21 @@ await dataSource.ReadAsync(
);

// Assert
Assert.Collection(readInfos.OrderBy(x => x.FilePath),

actual =>
{
Assert.Equal(1477, actual.FileBlock);
Assert.Equal(3600, actual.FileLength);
Assert.Equal(0, actual.FileOffset);
Assert.Equal(new DateTime(2020, 01, 01, 01, 00, 00, DateTimeKind.Utc), actual.RegularFileBegin);
Assert.EndsWith("01-35-23Z.dat", actual.FilePath);
},
var preparedReadInfos = readInfos
.Select(x => x with
{
FileSource = default!,
FilePath = x.FilePath.Split("Nexus.Sources.StructuredFile.Tests")[1]
}
)
.OrderBy(x => x.FilePath);

actual =>
{
Assert.Equal(779, actual.FileBlock);
Assert.Equal(3600, actual.FileLength);
Assert.Equal(0, actual.FileOffset);
Assert.Equal(new DateTime(2020, 01, 01, 01, 00, 00, DateTimeKind.Utc), actual.RegularFileBegin);
Assert.EndsWith("01-47-01Z.dat", actual.FilePath);
},
var actualJsonString = JsonSerializer.Serialize(preparedReadInfos, new JsonSerializerOptions { WriteIndented = true });
// File.WriteAllText($"{database}.json", actualJsonString);

actual =>
{
Assert.Equal(1990, actual.FileBlock);
Assert.Equal(3600, actual.FileLength);
Assert.Equal(0, actual.FileOffset);
Assert.Equal(new DateTime(2020, 01, 01, 02, 00, 00, DateTimeKind.Utc), actual.RegularFileBegin);
Assert.EndsWith("02-26-50Z.dat", actual.FilePath);
},
var expectedJsonString = File.ReadAllText($"expected/{database}.json");

actual =>
{
Assert.Equal(3600, actual.FileBlock);
Assert.Equal(3600, actual.FileLength);
Assert.Equal(0, actual.FileOffset);
Assert.Equal(new DateTime(2020, 01, 01, 03, 00, 00, DateTimeKind.Utc), actual.RegularFileBegin);
Assert.EndsWith("03-00-00Z.dat", actual.FilePath);
},

actual =>
{
Assert.Equal(3600, actual.FileBlock);
Assert.Equal(3600, actual.FileLength);
Assert.Equal(0, actual.FileOffset);
Assert.Equal(new DateTime(2020, 01, 01, 04, 00, 00, DateTimeKind.Utc), actual.RegularFileBegin);
Assert.EndsWith("04-00-00Z.dat", actual.FilePath);
},

actual =>
{
Assert.Equal(2686, actual.FileBlock);
Assert.Equal(3600, actual.FileLength);
Assert.Equal(0, actual.FileOffset);
Assert.Equal(new DateTime(2020, 01, 01, 04, 00, 00, DateTimeKind.Utc), actual.RegularFileBegin);
Assert.EndsWith("04-15-14Z.dat", actual.FilePath);
}

);
Assert.Equal(expectedJsonString, actualJsonString);
}

[Fact]
Expand Down
26 changes: 26 additions & 0 deletions tests/Nexus.Sources.StructuredFile.Tests/expected/A.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[
{
"FilePath": "/debug/DATABASES/A/DATA/calibrated/2019-12/2019-12-31/2019-12-31_12-00-00.dat",
"FileSource": null,
"RegularFileBegin": "2019-12-31T12:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/A/DATA/calibrated/2020-01/2020-01-02/2020-01-02_00-00-00.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/A/DATA/calibrated/2020-01/2020-01-02/2020-01-02_00-10-00.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:10:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
}
]
26 changes: 26 additions & 0 deletions tests/Nexus.Sources.StructuredFile.Tests/expected/B.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[
{
"FilePath": "/debug/DATABASES/B/DATA/2019-12/calibrated/2019-12-31/2019-12-31_12-00-00.dat",
"FileSource": null,
"RegularFileBegin": "2019-12-31T12:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/B/DATA/2020-01/calibrated/2020-01-02/2020-01-02_00-00-00.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/B/DATA/2020-01/calibrated/2020-01-02/2020-01-02_00-10-00.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:10:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
}
]
26 changes: 26 additions & 0 deletions tests/Nexus.Sources.StructuredFile.Tests/expected/C.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[
{
"FilePath": "/debug/DATABASES/C/DATA/2019-12-31/__0_2019-12-31_12-00-00_000000.dat",
"FileSource": null,
"RegularFileBegin": "2019-12-31T12:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/C/DATA/2020-01-02/__0_2020-01-02_00-00-00_000000.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/C/DATA/2020-01-02/__0_2020-01-02_00-10-00_000000.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:10:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
}
]
26 changes: 26 additions & 0 deletions tests/Nexus.Sources.StructuredFile.Tests/expected/D.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[
{
"FilePath": "/debug/DATABASES/D/DATA/position_A/__0_2019-12-31_12-00-00_000000.dat",
"FileSource": null,
"RegularFileBegin": "2019-12-31T10:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/D/DATA/position_A/__0_2020-01-02_00-00-00_000000.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-01T22:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/D/DATA/position_A/__0_2020-01-02_00-10-00_000000.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-01T22:10:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
}
]
18 changes: 18 additions & 0 deletions tests/Nexus.Sources.StructuredFile.Tests/expected/E.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[
{
"FilePath": "/debug/DATABASES/E/DATA/2020-01/prefix_average_data_2020-01-01_00-00-00.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-01T00:00:00Z",
"FileOffset": 0,
"FileBlock": 86400,
"FileLength": 86400
},
{
"FilePath": "/debug/DATABASES/E/DATA/2020-01/prefix_average_data_2020-01-02_00-00-00.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:00:00Z",
"FileOffset": 0,
"FileBlock": 86400,
"FileLength": 86400
}
]
26 changes: 26 additions & 0 deletions tests/Nexus.Sources.StructuredFile.Tests/expected/F.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[
{
"FilePath": "/debug/DATABASES/F/DATA/2019-12/20191231_12_x_0000.dat",
"FileSource": null,
"RegularFileBegin": "2019-12-31T12:00:00Z",
"FileOffset": 0,
"FileBlock": 3600,
"FileLength": 3600
},
{
"FilePath": "/debug/DATABASES/F/DATA/2020-01/20200102_00_x_0001.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:00:00Z",
"FileOffset": 0,
"FileBlock": 3600,
"FileLength": 3600
},
{
"FilePath": "/debug/DATABASES/F/DATA/2020-01/20200102_01_x_0002.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T01:00:00Z",
"FileOffset": 0,
"FileBlock": 3600,
"FileLength": 3600
}
]
34 changes: 34 additions & 0 deletions tests/Nexus.Sources.StructuredFile.Tests/expected/G.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[
{
"FilePath": "/debug/DATABASES/G/DATA/prefix_01-01-2020/00-40-22.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-01T00:40:22Z",
"FileOffset": 0,
"FileBlock": 1,
"FileLength": 1
},
{
"FilePath": "/debug/DATABASES/G/DATA/prefix_01-01-2020/01-39-22.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-01T01:39:22Z",
"FileOffset": 0,
"FileBlock": 1,
"FileLength": 1
},
{
"FilePath": "/debug/DATABASES/G/DATA/prefix_31-12-2019/00-40-22.dat",
"FileSource": null,
"RegularFileBegin": "2019-12-31T00:40:22Z",
"FileOffset": 0,
"FileBlock": 1,
"FileLength": 1
},
{
"FilePath": "/debug/DATABASES/G/DATA/prefix_31-12-2019/01-39-22.dat",
"FileSource": null,
"RegularFileBegin": "2019-12-31T01:39:22Z",
"FileOffset": 0,
"FileBlock": 1,
"FileLength": 1
}
]
26 changes: 26 additions & 0 deletions tests/Nexus.Sources.StructuredFile.Tests/expected/H.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[
{
"FilePath": "/debug/DATABASES/H/2019-12-31_12-00-00.dat",
"FileSource": null,
"RegularFileBegin": "2019-12-31T12:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/H/2020-01-02_00-00-00.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:00:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
},
{
"FilePath": "/debug/DATABASES/H/2020-01-02_00-10-00.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-02T00:10:00Z",
"FileOffset": 0,
"FileBlock": 600,
"FileLength": 600
}
]
18 changes: 18 additions & 0 deletions tests/Nexus.Sources.StructuredFile.Tests/expected/I.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[
{
"FilePath": "/debug/DATABASES/I/DATA/2019-12-31_23-55-00/data.dat",
"FileSource": null,
"RegularFileBegin": "2019-12-31T23:55:00Z",
"FileOffset": 0,
"FileBlock": 300,
"FileLength": 300
},
{
"FilePath": "/debug/DATABASES/I/DATA/2020-01-01_00-10-00/data.dat",
"FileSource": null,
"RegularFileBegin": "2020-01-01T00:10:00Z",
"FileOffset": 0,
"FileBlock": 300,
"FileLength": 300
}
]
Loading

0 comments on commit 719a29b

Please sign in to comment.