@@ -14,7 +14,7 @@ namespace Microsoft.Maui.Controls.Xaml.UnitTests;
1414public partial class CompiledTypeConverter : ContentPage
1515{
1616 public static readonly BindableProperty RectangleBPProperty =
17- BindableProperty . Create ( " RectangleBP" , typeof ( Rect ) , typeof ( CompiledTypeConverter ) , default ( Rect ) ) ;
17+ BindableProperty . Create ( nameof ( RectangleBP ) , typeof ( Rect ) , typeof ( CompiledTypeConverter ) , default ( Rect ) ) ;
1818
1919 public Rect RectangleBP
2020 {
@@ -66,6 +66,11 @@ public Rect RectangleBP
6666 [ System . ComponentModel . TypeConverter ( typeof ( ListStringTypeConverter ) ) ]
6767 public IList < string > List { get ; set ; }
6868
69+ [ System . ComponentModel . TypeConverter ( typeof ( TypeTypeConverter ) ) ]
70+ public Type ButtonType { get ; set ; }
71+
72+ public BindableProperty BindableProp { get ; set ; }
73+
6974
7075 public CompiledTypeConverter ( ) => InitializeComponent ( ) ;
7176
@@ -104,12 +109,23 @@ public void CompiledTypeConverterAreInvoked([Values] XamlInflator xamlInflator)
104109 Assert . AreEqual ( new Thickness ( 2 , 3 ) , p . label . Margin ) ;
105110 Assert . AreEqual ( 2 , p . List . Count ) ;
106111 Assert . AreEqual ( "Bar" , p . List [ 1 ] ) ;
112+ Assert . AreEqual ( typeof ( Button ) , p . ButtonType ) ;
113+ Assert . AreEqual ( Label . TextProperty , p . BindableProp ) ;
107114 }
108115
109116 [ Test ]
110117 public void ConvertersAreReplaced (
111118 [ Values ] XamlInflator inflator ,
112- [ Values ( typeof ( BrushTypeConverter ) , typeof ( ImageSourceConverter ) , typeof ( StrokeShapeTypeConverter ) , typeof ( Graphics . Converters . PointTypeConverter ) , typeof ( Graphics . Converters . RectTypeConverter ) ) ] Type converterType )
119+ [ Values (
120+ typeof ( BrushTypeConverter ) ,
121+ typeof ( ImageSourceConverter ) ,
122+ typeof ( StrokeShapeTypeConverter ) ,
123+ typeof ( Graphics . Converters . PointTypeConverter ) ,
124+ typeof ( Graphics . Converters . RectTypeConverter ) ,
125+ typeof ( TypeTypeConverter ) ,
126+ typeof ( BindablePropertyConverter ) ,
127+ typeof ( ListStringTypeConverter )
128+ ) ] Type converterType )
113129 {
114130 if ( inflator == XamlInflator . XamlC )
115131 {
@@ -134,62 +150,67 @@ public void ConvertersAreReplaced(
134150
135151namespace Microsoft.Maui.Controls.Xaml.UnitTests;
136152
137- [XamlProcessing(XamlInflator.Default, true)]
138- public partial class CompiledTypeConverter : ContentPage
153+ [XamlProcessing(XamlInflator.Default, true)]
154+ public partial class CompiledTypeConverter : ContentPage
155+ {
156+ public static readonly BindableProperty RectangleBPProperty =
157+ BindableProperty.Create("RectangleBP", typeof(Rect), typeof(CompiledTypeConverter), default(Rect));
158+
159+ public Rect RectangleBP
139160 {
140- public static readonly BindableProperty RectangleBPProperty =
141- BindableProperty.Create("RectangleBP", typeof(Rect), typeof(CompiledTypeConverter), default(Rect));
161+ get { return (Rect)GetValue(RectangleBPProperty); }
162+ set { SetValue(RectangleBPProperty, value); }
163+ }
142164
143- public Rect RectangleBP
144- {
145- get { return (Rect)GetValue(RectangleBPProperty); }
146- set { SetValue(RectangleBPProperty, value); }
147- }
165+ public Rect RectangleP { get; set; }
148166
149- public Rect RectangleP { get; set; }
167+ public Point PointP { get; set; }
150168
151- public Point PointP { get; set; }
169+ public Brush BrushByName { get; set; }
152170
153- public Brush BrushByName { get; set; }
171+ public Brush BrushByARGB { get; set; }
154172
155- public Brush BrushByARGB { get; set; }
173+ public Brush BrushByRGB { get; set; }
156174
157- public Brush BrushByRGB { get; set; }
175+ public ImageSource ImageByUrl { get; set; }
158176
159- public ImageSource ImageByUrl { get; set; }
177+ public ImageSource ImageByName { get; set; }
160178
161- public ImageSource ImageByName { get; set; }
179+ [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
180+ public IShape EllipseShape { get; set; }
162181
163- [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
164- public IShape EllipseShape { get; set; }
182+ [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
183+ public IShape LineShape { get; set; }
165184
166- [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
167- public IShape LineShape { get; set; }
185+ [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
186+ public IShape LineShapeTwo { get; set; }
168187
169- [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
170- public IShape LineShapeTwo { get; set; }
188+ [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
189+ public IShape LineShapeFour { get; set; }
171190
172- [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
173- public IShape LineShapeFour { get; set; }
191+ [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
192+ public IShape PolygonShape { get; set; }
174193
175- [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
176- public IShape PolygonShape { get; set; }
194+ [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
195+ public IShape PolylineShape { get; set; }
177196
178- [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
179- public IShape PolylineShape { get; set; }
197+ [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
198+ public IShape RectangleShape { get; set; }
180199
181- [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
182- public IShape RectangleShape { get; set; }
200+ [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
201+ public IShape RoundRectangleShape { get; set; }
183202
184- [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
185- public IShape RoundRectangleShape { get; set; }
203+ [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter))]
204+ public IShape PathShape { get; set; }
186205
187- [System.ComponentModel.TypeConverter(typeof(StrokeShapeTypeConverter ))]
188- public IShape PathShape { get; set; }
206+ [System.ComponentModel.TypeConverter(typeof(ListStringTypeConverter ))]
207+ public IList<string> List { get; set; }
189208
190- [System.ComponentModel.TypeConverter(typeof(ListStringTypeConverter ))]
191- public IList<string> List { get; set; }
209+ [System.ComponentModel.TypeConverter(typeof(TypeTypeConverter ))]
210+ public Type ButtonType { get; set; }
192211
212+ public BindableProperty BindableProp { get; set; }
213+ }
193214""" )
194215 . RunMauiSourceGenerator ( typeof ( CompiledTypeConverter ) ) ;
195216
@@ -198,9 +219,20 @@ public Rect RectangleBP
198219 var initComp = result . GeneratedInitializeComponent ( ) ;
199220 if ( converterType == typeof ( Graphics . Converters . RectTypeConverter ) )
200221 Assert . True ( result . GeneratedInitializeComponent ( ) . Contains ( "new global::Microsoft.Maui.Graphics.Rect(0, 1, 2, 4)" , StringComparison . InvariantCulture ) ) ;
201-
222+ if ( converterType == typeof ( Graphics . Converters . PointTypeConverter ) )
223+ Assert . True ( result . GeneratedInitializeComponent ( ) . Contains ( "new global::Microsoft.Maui.Graphics.Point(1, 2)" , StringComparison . InvariantCulture ) ) ;
224+ if ( converterType == typeof ( TypeTypeConverter ) )
225+ Assert . True ( result . GeneratedInitializeComponent ( ) . Contains ( "typeof(global::Microsoft.Maui.Controls.Button)" , StringComparison . InvariantCulture ) ) ;
226+ if ( converterType == typeof ( BindablePropertyConverter ) )
227+ Assert . True ( result . GeneratedInitializeComponent ( ) . Contains ( "global::Microsoft.Maui.Controls.Label.TextProperty" , StringComparison . InvariantCulture ) ) ;
228+ if ( converterType == typeof ( ListStringTypeConverter ) )
229+ Assert . True ( result . GeneratedInitializeComponent ( ) . Contains ( "new global::System.Collections.Generic.List<string> { \" Foo\" , \" Bar\" }" , StringComparison . InvariantCulture ) ) ;
202230 // TODO check all other converters here
231+
203232 // TODO check that there are no ConvertFrom calls
233+
234+ //check that there are no serviceProvider
235+ Assert . False ( result . GeneratedInitializeComponent ( ) . Contains ( "new global::Microsoft.Maui.Controls.Xaml.Internals.XamlServiceProvider(" , StringComparison . InvariantCulture ) ) ;
204236 }
205237 }
206238
0 commit comments