Skip to content

Commit

Permalink
Merge pull request #74 from jonisavo/feature/refactor-logger
Browse files Browse the repository at this point in the history
Rename IUIComponentLogger to ILogger, make it usable by other types
  • Loading branch information
jonisavo authored Oct 23, 2022
2 parents 9ee04f4 + 4af872d commit 8ad91da
Show file tree
Hide file tree
Showing 12 changed files with 46 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@
namespace UIComponents.Tests
{
[TestFixture]
public class UIComponentDebugLoggerTests
public class DebugLoggerTests
{
private class TestComponent : UIComponent {}

private TestComponent _testComponent;

private UIComponentDebugLogger _logger;
private DebugLogger _logger;

[SetUp]
public void SetUp()
{
_testComponent = new TestComponent();
_logger = new UIComponentDebugLogger();
_logger = new DebugLogger();
}

[Test]
Expand Down
4 changes: 2 additions & 2 deletions Assets/UIComponents.Tests/ProvideAttributeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ private partial class ComponentWithDependencies : UIComponent
}

private TestBed _testBed;
private IUIComponentLogger _mockLogger;
private ILogger _mockLogger;

[SetUp]
public void SetUp()
{
_mockLogger = Substitute.For<IUIComponentLogger>();
_mockLogger = Substitute.For<ILogger>();
_testBed = TestBed.Create()
.WithSingleton(_mockLogger)
.Build();
Expand Down
4 changes: 2 additions & 2 deletions Assets/UIComponents.Tests/StylesheetAttributeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ private partial class InheritedComponent : UIComponentWithTwoStylesheets {}

private TestBed _testBed;
private IAssetResolver _mockResolver;
private IUIComponentLogger _mockLogger;
private ILogger _mockLogger;

[SetUp]
public void SetUp()
{
_mockLogger = Substitute.For<IUIComponentLogger>();
_mockLogger = Substitute.For<ILogger>();
_mockResolver = MockUtilities.CreateMockResolver();
_mockResolver.LoadAsset<StyleSheet>("Assets/StylesheetOne.uss")
.Returns(Task.FromResult(ScriptableObject.CreateInstance<StyleSheet>()));
Expand Down
13 changes: 0 additions & 13 deletions Assets/UIComponents.Tests/UIComponentTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -182,18 +182,5 @@ public void Bare_Component_Initializes_Synchronously()
Assert.That(component.Initialized, Is.True);
}
}

[TestFixture]
public partial class GetTypeName
{
private partial class TestComponent : UIComponent {}

[Test]
public void ShouldReturnTypeName()
{
var component = new TestComponent();
Assert.That(nameof(TestComponent), Is.EqualTo(component.GetTypeName()));
}
}
}
}
25 changes: 25 additions & 0 deletions Assets/UIComponents/Core/DebugLogger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using UnityEngine;

namespace UIComponents
{
/// <summary>
/// The default logger for UIComponents. Uses Debug.Log.
/// </summary>
public class DebugLogger : ILogger
{
public void Log(string message, object caller)
{
Debug.LogFormat("[{0}] {1}", caller.GetType().Name, message);
}

public void LogWarning(string message, object caller)
{
Debug.LogWarningFormat("[{0}] {1}", caller.GetType().Name, message);
}

public void LogError(string message, object caller)
{
Debug.LogErrorFormat("[{0}] {1}", caller.GetType().Name, message);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,27 @@
/// <summary>
/// An interface for logging information in UIComponents.
/// </summary>
public interface IUIComponentLogger
public interface ILogger
{
/// <summary>
/// Logs a regular message.
/// </summary>
/// <param name="message">Message to log</param>
/// <param name="component">UIComponent which logged this message</param>
void Log(string message, UIComponent component);
/// <param name="caller">Object which logged this message</param>
void Log(string message, object caller);

/// <summary>
/// Logs a warning.
/// </summary>
/// <param name="message">Message to log</param>
/// <param name="component">UIComponent which logged this message</param>
void LogWarning(string message, UIComponent component);
/// <param name="caller">Object which logged this message</param>
void LogWarning(string message, object caller);

/// <summary>
/// Logs an error.
/// </summary>
/// <param name="message">Message to log</param>
/// <param name="component">UIComponent which logged this message</param>
void LogError(string message, UIComponent component);
/// <param name="caller">Object which logged this message</param>
void LogError(string message, object caller);
}
}
File renamed without changes.
21 changes: 6 additions & 15 deletions Assets/UIComponents/Core/UIComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ namespace UIComponents
/// <seealso cref="StylesheetAttribute"/>
/// <seealso cref="DependencyAttribute"/>
/// <seealso cref="ResourcesAssetResolver"/>
/// <seealso cref="UIComponentDebugLogger"/>
/// <seealso cref="DebugLogger"/>
[Dependency(typeof(IAssetResolver), provide: typeof(ResourcesAssetResolver))]
[Dependency(typeof(IUIComponentLogger), provide: typeof(UIComponentDebugLogger))]
[Dependency(typeof(ILogger), provide: typeof(DebugLogger))]
public abstract class UIComponent : VisualElement
{
/// <summary>
Expand All @@ -42,10 +42,10 @@ public abstract class UIComponent : VisualElement
public Task<UIComponent> InitializationTask => _initCompletionSource.Task;

/// <summary>
/// The IUIComponentLogger used by this UIComponent.
/// Defaults to <see cref="UIComponentDebugLogger"/>.
/// The logger used by this UIComponent.
/// Defaults to <see cref="DebugLogger"/>.
/// </summary>
protected readonly IUIComponentLogger Logger;
protected readonly ILogger Logger;

private readonly DependencyInjector _dependencyInjector;

Expand All @@ -70,7 +70,7 @@ protected UIComponent()

_dependencyInjector = DiContext.Current.GetInjector(_componentType);
AssetResolver = Provide<IAssetResolver>();
Logger = Provide<IUIComponentLogger>();
Logger = Provide<ILogger>();
UIC_PopulateProvideFields();

DependencySetupProfilerMarker.End();
Expand Down Expand Up @@ -179,15 +179,6 @@ public IEnumerator WaitForInitializationEnumerator()
yield return _initCompletionSource.Task.AsEnumerator();
}

/// <summary>
/// Returns the component's type's name.
/// </summary>
/// <returns>Type name</returns>
public string GetTypeName()
{
return _componentType.Name;
}

/// <summary>
/// Returns a dependency. Throws a <see cref="MissingProviderException"/>
/// if the dependency can not be provided.
Expand Down
25 changes: 0 additions & 25 deletions Assets/UIComponents/Core/UIComponentDebugLogger.cs

This file was deleted.

2 changes: 1 addition & 1 deletion Assets/UIComponents/Testing/TestBed.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public async Task<TComponent> CreateComponentAsync<TComponent>(Func<TComponent>
var task = await Task.WhenAny(initTask, timeoutTask);

if (task == timeoutTask)
throw new TestBedTimeoutException(component.GetTypeName(), (int) AsyncTimeout.TotalMilliseconds);
throw new TestBedTimeoutException(component.GetType().Name, (int) AsyncTimeout.TotalMilliseconds);

var initializedComponent = await initTask;

Expand Down

0 comments on commit 8ad91da

Please sign in to comment.