< Summary - Helper.Tests

Information
Class: Configuration.Helper.FileSettingsStore
Assembly: Configuration.Helper
File(s): D:\a\NuGetPackages\NuGetPackages\src\Helper\Configuration.Helper\SettingsStore\FileSettingsStore.cs
Tag: 3_8508158812
Line coverage
100%
Covered lines: 56
Uncovered lines: 0
Coverable lines: 56
Total lines: 123
Line coverage: 100%
Branch coverage
100%
Covered branches: 12
Total branches: 12
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
Create(...)100%66100%
CreateAsync()100%22100%
Initialize(...)100%22100%
InitializeAsync()100%22100%

File(s)

D:\a\NuGetPackages\NuGetPackages\src\Helper\Configuration.Helper\SettingsStore\FileSettingsStore.cs

#LineLine coverage
 1namespace Configuration.Helper;
 2
 3/// <summary>Settings Store factory implementation using a Windows disk file.</summary>
 4public sealed class FileSettingsStore : SettingsStoreBase
 5{
 6  #region Factory Pattern
 7
 8  /// <inheritdoc />
 409  private FileSettingsStore()
 8010  { }
 11
 12  /// <summary>
 13  /// Synchronous factory method to create an ISettingsStore object from a File System configuration file.
 14  /// </summary>
 15  /// <param name="configFile">Full path and file name of the configuration file.
 16  /// When no value is passed a new object will be created without a location.</param>
 17  /// <returns>FileSettingsStore object implementing the ISettingStore interface.</returns>
 18  /// <exception cref="ArgumentNullException">Thrown if the parameter is <see langword="null"/>.</exception>
 19  public static ISettingsStore Create( string configFile = "" )
 3820  {
 21    // Check the required parameter is supplied
 22    const string cMethod = @"FileSettingsStore.Create";
 4023    if( null == configFile ) { throw new ArgumentNullException( nameof( configFile ), cMethod ); }
 24
 25    // Check the parameter has a value
 3726    configFile = configFile.Trim();
 3727    FileSettingsStore retValue = new();
 3728    if( configFile.Length == 0 )
 1429    {
 1430      retValue.IsInitialized = true;
 1431      return retValue;
 32    }
 33
 34    // Create a Settings Store using a disk file name
 2335    FileInfo? fileInfo = IOHelper.GetFileInfo( configFile );
 9236    if( fileInfo is not null ) { retValue.Initialize( fileInfo ); }
 37
 2338    return retValue;
 3739  }
 40
 41  /// <summary>
 42  /// Asynchronous factory method to create an ISettingsStore object from a File System configuration file.
 43  /// </summary>
 44  /// <param name="configFile">Configuration file containing the settings.</param>
 45  /// <returns>FileSettingsStore object implementing the ISettingStore interface.</returns>
 46  /// <exception cref="ArgumentNullException">Thrown if the parameter is <see langword="null"/>.</exception>
 47  public static async Task<ISettingsStore> CreateAsync( FileInfo configFile )
 448  {
 49    // Check the required parameter is supplied
 50    const string cMethod = @"FileSettingsStore.CreateAsync";
 651    if( null == configFile ) { throw new ArgumentNullException( nameof( configFile ), cMethod ); }
 52
 53    // Create a Settings Store using a disk file
 354    FileSettingsStore retValue = new();
 355    await retValue.InitializeAsync( configFile );
 56
 357    return retValue;
 358  }
 59
 60  #endregion
 61
 62  #region Private Methods
 63
 64  private void Initialize( FileInfo configFile )
 2365  {
 66    // Return an uninitialized Setting Store if the file does not exist
 2567    if( !configFile.Exists ) { return; }
 68
 69    // Store the configuration file extension
 2270    fileExtension = IOHelper.GetExtension( configFile.Name ).ToLower();
 71
 2272    Source = IOHelper.CheckIfLocal( configFile.FullName );
 73    try
 2274    {
 75      // Initialize the Setting Store
 2276      using( MemoryStream stream = new() )
 2277      {
 78        // Copy the stream and place in a stream reader
 2279        configFile.OpenRead().CopyTo( stream );
 2280        stream.Position = 0;
 2281        using StreamReader reader = new( stream );
 82        // Initialize the setting store from the stream reader
 2283        string config = reader.ReadToEnd();
 2284        LoadFromStream( ref config );
 2085      }
 2086      Location = configFile.FullName;
 2087      IsInitialized = true;
 2088    }
 689    catch( Exception ) { } // Do nothing - IsInitialized will be False
 2390  }
 91
 92  /// <summary>Initializes a Setting Store asynchronously using a configuration disk file.</summary>
 93  /// <param name="configFile">Configuration file containing the settings.</param>
 94  private async Task InitializeAsync( FileInfo configFile )
 395  {
 96    // Return an uninitialized Setting Store if the file does not exist
 597    if( !configFile.Exists ) { return; }
 98
 99    // Store the configuration file extension
 2100    fileExtension = IOHelper.GetExtension( configFile.Name ).ToLower();
 101
 2102    Source = IOHelper.CheckIfLocal( configFile.FullName );
 103    try
 2104    {
 105      // Initialize the Setting Store
 2106      using( MemoryStream stream = new() )
 2107      {
 108        // Copy the stream and place in a stream reader
 2109        await configFile.OpenRead().CopyToAsync( stream );
 2110        stream.Position = 0;
 2111        using StreamReader reader = new( stream );
 112        // Initialize the setting store from the stream reader
 2113        string config = await reader.ReadToEndAsync();
 2114        LoadFromStream( ref config );
 1115      }
 1116      Location = configFile.FullName;
 1117      IsInitialized = true;
 1118    }
 3119    catch( Exception ) { } // Do nothing - IsInitialized will be False
 3120  }
 121
 122  #endregion
 123}