Skip to content

Commit 0830706

Browse files
committed
Adding base/derived check to BaseDimensions
1 parent 21d8459 commit 0830706

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

UnitsNet.Tests/BaseDimensionsTests.cs

+49-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,55 @@ namespace UnitsNet.Tests
55
public class BaseDimensionsTests
66
{
77
[Fact]
8-
public void EqualityWorksAsExpected()
8+
public void ConstructorImplementedCorrectly()
9+
{
10+
var baseDimensions = new BaseDimensions(1, 2, 3, 4, 5, 6, 7);
11+
12+
Assert.True(baseDimensions.Length == 1);
13+
Assert.True(baseDimensions.Mass == 2);
14+
Assert.True(baseDimensions.Time == 3);
15+
Assert.True(baseDimensions.Current == 4);
16+
Assert.True(baseDimensions.Temperature == 5);
17+
Assert.True(baseDimensions.Amount == 6);
18+
Assert.True(baseDimensions.LuminousIntensity == 7);
19+
}
20+
21+
[Theory]
22+
[InlineData(1, 0, 0, 0, 0, 0, 0)]
23+
[InlineData(0, 1, 0, 0, 0, 0, 0)]
24+
[InlineData(0, 0, 1, 0, 0, 0, 0)]
25+
[InlineData(0, 0, 0, 1, 0, 0, 0)]
26+
[InlineData(0, 0, 0, 0, 1, 0, 0)]
27+
[InlineData(0, 0, 0, 0, 0, 1, 0)]
28+
[InlineData(0, 0, 0, 0, 0, 0, 1)]
29+
public void IsBaseImplementedSuccessfully(int length, int mass, int time, int current, int temperature, int amount, int luminousIntensity)
30+
{
31+
var baseDimensions = new BaseDimensions(length, mass, time, current, temperature, amount, luminousIntensity);
32+
var derivedDimensions = new BaseDimensions(length * 2, mass * 2, time * 2, current * 2, temperature * 2, amount * 2, luminousIntensity * 2);
33+
34+
Assert.True(baseDimensions.IsBase());
35+
Assert.False(derivedDimensions.IsBase());
36+
}
37+
38+
[Theory]
39+
[InlineData(2, 0, 0, 0, 0, 0, 0)]
40+
[InlineData(0, 2, 0, 0, 0, 0, 0)]
41+
[InlineData(0, 0, 2, 0, 0, 0, 0)]
42+
[InlineData(0, 0, 0, 2, 0, 0, 0)]
43+
[InlineData(0, 0, 0, 0, 2, 0, 0)]
44+
[InlineData(0, 0, 0, 0, 0, 2, 0)]
45+
[InlineData(0, 0, 0, 0, 0, 0, 2)]
46+
public void IsDerivedImplementedSuccessfully(int length, int mass, int time, int current, int temperature, int amount, int luminousIntensity)
47+
{
48+
var baseDimensions = new BaseDimensions(length / 2, mass / 2, time / 2, current / 2, temperature / 2, amount / 2, luminousIntensity / 2);
49+
var derivedDimensions = new BaseDimensions(length, mass, time, current, temperature, amount, luminousIntensity);
50+
51+
Assert.False(baseDimensions.IsDerived());
52+
Assert.True(derivedDimensions.IsDerived());
53+
}
54+
55+
[Fact]
56+
public void EqualsWorksAsExpected()
957
{
1058
var baseDimensions1 = new BaseDimensions(1, 2, 3, 4, 5, 6, 7);
1159
var baseDimensions2 = new BaseDimensions(1, 2, 3, 4, 5, 6, 7);

UnitsNet/BaseDimensions.cs

+13
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
using System;
2323
using System.Text;
24+
using System.Linq;
2425

2526
namespace UnitsNet
2627
{
@@ -41,6 +42,18 @@ public BaseDimensions(int length, int mass, int time, int current, int temperatu
4142
LuminousIntensity = luminousIntensity;
4243
}
4344

45+
public bool IsBase()
46+
{
47+
var dimensionsArray = new int[]{Length, Mass, Time, Current, Temperature, Amount, LuminousIntensity};
48+
bool onlyOneEqualsOne = dimensionsArray.Where(dimension => dimension == 1).Take(2).Count() == 1;
49+
return onlyOneEqualsOne;
50+
}
51+
52+
public bool IsDerived()
53+
{
54+
return !IsBase();
55+
}
56+
4457
/// <inheritdoc />
4558
public override bool Equals(object obj)
4659
{

0 commit comments

Comments
 (0)