Skip to content

Commit 9318296

Browse files
committed
Add tests
1 parent 497f939 commit 9318296

File tree

5 files changed

+167
-20
lines changed

5 files changed

+167
-20
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
using Riok.Mapperly.Abstractions;
2+
3+
namespace MapperlyTest;
4+
5+
public class Dog
6+
{
7+
8+
#region Properties
9+
10+
public string Name { get; set; } = string.Empty;
11+
12+
public string? NullStr { get; set; }
13+
14+
public int NumberOfWheels { get; set; }
15+
16+
#endregion
17+
18+
}
19+
20+
internal sealed record DogDto
21+
{
22+
//PreferParameterlessConstructors = true use this constructor
23+
internal DogDto()
24+
{
25+
Name = string.Empty;
26+
NumberOfWheels = 1;
27+
}
28+
29+
[MapperConstructor]
30+
internal DogDto(int numberOfWheels)
31+
{
32+
Name = string.Empty;
33+
NumberOfWheels = numberOfWheels;
34+
StringNull = "test1";
35+
}
36+
37+
// PreferParameterlessConstructors = false use this constructor
38+
internal DogDto(string name, int numberOfWheels)
39+
{
40+
Name = name;
41+
NumberOfWheels = numberOfWheels;
42+
StringNull = "test2";
43+
}
44+
45+
#region Properties
46+
47+
internal int? IntNull { get; set; }
48+
49+
internal string MergeStr => $"{Name} {NumberOfWheels}";
50+
51+
internal string Name { get; init; }
52+
53+
internal int NumberOfWheels { get; init; }
54+
55+
internal string? StringNull { get; set; }
56+
57+
#endregion
58+
59+
}
60+
61+
[Mapper]
62+
internal sealed partial class DogMapper
63+
{
64+
65+
#region Methods
66+
67+
[MapProperty(nameof(Dog.NullStr), nameof(DogDto.StringNull))]
68+
internal partial DogDto ToDogDto(Dog dog);
69+
70+
internal partial ICollection<DogDto> ToDogDto(ICollection<Dog> dogs);
71+
72+
#endregion
73+
74+
}
75+
76+
[Mapper]
77+
internal static partial class DogProjectToMapper
78+
{
79+
80+
#region Constants & Statics
81+
82+
[MapProperty(nameof(Dog.NullStr), nameof(DogDto.StringNull))]
83+
private static partial DogDto ToDogDto(Dog dog);
84+
85+
internal static partial IQueryable<DogDto> ProjectToDogDto(this IQueryable<Dog> query);
86+
87+
#endregion
88+
89+
}

src/plugins/MapperlyTest/MapperTest.cs

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,57 @@ public static void CarNullThrowMapper_Test()
1818
{
1919
var mapper = new CarNullThrowMapper();
2020

21-
var car = new Car { Name = "Fiat", NumberOfWheels = 4 };
21+
var car = new Car { Name = "Fiat", NumberOfWheels = 4, NullStr = "aaa" };
2222
var dto = mapper.ToCarDto(car);
2323
Console.WriteLine($"Car: {dto.Name}, Wheels: {dto.NumberOfWheels}");
24+
Console.WriteLine($"StringNull: {dto.StringNull}");
25+
}
26+
27+
public static void Ctro_Test()
28+
{
29+
var mapper = new DogMapper();
30+
31+
var dog = new Dog { Name = "Fiat", NumberOfWheels = 4, NullStr = "aaa" };
32+
var dto = mapper.ToDogDto(dog);
33+
Console.WriteLine($"{dto.Name}, Wheels: {dto.NumberOfWheels}");
34+
Console.WriteLine($"StringNull: {dto.StringNull}");
35+
}
36+
37+
public static void List_Test()
38+
{
39+
var mapper = new DogMapper();
40+
41+
var dogs = new List<Dog>
42+
{
43+
new() { Name = "Buddy", NumberOfWheels = 4, NullStr = "aaa" },
44+
new() { Name = "Max", NumberOfWheels = 3, NullStr = "bbb" }
45+
};
46+
47+
var list = mapper.ToDogDto(dogs);
48+
49+
foreach (var dto in list)
50+
{
51+
Console.WriteLine($"{dto.Name}, Wheels: {dto.NumberOfWheels}");
52+
Console.WriteLine($"StringNull: {dto.StringNull}");
53+
}
54+
}
55+
56+
public static void ProjectTo_Test()
57+
{
58+
var dogs = new List<Dog>
59+
{
60+
new() { Name = "Buddy", NumberOfWheels = 4, NullStr = "aaa" },
61+
new() { Name = "Max", NumberOfWheels = 3, NullStr = "bbb" }
62+
}.AsQueryable();
63+
64+
var list = dogs.ProjectToDogDto().ToList();
65+
66+
list.ForEach(
67+
static dto =>
68+
{
69+
Console.WriteLine($"{dto.Name}, Wheels: {dto.NumberOfWheels}");
70+
Console.WriteLine($"StringNull: {dto.StringNull}");
71+
});
2472
}
2573

2674
#endregion

src/plugins/MapperlyTest/MapperlyGlobalConfig.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
ThrowOnMappingNullMismatch = true,
77
RequiredMappingStrategy = RequiredMappingStrategy.None,
88
AutoUserMappings = false,
9-
IgnoreObsoleteMembersStrategy = IgnoreObsoleteMembersStrategy.None)]
9+
IgnoreObsoleteMembersStrategy = IgnoreObsoleteMembersStrategy.None,
10+
PreferParameterlessConstructors = true)]
Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<OutputType>Exe</OutputType>
5-
<TargetFramework>net9.0</TargetFramework>
6-
<ImplicitUsings>enable</ImplicitUsings>
7-
<Nullable>enable</Nullable>
8-
</PropertyGroup>
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net9.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
99

10-
<PropertyGroup>
11-
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
12-
<CompilerGeneratedFilesOutputPath>_Generated</CompilerGeneratedFilesOutputPath>
13-
</PropertyGroup>
14-
<ItemGroup>
15-
<Compile Remove="_Generated\**\*.g.cs" />
16-
<None Include="_Generated\**\*.g.cs" />
17-
</ItemGroup>
10+
<PropertyGroup>
11+
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
12+
<CompilerGeneratedFilesOutputPath>_Generated</CompilerGeneratedFilesOutputPath>
13+
</PropertyGroup>
14+
<ItemGroup>
15+
<Compile Remove="_Generated\**\*.g.cs" />
16+
<None Include="_Generated\**\*.g.cs" />
17+
</ItemGroup>
1818

19-
<ItemGroup>
20-
<PackageReference Include="Riok.Mapperly" Version="4.3.0" />
21-
</ItemGroup>
19+
<ItemGroup>
20+
<PackageReference Include="Riok.Mapperly" Version="4.3.1">
21+
<PrivateAssets>all</PrivateAssets>
22+
</PackageReference>
23+
</ItemGroup>
24+
25+
<Target Name="CheckMapperly" BeforeTargets="PrepareForBuild">
26+
<Message Importance="high" Text="installed Mapperly" Condition="@(PackageReference->AnyHaveMetadataValue('Identity', 'Riok.Mapperly'))" />
27+
</Target>
2228

2329
</Project>

src/plugins/MapperlyTest/Program.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ internal static class Program
77

88
private static void Main(string[] args)
99
{
10-
MapperTest.CarMapper_Test();
10+
//MapperTest.CarMapper_Test();
11+
//MapperTest.CarNullThrowMapper_Test();
12+
//MapperTest.Ctro_Test();
13+
MapperTest.ProjectTo_Test();
1114
}
1215

1316
#endregion

0 commit comments

Comments
 (0)