1+ using System . Linq . Expressions ;
2+
3+ namespace RoyalCode . SmartSelector . Tests . Models . Expected ;
4+
5+ public class StringNulls
6+ {
7+ public string Value1 { get ; set ; } = default ! ;
8+ public string Value2 { get ; set ; } = default ! ;
9+ public string ? Value3 { get ; set ; }
10+ public string ? Value4 { get ; set ; }
11+ }
12+
13+ [ AutoSelect < StringNulls > ]
14+ public partial class StringNullsDto
15+ {
16+ public string Value1 { get ; set ; } = default ! ;
17+ public string ? Value2 { get ; set ; }
18+ public string Value3 { get ; set ; } = default ! ;
19+ public string ? Value4 { get ; set ; }
20+ }
21+
22+ // expected
23+ public partial class StringNullsDto
24+ {
25+ private static Func < StringNulls , StringNullsDto > selectStringNullsFunc ;
26+
27+ public static Expression < Func < StringNulls , StringNullsDto > > SelectStringNullsExpression { get ; } = a => new StringNullsDto
28+ {
29+ Value1 = a . Value1 ,
30+ Value2 = a . Value2 ,
31+ Value3 = a . Value3 ,
32+ Value4 = a . Value4
33+ } ;
34+
35+ public static StringNullsDto From ( StringNulls stringNulls ) => ( selectStringNullsFunc ??= SelectStringNullsExpression . Compile ( ) ) ( stringNulls ) ;
36+ }
37+
38+
39+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
40+
41+
42+ public class IntNulls
43+ {
44+ public int Value1 { get ; set ; } = default ! ;
45+ public int Value2 { get ; set ; } = default ! ;
46+ public int ? Value3 { get ; set ; }
47+ public int ? Value4 { get ; set ; }
48+ }
49+
50+ [ AutoSelect < IntNulls > ]
51+ public partial class IntNullsDto
52+ {
53+ public int Value1 { get ; set ; } = default ! ;
54+ public int ? Value2 { get ; set ; }
55+ public int Value3 { get ; set ; } = default ! ;
56+ public int ? Value4 { get ; set ; }
57+ }
58+
59+ // expected
60+ public partial class IntNullsDto
61+ {
62+ private static Func < IntNulls , IntNullsDto > selectIntNullsFunc ;
63+
64+ public static Expression < Func < IntNulls , IntNullsDto > > SelectIntNullsExpression { get ; } = a => new IntNullsDto
65+ {
66+ Value1 = a . Value1 ,
67+ Value2 = a . Value2 ,
68+ Value3 = a . Value3 . HasValue ? a . Value3 . Value : default ,
69+ Value4 = a . Value4
70+ } ;
71+
72+ public static IntNullsDto From ( IntNulls intNulls ) => ( selectIntNullsFunc ??= SelectIntNullsExpression . Compile ( ) ) ( intNulls ) ;
73+ }
74+
75+
76+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
77+
78+
79+ public enum NullsKind
80+ {
81+ None ,
82+ Nullable ,
83+ NonNullable
84+ }
85+
86+ public class EnumNulls
87+ {
88+ public NullsKind Value1 { get ; set ; } = default ! ;
89+ public NullsKind Value2 { get ; set ; } = default ! ;
90+ public NullsKind ? Value3 { get ; set ; }
91+ public NullsKind ? Value4 { get ; set ; }
92+ }
93+
94+ [ AutoSelect < EnumNulls > ]
95+ public partial class EnumNullsDto
96+ {
97+ public NullsKind Value1 { get ; set ; } = default ! ;
98+ public NullsKind ? Value2 { get ; set ; }
99+ public NullsKind Value3 { get ; set ; } = default ! ;
100+ public NullsKind ? Value4 { get ; set ; }
101+ }
102+
103+ // expected
104+ public partial class EnumNullsDto
105+ {
106+ private static Func < EnumNulls , EnumNullsDto > selectEnumNullsFunc ;
107+
108+ public static Expression < Func < EnumNulls , EnumNullsDto > > SelectEnumNullsExpression { get ; } = a => new EnumNullsDto
109+ {
110+ Value1 = a . Value1 ,
111+ Value2 = a . Value2 ,
112+ Value3 = a . Value3 . HasValue ? a . Value3 . Value : default ,
113+ Value4 = a . Value4
114+ } ;
115+
116+ public static EnumNullsDto From ( EnumNulls enumNulls ) => ( selectEnumNullsFunc ??= SelectEnumNullsExpression . Compile ( ) ) ( enumNulls ) ;
117+ }
118+
119+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
120+
121+
122+ public enum NullsType
123+ {
124+ None ,
125+ Nullable ,
126+ NonNullable
127+ }
128+
129+ [ AutoSelect < EnumNulls > ]
130+ public partial class EnumNullsTypeDto
131+ {
132+ public NullsType Value1 { get ; set ; } = default ! ;
133+ public NullsType ? Value2 { get ; set ; }
134+ public NullsType Value3 { get ; set ; } = default ! ;
135+ public NullsType ? Value4 { get ; set ; }
136+ }
137+
138+ // expected
139+ public partial class EnumNullsTypeDto
140+ {
141+ private static Func < EnumNulls , EnumNullsTypeDto > selectEnumNullsTypeFunc ;
142+
143+ public static Expression < Func < EnumNulls , EnumNullsTypeDto > > SelectEnumNullsTypeExpression { get ; } = a => new EnumNullsTypeDto
144+ {
145+ Value1 = ( NullsType ) a . Value1 ,
146+ Value2 = ( NullsType ? ) a . Value2 ,
147+ Value3 = a . Value3 . HasValue ? ( NullsType ) a . Value3 . Value : default ,
148+ Value4 = ( NullsType ? ) a . Value4
149+ } ;
150+
151+ public static EnumNullsTypeDto From ( EnumNulls enumNulls ) => ( selectEnumNullsTypeFunc ??= SelectEnumNullsTypeExpression . Compile ( ) ) ( enumNulls ) ;
152+ }
0 commit comments