Skip to content

Commit

Permalink
Adress PR comments.
Browse files Browse the repository at this point in the history
  • Loading branch information
atmoos committed Mar 28, 2024
1 parent eb4301a commit 5497da5
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ public class FrequencySupportTest : IInjectedUnitTester<Frequency>
{

[Theory]
[MemberData(nameof(InjectingAreas))]
[MemberData(nameof(InjectingFrequencies))]
public void DeserializationSupportsInjectedUnits(Frequency quantity)
{
const Double scalar = 2;
Time expectedTime = scalar / quantity;
Frequency deserializedFrequency = quantity.SupportsSerialization();

Frequency deserializedFrequency = quantity.SupportsSerialization();
Time actualTimeFromDeserializedFrequency = scalar / deserializedFrequency;

Assert.Equal(expectedTime.ToString(), actualTimeFromDeserializedFrequency.ToString());
}

public static IEnumerable<Object[]> InjectingAreas()
public static IEnumerable<Object[]> InjectingFrequencies()
{
static IEnumerable<Frequency> Interesting()
{
Expand Down
1 change: 0 additions & 1 deletion source/Quantities.Test/Measures/Expect.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ public static Polynomial ToBeInverseOf<TMeasure>(String expectedRepresentation)
Assert.Same(expected, actual);
Assert.Equal(expectedRepresentation, actual.ToString());
return (Polynomial)result;

}

public static Polynomial ToBeProductOf<TLeft, TRight>()
Expand Down
2 changes: 2 additions & 0 deletions source/Quantities.Units/Quantities.Units.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
</PropertyGroup>

<ItemGroup>
<!-- Do not merge in this state! Quantities.Units must reference the nuget packet, not the project!
Revert the entire file before merging! -->
<ProjectReference Include="..\Quantities\Quantities.csproj" />
<!--PackageReference Include="Atmoos.Quantities" Version="1.1.1" /-->
</ItemGroup>
Expand Down
7 changes: 3 additions & 4 deletions source/Quantities/Core/Quantity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,18 +74,17 @@ public static Quantity Of<TMeasure>(in Double value)
public static Quantity operator /(Quantity left, Double scalar) => new(left.value / scalar, in left.measure);
public static Quantity operator /(Double scalar, Quantity right)
{
var inverse = right.measure.Invert();
Result inverse = right.measure.Invert();
return new(inverse * scalar / right.value, inverse);
}

public static Quantity operator +(Quantity left, Quantity right)
{
var rightValue = left.Project(in right);
Double rightValue = left.Project(in right);
return new(left.value + rightValue, in left.measure);
}
public static Quantity operator -(Quantity left, Quantity right)
{
var rightValue = left.Project(in right);
Double rightValue = left.Project(in right);
return new(left.value - rightValue, in left.measure);
}
public static implicit operator Double(Quantity self) => self.value;
Expand Down
6 changes: 3 additions & 3 deletions source/Quantities/Creation/Creators.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace Quantities.Creation;

internal delegate Measure ChooseMeasure(Factory factory);
internal delegate Measure MeasureSelector(Factory factory);

public readonly struct Scalar<TUnit>
where TUnit : IUnit, IDimension
Expand All @@ -16,9 +16,9 @@ namespace Quantities.Creation;
public Quotient<TUnit, TDenominator> Per<TDenominator>(in Scalar<TDenominator> denominator)
where TDenominator : IUnit, IDimension => new(denominator.factory.Inject(this.factory.Quotient));
internal Quantity Create(in Double value) => new(in value, this.factory.Create());
internal Quantity Create(in Double value, ChooseMeasure choose) => new(in value, choose(this.factory));
internal Quantity Create(in Double value, MeasureSelector selectMeasure) => new(in value, selectMeasure(this.factory));
internal Quantity Transform(in Quantity other) => other.Project(this.factory.Create());
internal Quantity Transform(in Quantity other, ChooseMeasure choose) => other.Project(choose(this.factory));
internal Quantity Transform(in Quantity other, MeasureSelector selectMeasure) => other.Project(selectMeasure(this.factory));
}

public readonly struct Product<TLeft, TRight>
Expand Down
8 changes: 4 additions & 4 deletions source/Quantities/Serialization/Injectors.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ internal sealed class PowerInjector<TDim> : IInject<IBuilder>
public IBuilder Inject<TMeasure>() where TMeasure : IMeasure => new Builder<Power<TDim, TMeasure>>();
}

internal sealed class AliasInjector<TLinear>(IInject<IBuilder> inject) : IInject<IBuilder>
internal sealed class AliasInjector<TLinear>(IInject<IBuilder> injector) : IInject<IBuilder>
where TLinear : IMeasure, ILinear
{
public IBuilder Inject<TMeasure>() where TMeasure : IMeasure => inject.Inject<Alias<TMeasure, TLinear>>();
public IBuilder Inject<TMeasure>() where TMeasure : IMeasure => injector.Inject<Alias<TMeasure, TLinear>>();
}

internal sealed class InversionInjector<TInverse>(IInject<IBuilder> inject) : IInject<IBuilder>
internal sealed class InversionInjector<TInverse>(IInject<IBuilder> injector) : IInject<IBuilder>
where TInverse : IMeasure, ILinear
{
public IBuilder Inject<TMeasure>() where TMeasure : IMeasure => inject.Inject<Inverse<TMeasure, TInverse>>();
public IBuilder Inject<TMeasure>() where TMeasure : IMeasure => injector.Inject<Inverse<TMeasure, TInverse>>();
}

internal sealed class QuotientInjector : IInject<IBuilder>
Expand Down
3 changes: 2 additions & 1 deletion source/Quantities/Units/ISystemInject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ public interface ISystemInject<out TDimension>
{
static abstract T Inject<T>(ISystems<TDimension, T> basis);
}

// ToDo: Consider renaming this "PowerOf", or similar. Alias is a rather silly name...
public interface IAlias<out TDimension> : ISystemInject<TDimension>
where TDimension : IDimension
{ /* marker */ }


public interface IInvertible<out TDimension> : ISystemInject<TDimension>
where TDimension : IDimension
{ /* marker */ }

0 comments on commit 5497da5

Please sign in to comment.