Skip to content

Commit

Permalink
feat: hasvalue indication on non-nullable dbase values
Browse files Browse the repository at this point in the history
  • Loading branch information
yreynhout authored and CumpsD committed Mar 5, 2020
1 parent 2d693b6 commit a3219d7
Show file tree
Hide file tree
Showing 19 changed files with 181 additions and 5 deletions.
2 changes: 2 additions & 0 deletions src/Be.Vlaanderen.Basisregisters.Shaperon/DbaseBoolean.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ public DbaseBoolean(DbaseField field, bool value) : base(field)
Value = value;
}

public bool HasValue => _value.HasValue;

public bool Value
{
get
Expand Down
2 changes: 2 additions & 0 deletions src/Be.Vlaanderen.Basisregisters.Shaperon/DbaseDateTime.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ public bool AcceptsValue(DateTime value)
return true;
}

public bool HasValue => _value != null;

public DbaseDateTimeOptions Options { get; }

private bool TryGetValue(out DateTime value)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ public bool AcceptsValue(DateTimeOffset value)
return true;
}

public bool HasValue => _value != null;

public DbaseDateTimeOffsetOptions Options { get; }

private bool TryGetValue(out DateTimeOffset value)
Expand Down
2 changes: 2 additions & 0 deletions src/Be.Vlaanderen.Basisregisters.Shaperon/DbaseDecimal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ public bool AcceptsValue(decimal? value)
return rounded.ToString("F", Provider).Length <= Field.Length.ToInt32();
}

public bool HasValue => _value.HasValue;

public decimal Value
{
get
Expand Down
2 changes: 2 additions & 0 deletions src/Be.Vlaanderen.Basisregisters.Shaperon/DbaseDouble.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ public bool AcceptsValue(double value)
return rounded.ToString("F", Provider).Length <= Field.Length.ToInt32();
}

public bool HasValue => _value.HasValue;

public double Value
{
get
Expand Down
9 changes: 4 additions & 5 deletions src/Be.Vlaanderen.Basisregisters.Shaperon/DbaseInt16.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,13 @@ public DbaseInt16(DbaseField field, short value) : base(field)
Value = value;
}

public bool AcceptsValue(short? value)
public bool AcceptsValue(short value)
{
if (value.HasValue)
return FormatAsString(value.Value).Length <= Field.Length.ToInt32();

return true;
return FormatAsString(value).Length <= Field.Length.ToInt32();
}

public bool HasValue => _value.HasValue;

public short Value
{
get
Expand Down
2 changes: 2 additions & 0 deletions src/Be.Vlaanderen.Basisregisters.Shaperon/DbaseInt32.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ public bool AcceptsValue(int value)
return FormatAsString(value).Length <= Field.Length.ToInt32();
}

public bool HasValue => _value.HasValue;

public int Value
{
get
Expand Down
2 changes: 2 additions & 0 deletions src/Be.Vlaanderen.Basisregisters.Shaperon/DbaseSingle.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ public bool AcceptsValue(float value)
return rounded.ToString("F", Provider).Length <= Field.Length.ToInt32();
}

public bool HasValue => _value.HasValue;

public float Value
{
get
Expand Down
2 changes: 2 additions & 0 deletions src/Be.Vlaanderen.Basisregisters.Shaperon/DbaseString.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ public bool AcceptsValue(string value)
return true;
}

public bool HasValue => _value != null;

public string Value
{
get => _value;
Expand Down
26 changes: 26 additions & 0 deletions test/Be.Vlaanderen.Basisregisters.Shaperon.Tests/Customizations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -697,6 +697,32 @@ public static void CustomizeDbaseString(this IFixture fixture)
.OmitAutoProperties());
}

public static void CustomizeDbaseStringWithoutValue(this IFixture fixture)
{
fixture.Customize<DbaseString>(
customization =>
customization
.FromFactory<int>(
value =>
{
using (var random = new PooledRandom(value))
{
var length = new DbaseFieldLength(random.Next(1, 255));
return new DbaseString(
new DbaseField(
fixture.Create<DbaseFieldName>(),
DbaseFieldType.Character,
fixture.Create<ByteOffset>(),
length,
new DbaseDecimalCount(0)
)
);
}
}
)
.OmitAutoProperties());
}

public static void CustomizeDbaseInt32(this IFixture fixture)
{
fixture.Customize<DbaseInt32>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,5 +274,20 @@ public void WriterCanNotBeNull()
new GuardClauseAssertion(_fixture)
.Verify(new Methods<DbaseBoolean>().Select(instance => instance.Write(null)));
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithValue()
{
var sut = _fixture.Create<DbaseBoolean>();
Assert.True(sut.HasValue);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithoutValue()
{
_fixture.CustomizeDbaseBooleanWithoutValue();
var sut = _fixture.Create<DbaseBoolean>();
Assert.False(sut.HasValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -146,5 +146,20 @@ public void CanNotReadPastEndOfStream()
}
}
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithValue()
{
var sut = _fixture.Create<DbaseDateTimeOffset>();
Assert.True(sut.HasValue);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithoutValue()
{
_fixture.CustomizeDbaseDateTimeOffsetWithoutValue();
var sut = _fixture.Create<DbaseDateTimeOffset>();
Assert.False(sut.HasValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -146,5 +146,20 @@ public void CanNotReadPastEndOfStream()
}
}
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithValue()
{
var sut = _fixture.Create<DbaseDateTime>();
Assert.True(sut.HasValue);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithoutValue()
{
_fixture.CustomizeDbaseDateTimeWithoutValue();
var sut = _fixture.Create<DbaseDateTime>();
Assert.False(sut.HasValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -367,5 +367,20 @@ public void WritesExcessDecimalsAsZero()
}
}
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithValue()
{
var sut = _fixture.Create<DbaseDecimal>();
Assert.True(sut.HasValue);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithoutValue()
{
_fixture.CustomizeDbaseDecimalWithoutValue();
var sut = _fixture.Create<DbaseDecimal>();
Assert.False(sut.HasValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -367,5 +367,20 @@ public void WritesExcessDecimalsAsZero()
}
}
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithValue()
{
var sut = _fixture.Create<DbaseDouble>();
Assert.True(sut.HasValue);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithoutValue()
{
_fixture.CustomizeDbaseDoubleWithoutValue();
var sut = _fixture.Create<DbaseDouble>();
Assert.False(sut.HasValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -264,5 +264,20 @@ public void CanNotReadPastEndOfStream()
}
}
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithValue()
{
var sut = _fixture.Create<DbaseInt16>();
Assert.True(sut.HasValue);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithoutValue()
{
_fixture.CustomizeDbaseInt16WithoutValue();
var sut = _fixture.Create<DbaseInt16>();
Assert.False(sut.HasValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -261,5 +261,20 @@ public void CanNotReadPastEndOfStream()
}
}
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithValue()
{
var sut = _fixture.Create<DbaseInt32>();
Assert.True(sut.HasValue);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithoutValue()
{
_fixture.CustomizeDbaseInt32WithoutValue();
var sut = _fixture.Create<DbaseInt32>();
Assert.False(sut.HasValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -367,5 +367,20 @@ public void WritesExcessDecimalsAsZero()
}
}
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithValue()
{
var sut = _fixture.Create<DbaseSingle>();
Assert.True(sut.HasValue);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithoutValue()
{
_fixture.CustomizeDbaseSingleWithoutValue();
var sut = _fixture.Create<DbaseSingle>();
Assert.False(sut.HasValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -204,5 +204,20 @@ public void AcceptsStringValueReturnsExpectedResult(int length, string value, bo

Assert.Equal(accepted, result);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithValue()
{
var sut = _fixture.Create<DbaseString>();
Assert.True(sut.HasValue);
}

[Fact]
public void HasValueReturnsExpectedResultWhenWithoutValue()
{
_fixture.CustomizeDbaseStringWithoutValue();
var sut = _fixture.Create<DbaseString>();
Assert.False(sut.HasValue);
}
}
}

0 comments on commit a3219d7

Please sign in to comment.