Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions source/AccUnit/AccessCodeLib.AccUnit.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,10 @@
<Compile Include="CodeCoverage\CodeModuleTracker.cs" />
<Compile Include="CodeCoverage\ICodeCoverageTracker.cs" />
<Compile Include="CodeCoverage\ProcedureTracker.cs" />
<Compile Include="Configuration\AccUnitInfo.cs" />
<Compile Include="Configuration\ErrorTrappingObserver.cs" />
<Compile Include="Integration\IgnoreInfo.cs" />
<Compile Include="Integration\UserSettings.cs" />
<Compile Include="Interfaces\IVBATestBuilder.cs" />
<Compile Include="Interfaces\VbaErrorTrapping.cs" />
<Compile Include="Integration\TestResultCollector.cs" />
Expand Down Expand Up @@ -250,6 +252,7 @@
<DependentUpon>Settings.settings</DependentUpon>
</Compile>
<Compile Include="TestRunner\VbaTestRunner.cs" />
<Compile Include="Tools\UserSettings.cs" />
<Compile Include="Tools\VBA\AssemblyInfo.cs" />
<Compile Include="Tools\ITestClassGenerator.cs" />
<Compile Include="Tools\Templates\BuiltInTemplateSources.cs" />
Expand Down
30 changes: 30 additions & 0 deletions source/AccUnit/Configuration/AccUnitInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Text;

namespace AccessCodeLib.AccUnit.Configuration
{
public class AccUnitInfo
{
public static string FileVersion
{
get
{
var version = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
return version.FileVersion;
}
}

public static string Copyright
{
get
{
var version = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
return version.LegalCopyright;
}
}
}
}
2 changes: 2 additions & 0 deletions source/AccUnit/Configuration/Configurator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
using AccessCodeLib.Common.VBIDETools;
using Microsoft.Vbe.Interop;
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;

namespace AccessCodeLib.AccUnit.Configuration
Expand Down
110 changes: 110 additions & 0 deletions source/AccUnit/Integration/UserSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
using AccessCodeLib.AccUnit.Properties;
using AccessCodeLib.Common.Tools.Logging;
using System;
using System.ComponentModel;

namespace AccessCodeLib.AccUnit
{
public class UserSettings
{
#region Static members

/// <summary>
/// Unloads the previously loaded instance provided via property Current.
/// This method is mainly needed to support testing the singleton implementation in property Current.
/// </summary>
public static void UnloadCurrent()
{
_current = null;
}

private static UserSettings _current;
public static UserSettings Current
{
get
{
if (_current == null)
{
_current = new UserSettings();
_current.Load();
}
return _current;
}
set
{
_current = value ?? throw new ArgumentNullException();
}
}

#endregion

private UserSettings()
{
}

public UserSettings Clone()
{
var clone = new UserSettings
{
ImportExportFolder = ImportExportFolder,
SeparatorChar = SeparatorChar,
SeparatorMaxLength = SeparatorMaxLength
};
return clone;
}

#region Load/Save

private void Load()
{
using (new BlockLogger())
{
ImportExportFolder = Settings.Default.ImportExportFolder;
SeparatorMaxLength = Settings.Default.SeparatorMaxLength;
SeparatorChar = Settings.Default.SeparatorChar;
}
}

public void Save()
{
Settings.Default.ImportExportFolder = ImportExportFolder;
Settings.Default.SeparatorMaxLength = SeparatorMaxLength;
Settings.Default.SeparatorChar = SeparatorChar;
Settings.Default.Save();
}

#endregion

#region Setting Properties

private string _importExportFolder;
public string ImportExportFolder
{
get
{
return _importExportFolder;
}
set
{
_importExportFolder = value.TrimEnd('\\', ' ').TrimStart();
}
}

[Category("Text output")]
[DefaultValue(60)]
[Description("")]
// ReSharper disable MemberCanBePrivate.Global
public int SeparatorMaxLength { get; set; }
// ReSharper restore MemberCanBePrivate.Global

[Category("Text output")]
[DefaultValue('-')]
[Description("")]
// ReSharper disable MemberCanBePrivate.Global
public char SeparatorChar { get; set; }
// ReSharper restore MemberCanBePrivate.Global


#endregion
}
}
6 changes: 3 additions & 3 deletions source/AccUnit/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("access-codelib.net")]
[assembly: AssemblyProduct("AccUnit")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyCopyright("© 2010-2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Expand All @@ -31,5 +31,5 @@
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.9.9.0")]
[assembly: AssemblyFileVersion("0.9.9.0")]
[assembly: AssemblyVersion("0.9.10.0")]
[assembly: AssemblyFileVersion("0.9.10.0")]
111 changes: 111 additions & 0 deletions source/AccUnit/Tools/UserSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
using AccessCodeLib.AccUnit.Properties;
using AccessCodeLib.AccUnit.Tools.Templates;
using AccessCodeLib.Common.Tools.Logging;
using System;

namespace AccessCodeLib.AccUnit.Tools
{
public class UserSettings
{
#region Static members

/// <summary>
/// Unloads the previously loaded instance provided via property Current.
/// This method is mainly needed to support testing the singleton implementation in property Current.
/// </summary>
public static void UnloadCurrent()
{
_current = null;
}

private static UserSettings _current;
public static UserSettings Current
{
get
{
if (_current == null)
{
_current = new UserSettings();
_current.Load();
}
return _current;
}
set
{
_current = value ?? throw new ArgumentNullException();
}
}

#endregion

private UserSettings()
{
}

public UserSettings Clone()
{
var clone = new UserSettings
{
TemplateFolder = TemplateFolder,
TestTemplates = TestTemplates,
UserDefinedTemplates = UserDefinedTemplates,
TestMethodTemplate = TestMethodTemplate
};
return clone;
}

#region Load/Save

private void Load()
{
using (new BlockLogger())
{
TemplateFolder = Settings.Default.TemplateFolder;
TestMethodTemplate = GetTestMethodTemplate();
TestTemplates = new TestTemplateCollection();
UserDefinedTemplates = new TestTemplateCollection(TestTemplates.UserDefinedTemplates);
}
}

private static string GetTestMethodTemplate()
{
var savedTemplate = Settings.Default.TestMethodTemplate;
return !string.IsNullOrEmpty(savedTemplate) ? savedTemplate : Resources.DefaultTestMethodTemplate;
}

public void Save()
{
using (new BlockLogger())
{
Settings.Default.TestMethodTemplate = TestMethodTemplate;
Settings.Default.TemplateFolder = TemplateFolder;
Settings.Default.Save();
UserDefinedTemplates.Save();
TestTemplates = new TestTemplateCollection();
}
}

#endregion

#region Setting Properties

private string _templateFolder;
public string TemplateFolder
{
get
{
return _templateFolder;
}
set
{
_templateFolder = value.TrimEnd('\\', ' ').TrimStart();
}
}

public TestTemplateCollection TestTemplates { get; private set; }
public TestTemplateCollection UserDefinedTemplates { get; private set; }
public string TestMethodTemplate { get; set; }

#endregion
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Microsoft.Vbe.Interop;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace AccessCodeLib.Common.VBIDETools.Commandbar
{
Expand All @@ -15,7 +16,7 @@ public VbeCommandBarAdapter(VBE vbe)
VBE = vbe;
}

public VBE VBE { get; }
public VBE VBE { get; private set; }

public CommandBar MenuBar
{
Expand Down Expand Up @@ -61,12 +62,10 @@ private CommandBar GetCommandBar(int index)
return foundControl.Index;
}
}
// ReSharper disable EmptyGeneralCatchClause
catch
{
// Don't mind if the control could not be found.
}
// ReSharper restore EmptyGeneralCatchClause

return null;
}
Expand Down Expand Up @@ -114,17 +113,18 @@ protected virtual void Dispose(bool disposing)

using (new BlockLogger())
{
DisposeUnManagedResources();

DisposeUnmanagedResources();
_disposed = true;
}
}

private void DisposeUnManagedResources()
private void DisposeUnmanagedResources()
{
using (new BlockLogger())
{

Marshal.ReleaseComObject(VBE);
VBE = null;

// issue #77: (http://accunit.access-codelib.net/bugs/view.php?id=77)
return;
/*
Expand Down
9 changes: 7 additions & 2 deletions source/Common/Common.VBIDETools/InvocationHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,22 @@ protected virtual void Dispose(bool disposing)

try
{
_target = null;
if (_target != null)
{
//Marshal.ReleaseComObject(_target); // --> RCW error ... Why?
_target = null;
}
}
catch (Exception ex)
{
Logger.Log(ex.Message);
}

// GC-Bereinigung wegen unmanaged res:
// GC clean up (instead of Marshal.ReleaseComObject)
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();

_disposed = true;
}
Expand Down
Loading