Skip to content

Commit 5396424

Browse files
authored
Merge pull request #38 from rameel/cleanup
Improve code quality and test performance
2 parents 1a7f408 + da1d4bc commit 5396424

File tree

10 files changed

+49
-58
lines changed

10 files changed

+49
-58
lines changed

src/Ramstack.FileSystem.Abstractions/VirtualNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public abstract class VirtualNode
4141
/// <param name="path">The full path of the file or directory.</param>
4242
protected VirtualNode(string path)
4343
{
44-
Debug.Assert(path == VirtualPath.Normalize(path));
44+
Debug.Assert(VirtualPath.IsNormalized(path));
4545
FullName = path;
4646
}
4747

src/Ramstack.FileSystem.Abstractions/VirtualNodeProperties.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,17 @@ namespace Ramstack.FileSystem;
99
public sealed class VirtualNodeProperties
1010
{
1111
/// <summary>
12-
/// Gets an instance of <see cref="VirtualNodeProperties"/> that represents a node with no data or an unavailable state.
12+
/// Gets an instance of <see cref="VirtualNodeProperties"/> that represents a node with an unavailable state.
1313
/// </summary>
1414
public static VirtualNodeProperties Unavailable { get; } =
1515
new VirtualNodeProperties(default, default, default, -1);
1616

17+
/// <summary>
18+
/// Gets an instance of <see cref="VirtualNodeProperties"/> that represents a node with no data.
19+
/// </summary>
20+
public static VirtualNodeProperties None { get; } =
21+
new VirtualNodeProperties(default, default, default, 0);
22+
1723
/// <summary>
1824
/// Gets the time when the current file or directory was created.
1925
/// </summary>

src/Ramstack.FileSystem.Adapters/VirtualDirectoryAdapter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ protected override void RefreshCore()
4646
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken)
4747
{
4848
var properties = _file?.Exists ?? _directory!.Exists
49-
? VirtualNodeProperties.CreateDirectoryProperties(default, default, default)
50-
: null;
49+
? VirtualNodeProperties.None
50+
: VirtualNodeProperties.Unavailable;
5151

5252
return new ValueTask<VirtualNodeProperties?>(properties);
5353
}

src/Ramstack.FileSystem.Amazon/S3Directory.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,12 @@ internal sealed class S3Directory : VirtualDirectory
2424
public S3Directory(AmazonS3FileSystem fileSystem, string path) : base(path)
2525
{
2626
_fs = fileSystem;
27-
_prefix = FullName == "/" ? "" : $"{FullName[1..]}/";
27+
_prefix = path == "/" ? "" : $"{path[1..]}/";
2828
}
2929

3030
/// <inheritdoc />
31-
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken)
32-
{
33-
var properties = VirtualNodeProperties.CreateDirectoryProperties(default, default, default);
34-
return new ValueTask<VirtualNodeProperties?>(properties);
35-
}
31+
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken) =>
32+
new ValueTask<VirtualNodeProperties?>(VirtualNodeProperties.None);
3633

3734
/// <inheritdoc />
3835
protected override ValueTask CreateCoreAsync(CancellationToken cancellationToken) =>

src/Ramstack.FileSystem.Amazon/S3UploadStream.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,6 @@ public override int Read(byte[] buffer, int offset, int count)
9191
return 0;
9292
}
9393

94-
/// <inheritdoc />
95-
public override long Seek(long offset, SeekOrigin origin)
96-
{
97-
Error_NotSupported();
98-
return 0;
99-
}
100-
10194
/// <inheritdoc />
10295
public override void Write(byte[] buffer, int offset, int count) =>
10396
Write(buffer.AsSpan(offset, count));
@@ -139,6 +132,13 @@ public override async ValueTask WriteAsync(ReadOnlyMemory<byte> buffer, Cancella
139132
}
140133
}
141134

135+
/// <inheritdoc />
136+
public override long Seek(long offset, SeekOrigin origin)
137+
{
138+
Error_NotSupported();
139+
return 0;
140+
}
141+
142142
/// <inheritdoc />
143143
public override void SetLength(long value) =>
144144
Error_NotSupported();

src/Ramstack.FileSystem.Azure/AzureDirectory.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,8 @@ public AzureDirectory(AzureFileSystem fileSystem, string path) : base(path) =>
2727
_fs = fileSystem;
2828

2929
/// <inheritdoc />
30-
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken)
31-
{
32-
var properties = VirtualNodeProperties.CreateDirectoryProperties(default, default, default);
33-
return new ValueTask<VirtualNodeProperties?>(properties);
34-
}
30+
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken) =>
31+
new ValueTask<VirtualNodeProperties?>(VirtualNodeProperties.None);
3532

3633
/// <inheritdoc />
3734
protected override ValueTask<bool> ExistsCoreAsync(CancellationToken cancellationToken) =>

src/Ramstack.FileSystem.Composite/CompositeDirectory.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,8 @@ public CompositeDirectory(CompositeFileSystem fileSystem, string path) : base(pa
2323
_fs = fileSystem;
2424

2525
/// <inheritdoc />
26-
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken)
27-
{
28-
var properties = VirtualNodeProperties.CreateDirectoryProperties(default, default, default);
29-
return new ValueTask<VirtualNodeProperties?>(properties);
30-
}
26+
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken) =>
27+
new ValueTask<VirtualNodeProperties?>(VirtualNodeProperties.None);
3128

3229
/// <inheritdoc />
3330
protected override ValueTask CreateCoreAsync(CancellationToken cancellationToken) =>

src/Ramstack.FileSystem.Prefixed/PrefixedFileSystem.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,8 @@ public ArtificialDirectory(PrefixedFileSystem fileSystem, string path, VirtualDi
130130
(_fs, _directory) = (fileSystem, directory);
131131

132132
/// <inheritdoc />
133-
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken)
134-
{
135-
var properties = VirtualNodeProperties.CreateDirectoryProperties(default, default, default);
136-
return new ValueTask<VirtualNodeProperties?>(properties);
137-
}
133+
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken) =>
134+
new ValueTask<VirtualNodeProperties?>(VirtualNodeProperties.None);
138135

139136
/// <inheritdoc />
140137
protected override ValueTask CreateCoreAsync(CancellationToken cancellationToken) =>

src/Ramstack.FileSystem.Zip/ZipDirectory.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,13 @@ internal sealed class ZipDirectory : VirtualDirectory
2020
/// Initializes a new instance of the <see cref="ZipDirectory"/> class.
2121
/// </summary>
2222
/// <param name="fileSystem">The file system associated with this directory.</param>
23-
/// <param name="path">The path of directory.</param>
23+
/// <param name="path">The path of the directory.</param>
2424
public ZipDirectory(ZipFileSystem fileSystem, string path) : base(path) =>
2525
_fileSystem = fileSystem;
2626

2727
/// <inheritdoc />
28-
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken)
29-
{
30-
var properties = VirtualNodeProperties.CreateDirectoryProperties(default, default, default);
31-
return new ValueTask<VirtualNodeProperties?>(properties);
32-
}
28+
protected override ValueTask<VirtualNodeProperties?> GetPropertiesCoreAsync(CancellationToken cancellationToken) =>
29+
new ValueTask<VirtualNodeProperties?>(VirtualNodeProperties.None);
3330

3431
/// <inheritdoc />
3532
protected override ValueTask<bool> ExistsCoreAsync(CancellationToken cancellationToken) =>

tests/Ramstack.FileSystem.Specification.Tests/VirtualFileSystemSpecificationTests.cs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public async Task FileTree_VirtualNode_FileSystem_MatchesIssuingFileSystemRefere
6565
using var fs = GetFileSystem();
6666

6767
Assert.That(
68-
await fs.GetFilesAsync("/", "**").CountAsync(),
69-
Is.Not.Zero);
68+
await fs.GetFilesAsync("/", "**").AnyAsync(),
69+
Is.True);
7070

7171
await foreach (var node in fs.GetFileNodesAsync("/", "**"))
7272
{
@@ -85,8 +85,8 @@ public async Task Exists_ReturnsTrue_For_ExistingFile()
8585
using var fs = GetFileSystem();
8686

8787
Assert.That(
88-
await fs.GetFilesAsync("/", "**").CountAsync(),
89-
Is.Not.Zero);
88+
await fs.GetFilesAsync("/", "**").AnyAsync(),
89+
Is.True);
9090

9191
await foreach (var node in fs.GetFileNodesAsync("/", "**"))
9292
{
@@ -114,8 +114,8 @@ public async Task File_OpenRead_ReturnsReadableStream()
114114
using var fs = GetFileSystem();
115115

116116
Assert.That(
117-
await fs.GetFilesAsync("/", "**").CountAsync(),
118-
Is.Not.Zero);
117+
await fs.GetFilesAsync("/", "**").AnyAsync(),
118+
Is.True);
119119

120120
await foreach (var file in fs.GetFilesAsync("/", "**"))
121121
{
@@ -148,8 +148,8 @@ public async Task File_OpenWrite_ReturnsWritableStream()
148148
return;
149149

150150
Assert.That(
151-
await fs.GetFilesAsync("/", "**").CountAsync(),
152-
Is.Not.Zero);
151+
await fs.GetFilesAsync("/", "**").AnyAsync(),
152+
Is.True);
153153

154154
await foreach (var file in fs.GetFilesAsync("/", "**"))
155155
{
@@ -205,8 +205,8 @@ public async Task File_Write_OverwritesContent_When_OverwriteIsTrue()
205205
return;
206206

207207
Assert.That(
208-
await fs.GetFilesAsync("/", "**").CountAsync(),
209-
Is.Not.Zero);
208+
await fs.GetFilesAsync("/", "**").AnyAsync(),
209+
Is.True);
210210

211211
await foreach (var file in fs.GetFilesAsync("/", "**"))
212212
{
@@ -233,8 +233,8 @@ public async Task File_Write_ThrowsException_For_ExistingFile_When_OverwriteIsFa
233233
return;
234234

235235
Assert.That(
236-
await fs.GetFilesAsync("/", "**").CountAsync(),
237-
Is.Not.Zero);
236+
await fs.GetFilesAsync("/", "**").AnyAsync(),
237+
Is.True);
238238

239239
await foreach (var file in fs.GetFilesAsync("/", "**"))
240240
{
@@ -324,8 +324,8 @@ public async Task File_Readonly_OpenWrite_ThrowsException()
324324
return;
325325

326326
Assert.That(
327-
await fs.GetFilesAsync("/", "**").CountAsync(),
328-
Is.Not.Zero);
327+
await fs.GetFilesAsync("/", "**").AnyAsync(),
328+
Is.True);
329329

330330
await foreach (var file in fs.GetFilesAsync("/", "**"))
331331
{
@@ -362,8 +362,8 @@ public async Task File_Readonly_Write_ThrowsException()
362362
return;
363363

364364
Assert.That(
365-
await fs.GetFilesAsync("/", "**").CountAsync(),
366-
Is.Not.Zero);
365+
await fs.GetFilesAsync("/", "**").AnyAsync(),
366+
Is.True);
367367

368368
await foreach (var file in fs.GetFilesAsync("/", "**"))
369369
{
@@ -395,8 +395,8 @@ public async Task File_Readonly_Delete_ThrowsException()
395395
return;
396396

397397
Assert.That(
398-
await fs.GetFilesAsync("/", "**").CountAsync(),
399-
Is.Not.Zero);
398+
await fs.GetFilesAsync("/", "**").AnyAsync(),
399+
Is.True);
400400

401401
await foreach (var file in fs.GetFilesAsync("/", "**"))
402402
Assert.That(() => file.DeleteAsync(), Throws.Exception);
@@ -705,8 +705,8 @@ public async Task Directory_Create_For_ExistingDirectory()
705705
return;
706706

707707
Assert.That(
708-
await fs.GetDirectoriesAsync("/", "**").CountAsync(),
709-
Is.Not.Zero);
708+
await fs.GetDirectoriesAsync("/", "**").AnyAsync(),
709+
Is.True);
710710

711711
await foreach (var directory in fs.GetDirectoriesAsync("/", "**"))
712712
await directory.CreateAsync();

0 commit comments

Comments
 (0)