Skip to content

Commit

Permalink
Fix return original value when value is correct
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander van Delft committed Apr 12, 2024
1 parent ac2ad92 commit 98aa64c
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -431,8 +431,8 @@ public void VerifyTimeOfDayParameterTypeValidationAndCleanup()
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(this.valueSet.Manual[0], Is.EqualTo("14:00:12"));
Assert.That(this.valueSet.Computed[0], Is.EqualTo("14:00:12"));
Assert.That(this.valueSet.Reference[0], Is.EqualTo("17:49:30"));
Assert.That(this.valueSet.Computed[0], Is.EqualTo("0001-01-01T14:00:12.0000000Z"));
Assert.That(this.valueSet.Reference[0], Is.EqualTo("17:49:30.453Z"));
});

this.valueSet.Computed[0] = "0001-01-01T14:00:12.0000000";
Expand All @@ -441,19 +441,35 @@ public void VerifyTimeOfDayParameterTypeValidationAndCleanup()
Assert.Multiple(() =>
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(this.valueSet.Computed[0], Is.EqualTo("14:00:12"));
Assert.That(this.valueSet.Computed[0], Is.EqualTo("0001-01-01T14:00:12.0000000"));
});

this.valueSet.Manual[0] = "0001-01-02T14:00:12.0000000";
result = this.timeOfDayParameterType.ValidateAndCleanup(this.valueSet, null);
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Invalid));

result = this.timeOfDayParameterType.Validate(new DateTime(1, 1, 1, 12, 45, 35, DateTimeKind.Utc), out var cleanedValue);
result = this.timeOfDayParameterType.Validate(new DateTime(1, 1, 1, 12, 45, 35, DateTimeKind.Utc), out var cleanedValue1);

Assert.Multiple(() =>
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(cleanedValue, Is.EqualTo("12:45:35"));
Assert.That(cleanedValue1, Is.EqualTo("0001-01-01T12:45:35.0000000Z"));
});

result = this.timeOfDayParameterType.Validate(new DateTime(1, 1, 1, 12, 45, 35, DateTimeKind.Unspecified), out var cleanedValue2);

Assert.Multiple(() =>
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(cleanedValue2, Is.EqualTo("0001-01-01T12:45:35.0000000"));
});

result = this.timeOfDayParameterType.Validate(new DateTime(1, 1, 1, 12, 45, 35, DateTimeKind.Local), out var cleanedValue3);

Assert.Multiple(() =>
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(cleanedValue3, Is.EqualTo("0001-01-01T12:45:35.0000000"));
});

result = this.timeOfDayParameterType.Validate(new DateTime(2001, 1, 1, 12, 45, 35, DateTimeKind.Utc), out _);
Expand Down
27 changes: 21 additions & 6 deletions CDP4Common.Tests/Validation/DtoValueValidatorTestFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,6 @@ public void VerifyTextParameterTypeValidationAndCleanup()
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Invalid));
}


[Test]
public void VerifyTimeOfDayParameterTypeValidationAndCleanup()
{
Expand All @@ -432,8 +431,8 @@ public void VerifyTimeOfDayParameterTypeValidationAndCleanup()
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(this.valueSet.Manual[0], Is.EqualTo("14:00:12"));
Assert.That(this.valueSet.Computed[0], Is.EqualTo("14:00:12"));
Assert.That(this.valueSet.Reference[0], Is.EqualTo("17:49:30"));
Assert.That(this.valueSet.Computed[0], Is.EqualTo("0001-01-01T14:00:12.0000000Z"));
Assert.That(this.valueSet.Reference[0], Is.EqualTo("17:49:30.453Z"));
});

this.valueSet.Computed[0] = "0001-01-01T14:00:12.0000000";
Expand All @@ -442,19 +441,35 @@ public void VerifyTimeOfDayParameterTypeValidationAndCleanup()
Assert.Multiple(() =>
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(this.valueSet.Computed[0], Is.EqualTo("14:00:12"));
Assert.That(this.valueSet.Computed[0], Is.EqualTo("0001-01-01T14:00:12.0000000"));
});

this.valueSet.Manual[0] = "0001-01-02T14:00:12.0000000";
result = this.timeOfDayParameterType.ValidateAndCleanup(this.valueSet, null);
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Invalid));

result = this.timeOfDayParameterType.Validate(new DateTime(1, 1, 1, 12, 45, 35, DateTimeKind.Utc), out var cleanedValue);
result = this.timeOfDayParameterType.Validate(new DateTime(1, 1, 1, 12, 45, 35, DateTimeKind.Utc), out var cleanedValue1);

Assert.Multiple(() =>
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(cleanedValue1, Is.EqualTo("0001-01-01T12:45:35.0000000Z"));
});

result = this.timeOfDayParameterType.Validate(new DateTime(1, 1, 1, 12, 45, 35, DateTimeKind.Unspecified), out var cleanedValue2);

Assert.Multiple(() =>
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(cleanedValue2, Is.EqualTo("0001-01-01T12:45:35.0000000"));
});

result = this.timeOfDayParameterType.Validate(new DateTime(1, 1, 1, 12, 45, 35, DateTimeKind.Local), out var cleanedValue3);

Assert.Multiple(() =>
{
Assert.That(result.ResultKind, Is.EqualTo(ValidationResultKind.Valid));
Assert.That(cleanedValue, Is.EqualTo("12:45:35"));
Assert.That(cleanedValue3, Is.EqualTo("0001-01-01T12:45:35.0000000"));
});

result = this.timeOfDayParameterType.Validate(new DateTime(2001, 1, 1, 12, 45, 35, DateTimeKind.Utc), out _);
Expand Down
28 changes: 21 additions & 7 deletions CDP4Common/Validation/ObjectValueValidator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public static class ObjectValueValidator
/// </summary>
/// <param name="dateTime">The <see cref="DateTime" /> to check</param>
/// <returns>True if the provided <see cref="DateTime" /> is a defualt <see cref="DateTime" /></returns>
public static bool IsDefaultDateTime(this DateTime dateTime)
public static bool IsDefaultDate(this DateTime dateTime)
{
return dateTime.Year == 1 && dateTime.Month == 1 && dateTime.Day == 1;
}
Expand Down Expand Up @@ -477,9 +477,9 @@ public static ValidationResult ValidateTimeOfDay(this object value, out string c

var isDateTime = DateTime.TryParse(parsedString, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.RoundtripKind, out var dateTime);

if (isDateTime && dateTime.IsDefaultDateTime())
if (isDateTime && dateTime.IsDefaultDate())
{
cleanedValue = dateTime.ToString("HH:mm:ss");
cleanedValue = parsedString;
Logger.Debug("TimeOfDay {0} validated", parsedString);
return ValidationResult.ValidResult();
}
Expand All @@ -489,12 +489,26 @@ public static ValidationResult ValidateTimeOfDay(this object value, out string c
{
var timeOfDayValue = Convert.ToDateTime(value, CultureInfo.InvariantCulture);

if (timeOfDayValue.IsDefaultDateTime())
if (timeOfDayValue.IsDefaultDate())
{
cleanedValue = timeOfDayValue.ToString("HH:mm:ss");
if (value is string stringValue)
{
cleanedValue = stringValue;
Logger.Debug("TimeOfDay {0} validated", cleanedValue);
return ValidationResult.ValidResult();
}

Logger.Debug("TimeOfDay {0} validated", value);
return ValidationResult.ValidResult();
if (value is DateTime dtValue)
{
if (dtValue.Kind == DateTimeKind.Local)
{
dtValue = DateTime.SpecifyKind(dtValue, DateTimeKind.Unspecified);
}

cleanedValue = dtValue.ToString("o");
Logger.Debug("TimeOfDay {0} validated", cleanedValue);
return ValidationResult.ValidResult();
}
}
}
catch (Exception ex)
Expand Down

0 comments on commit 98aa64c

Please sign in to comment.