@@ -1145,49 +1145,61 @@ public async Task RawStatementShouldOutputSameText()
11451145 }
11461146
11471147 [ Fact ]
1148- public async Task DefaultMemberStrategyShouldSupportCamelCase ( )
1148+ public void DictionaryShouldWorkWithComparers_SnakeCase ( )
1149+ {
1150+ var comparer = StringComparers . SnakeCase ;
1151+ var dict = new Dictionary < string , string > ( comparer ) ;
1152+ dict [ "FirstName" ] = "Sebastien" ;
1153+ Assert . True ( dict . ContainsKey ( "first_name" ) ) ;
1154+ Assert . Equal ( "Sebastien" , dict [ "first_name" ] ) ;
1155+ }
1156+
1157+ [ Fact ]
1158+ public async Task DefaultMemberStrategyShouldSupportSnakeCase ( )
11491159 {
11501160 var model = new { FirstName = "Sebastien" } ;
1151- var source = "{{ firstName }}" ;
1152- var expected = "Sebastien" ;
1161+ var source = "{{ first_name }} {{ last_name }}" ;
11531162
11541163 _parser . TryParse ( source , out var template , out var error ) ;
11551164
1156- var options = new TemplateOptions ( ) ;
1157- options . ModelNamesComparer = StringComparers . CamelCase ;
1165+ var options = new TemplateOptions ( ) { ModelNamesComparer = StringComparers . SnakeCase } ;
11581166 var context = new TemplateContext ( model , options ) ;
1167+ context . SetValue ( "LastName" , "Ros" ) ;
11591168
11601169 var result = await template . RenderAsync ( context ) ;
1161- Assert . Equal ( expected , result ) ;
1170+ Assert . Equal ( "Sebastien Ros" , result ) ;
11621171 }
11631172
11641173 [ Fact ]
1165- public async Task DefaultMemberStrategyShouldSupportSnakeCase ( )
1174+ public async Task DefaultMemberStrategyShouldSupportCamelCase ( )
11661175 {
11671176 var model = new { FirstName = "Sebastien" } ;
1168- var source = "{{ first_name }}" ;
1169- var expected = "Sebastien" ;
1177+ var source = "{{ firstName }} {{ lastName}}" ;
11701178
11711179 _parser . TryParse ( source , out var template , out var error ) ;
11721180
1173- var options = new TemplateOptions ( ) { ModelNamesComparer = StringComparers . SnakeCase } ;
1181+ var options = new TemplateOptions ( ) { ModelNamesComparer = StringComparers . CamelCase } ;
11741182 var context = new TemplateContext ( model , options ) ;
1183+ context . SetValue ( "LastName" , "Ros" ) ;
11751184
11761185 var result = await template . RenderAsync ( context ) ;
1177- Assert . Equal ( expected , result ) ;
1186+ Assert . Equal ( "Sebastien Ros" , result ) ;
11781187 }
11791188
1180- [ Fact ( Skip = "Refactoring" ) ]
1181- public void MemberNameStrategiesHandleSuccessiveUppercase ( )
1189+ [ Fact ]
1190+ public async Task DefaultMemberStrategyShouldSupportAnyCase ( )
11821191 {
1183- var model = new { UVIndex = "" } ;
1184- var memberInfo = model . GetType ( ) . GetProperty ( "UVIndex" ) ;
1192+ var model = new { FirstName = "Sebastien " } ;
1193+ var source = "{{ fIrSTnAme }} {{ lAsTnAme}}" ;
11851194
1186- //var camelCase = MemberNameStrategies.CamelCase(memberInfo);
1187- //var snakeCase = MemberNameStrategies.SnakeCase(memberInfo);
1195+ _parser . TryParse ( source , out var template , out var error ) ;
11881196
1189- //Assert.Equal("uvIndex", camelCase);
1190- //Assert.Equal("uv_index", snakeCase);
1197+ var options = new TemplateOptions ( ) { ModelNamesComparer = StringComparer . OrdinalIgnoreCase } ;
1198+ var context = new TemplateContext ( model , options ) ;
1199+ context . SetValue ( "LastName" , "Ros" ) ;
1200+
1201+ var result = await template . RenderAsync ( context ) ;
1202+ Assert . Equal ( "Sebastien Ros" , result ) ;
11911203 }
11921204
11931205 [ Fact ]
0 commit comments