|
9 | 9 | namespace System.IO.Abstractions.Tests |
10 | 10 | { |
11 | 11 | [TestFixture] |
12 | | - public class ApiCompletenessTests |
| 12 | + public class ApiParityTests |
13 | 13 | { |
14 | 14 | [Test] |
15 | 15 | public void File() => |
16 | | - AssertTypeParity( |
| 16 | + AssertParity( |
17 | 17 | typeof(System.IO.File), |
18 | 18 | typeof(System.IO.Abstractions.FileBase) |
19 | 19 | ); |
20 | 20 |
|
21 | 21 | [Test] |
22 | 22 | public void FileInfo() => |
23 | | - AssertTypeParity( |
| 23 | + AssertParity( |
24 | 24 | typeof(System.IO.FileInfo), |
25 | 25 | typeof(System.IO.Abstractions.FileInfoBase) |
26 | 26 | ); |
27 | 27 |
|
28 | 28 | [Test] |
29 | 29 | public void Directory() => |
30 | | - AssertTypeParity( |
| 30 | + AssertParity( |
31 | 31 | typeof(System.IO.Directory), |
32 | 32 | typeof(System.IO.Abstractions.DirectoryBase) |
33 | 33 | ); |
34 | 34 |
|
35 | 35 | [Test] |
36 | 36 | public void DirectoryInfo() => |
37 | | - AssertTypeParity( |
| 37 | + AssertParity( |
38 | 38 | typeof(System.IO.DirectoryInfo), |
39 | 39 | typeof(System.IO.Abstractions.DirectoryInfoBase) |
40 | 40 | ); |
41 | 41 |
|
42 | 42 | [Test] |
43 | 43 | public void DriveInfo() => |
44 | | - AssertTypeParity( |
| 44 | + AssertParity( |
45 | 45 | typeof(System.IO.DriveInfo), |
46 | 46 | typeof(System.IO.Abstractions.DriveInfoBase) |
47 | 47 | ); |
48 | 48 |
|
49 | 49 | [Test] |
50 | 50 | public void Path() => |
51 | | - AssertTypeParity( |
| 51 | + AssertParity( |
52 | 52 | typeof(System.IO.Path), |
53 | 53 | typeof(System.IO.Abstractions.PathBase) |
54 | 54 | ); |
55 | 55 |
|
56 | | - private void AssertTypeParity(Type referenceType, Type abstractionType) |
| 56 | + private void AssertParity(Type referenceType, Type abstractionType) |
57 | 57 | { |
58 | | - const BindingFlags bindingFlags = Instance | Static | Public | FlattenHierarchy; |
59 | | - var expectedMembers = referenceType |
60 | | - .GetMembers(bindingFlags) |
| 58 | + static IEnumerable<string> GetMembers(Type type) => type |
| 59 | + .GetMembers(bindingAttr: Instance | Static | Public | FlattenHierarchy) |
61 | 60 | .Select(x => x.ToString()) |
62 | | - .OrderBy(x => x, StringComparer.Ordinal) |
| 61 | + .OrderBy(x => x, StringComparer.Ordinal); |
| 62 | + var referenceMembers = GetMembers(referenceType) |
63 | 63 | .Select(x => x.Replace("System.IO.FileStream", "System.IO.Stream")) |
64 | 64 | .Select(x => x.Replace("System.IO.FileSystemInfo", "System.IO.Abstractions.IFileSystemInfo")) |
65 | 65 | .Select(x => x.Replace("System.IO.FileInfo", "System.IO.Abstractions.IFileInfo")) |
66 | 66 | .Select(x => x.Replace("System.IO.DirectoryInfo", "System.IO.Abstractions.IDirectoryInfo")) |
67 | 67 | .Select(x => x.Replace("System.IO.DriveInfo", "System.IO.Abstractions.IDriveInfo")); |
68 | | - var implementedMembers = abstractionType |
69 | | - .GetMembers(bindingFlags) |
70 | | - .Select(x => x.ToString()) |
71 | | - .OrderBy(x => x, StringComparer.Ordinal) |
| 68 | + var abstractionMembers = GetMembers(abstractionType) |
72 | 69 | .Where(x => !x.Contains("op_Implicit")) |
73 | 70 | .Where(x => x != "System.IO.Abstractions.IFileSystem get_FileSystem()") |
74 | 71 | .Where(x => x != "System.IO.Abstractions.IFileSystem FileSystem"); |
75 | | - |
76 | 72 | var diff = new ApiDiff( |
77 | | - implementedMembers.Except(expectedMembers), |
78 | | - expectedMembers.Except(implementedMembers) |
| 73 | + extraMembers: abstractionMembers.Except(referenceMembers), |
| 74 | + missingMembers: referenceMembers.Except(abstractionMembers) |
79 | 75 | ); |
80 | 76 | Snapshot.Match(diff, SnapshotNameExtension.Create(snapshotSuffix)); |
81 | 77 | } |
|
0 commit comments