Skip to content

Commit 3c1061e

Browse files
committed
fix code generation for operators without corresponding static abstract interface
1 parent 57262b1 commit 3c1061e

File tree

74 files changed

+2535
-13
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+2535
-13
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<Copyright>(c) $([System.DateTime]::Now.Year), Pawel Gerr. All rights reserved.</Copyright>
5-
<VersionPrefix>10.1.1</VersionPrefix>
5+
<VersionPrefix>10.1.2</VersionPrefix>
66
<Authors>Pawel Gerr</Authors>
77
<GenerateDocumentationFile>true</GenerateDocumentationFile>
88
<PackageProjectUrl>https://github.com/PawelGerr/Thinktecture.Runtime.Extensions</PackageProjectUrl>

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/ValueObjects/AdditionOperatorsCodeGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ private AdditionOperatorsCodeGenerator(
5656

5757
public void GenerateBaseTypes(StringBuilder sb, InterfaceCodeGeneratorState state)
5858
{
59-
if (!_keyMemberOperators.HasOperator(ImplementedOperators.All))
59+
if (!_keyMemberOperators.HasOperator(ImplementedOperators.Default))
6060
return;
6161

6262
sb.Append(@"

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/ValueObjects/DivisionOperatorsCodeGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ private DivisionOperatorsCodeGenerator(ImplementedOperators keyMemberOperators,
5454

5555
public void GenerateBaseTypes(StringBuilder sb, InterfaceCodeGeneratorState state)
5656
{
57-
if (!_keyMemberOperators.HasOperator(ImplementedOperators.All))
57+
if (!_keyMemberOperators.HasOperator(ImplementedOperators.Default))
5858
return;
5959

6060
sb.Append(@"

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/ValueObjects/MultiplyOperatorsCodeGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ private MultiplyOperatorsCodeGenerator(ImplementedOperators keyMemberOperators,
5454

5555
public void GenerateBaseTypes(StringBuilder sb, InterfaceCodeGeneratorState state)
5656
{
57-
if (!_keyMemberOperators.HasOperator(ImplementedOperators.All))
57+
if (!_keyMemberOperators.HasOperator(ImplementedOperators.Default))
5858
return;
5959

6060
sb.Append(@"

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/ValueObjects/SubtractionOperatorsCodeGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ private SubtractionOperatorsCodeGenerator(ImplementedOperators keyMemberOperator
5454

5555
public void GenerateBaseTypes(StringBuilder sb, InterfaceCodeGeneratorState state)
5656
{
57-
if (!_keyMemberOperators.HasOperator(ImplementedOperators.All))
57+
if (!_keyMemberOperators.HasOperator(ImplementedOperators.Default))
5858
return;
5959

6060
sb.Append(@"

test/Thinktecture.Runtime.Extensions.AspNetCore.Tests/AspNetCore/ModelBinding/ThinktectureModelBinderTests/BindModelAsync.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,36 @@ public async Task Should_bind_simple_value_object_having_custom_factory_name()
285285
ctx.Result.Model.Should().Be(IntBasedReferenceValueObjectWithCustomFactoryNames.Get(1));
286286
}
287287

288+
[Fact]
289+
public async Task Should_bind_timespan_reference_value_object()
290+
{
291+
var ctx = await BindAsync<TimeSpanBasedReferenceValueObject>("01:30:00");
292+
293+
ctx.ModelState.ErrorCount.Should().Be(0);
294+
ctx.Result.IsModelSet.Should().BeTrue();
295+
ctx.Result.Model.Should().Be(TimeSpanBasedReferenceValueObject.Create(TimeSpan.FromMinutes(90)));
296+
}
297+
298+
[Fact]
299+
public async Task Should_bind_timespan_struct_value_object()
300+
{
301+
var ctx = await BindAsync<TimeSpanBasedStructValueObject>("01:30:00");
302+
303+
ctx.ModelState.ErrorCount.Should().Be(0);
304+
ctx.Result.IsModelSet.Should().BeTrue();
305+
ctx.Result.Model.Should().Be(TimeSpanBasedStructValueObject.Create(TimeSpan.FromMinutes(90)));
306+
}
307+
308+
[Fact]
309+
public async Task Should_not_bind_timespan_when_null()
310+
{
311+
var ctx = await BindAsync<TimeSpanBasedReferenceValueObject>(null);
312+
313+
ctx.ModelState.ErrorCount.Should().Be(0);
314+
ctx.Result.IsModelSet.Should().BeFalse();
315+
ctx.Result.Model.Should().BeNull();
316+
}
317+
288318
private static T Bind<T>(string value)
289319
{
290320
var context = BindAsync<T>(value).GetAwaiter().GetResult();

test/Thinktecture.Runtime.Extensions.EntityFrameworkCore.Tests.Sources/EntityFrameworkCore/ValueConversion/ValueObjectValueConverterFactoryTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public async Task Should_write_and_read_enums_and_value_types()
4949
IntBasedReferenceValueObject.Create(1),
5050
IntBasedReferenceValueObject.Create(2)
5151
],
52+
TimeSpanBasedReferenceValueObject = TimeSpanBasedReferenceValueObject.Create(TimeSpan.FromHours(1.5)),
53+
TimeSpanBasedStructValueObject = TimeSpanBasedStructValueObject.Create(TimeSpan.FromMinutes(30)),
5254
};
5355
_ctx.Add(entity);
5456
await _ctx.SaveChangesAsync(TestContext.Current.CancellationToken);

test/Thinktecture.Runtime.Extensions.EntityFrameworkCore.Tests.Sources/Extensions/DbContextOptionsBuilderExtensionsTests/UseThinktectureValueConverters.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public void Should_add_converters_for_structs_and_classes()
3939

4040
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.SmartEnum_IntBased), _converterType.MakeGenericType(typeof(SmartEnum_IntBased), typeof(int), typeof(ValidationError)));
4141
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.SmartEnum_StringBased));
42+
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.TimeSpanBasedReferenceValueObject), _converterType.MakeGenericType(typeof(TimeSpanBasedReferenceValueObject), typeof(TimeSpan), typeof(ValidationError)));
43+
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.TimeSpanBasedStructValueObject), _converterType.MakeGenericType(typeof(TimeSpanBasedStructValueObject), typeof(TimeSpan), typeof(ValidationError)));
4244
}
4345

4446
[Fact]

test/Thinktecture.Runtime.Extensions.EntityFrameworkCore.Tests.Sources/Extensions/EntityTypeBuilderExtensionsTests/AddThinktectureValueConverters.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public void Should_add_converters_for_structs_and_classes()
3232

3333
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.SmartEnum_IntBased), _converterType.MakeGenericType(typeof(SmartEnum_IntBased), typeof(int), typeof(ValidationError)));
3434
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.SmartEnum_StringBased));
35+
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.TimeSpanBasedReferenceValueObject), _converterType.MakeGenericType(typeof(TimeSpanBasedReferenceValueObject), typeof(TimeSpan), typeof(ValidationError)));
36+
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.TimeSpanBasedStructValueObject), _converterType.MakeGenericType(typeof(TimeSpanBasedStructValueObject), typeof(TimeSpan), typeof(ValidationError)));
3537
}
3638

3739
[Fact]

test/Thinktecture.Runtime.Extensions.EntityFrameworkCore.Tests.Sources/Extensions/ModelBuilderExtensionsTests/AddThinktectureValueConverters.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public void Should_add_converters_for_structs_and_classes()
3131

3232
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.SmartEnum_IntBased), _converterType.MakeGenericType(typeof(SmartEnum_IntBased), typeof(int), typeof(ValidationError)));
3333
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.SmartEnum_StringBased));
34+
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.TimeSpanBasedReferenceValueObject), _converterType.MakeGenericType(typeof(TimeSpanBasedReferenceValueObject), typeof(TimeSpan), typeof(ValidationError)));
35+
ValidateConverter(entityType, nameof(TestEntity_with_Enum_and_ValueObjects.TimeSpanBasedStructValueObject), _converterType.MakeGenericType(typeof(TimeSpanBasedStructValueObject), typeof(TimeSpan), typeof(ValidationError)));
3436
}
3537

3638
[Fact]

0 commit comments

Comments
 (0)