1111using Microsoft . AspNet . Razor . Generator ;
1212using Microsoft . AspNet . Razor . Parser ;
1313using Microsoft . AspNet . Razor . Parser . SyntaxTree ;
14+ using Microsoft . AspNet . Razor . Parser . TagHelpers ;
1415using Microsoft . AspNet . Razor . Text ;
1516using Xunit ;
1617
@@ -291,6 +292,22 @@ private static void EvaluateSyntaxTreeNode(ErrorCollector collector, SyntaxTreeN
291292 }
292293 }
293294
295+ private static void EvaluateTagHelperAttribute ( ErrorCollector collector ,
296+ KeyValuePair < string , SyntaxTreeNode > actual ,
297+ KeyValuePair < string , SyntaxTreeNode > expected )
298+ {
299+ if ( actual . Key != expected . Key )
300+ {
301+ collector . AddError ( "{0} - FAILED :: Attribute names do not match" , expected . Key ) ;
302+ }
303+ else
304+ {
305+ collector . AddMessage ( "{0} - PASSED :: Attribute names match" , expected . Key ) ;
306+ }
307+
308+ EvaluateSyntaxTreeNode ( collector , actual . Value , expected . Value ) ;
309+ }
310+
294311 private static void EvaluateSpan ( ErrorCollector collector , Span actual , Span expected )
295312 {
296313 if ( ! Equals ( expected , actual ) )
@@ -311,11 +328,16 @@ private static void EvaluateBlock(ErrorCollector collector, Block actual, Block
311328 }
312329 else
313330 {
331+ if ( actual is TagHelperBlock )
332+ {
333+ EvaluateTagHelperBlock ( collector , actual as TagHelperBlock , expected as TagHelperBlock ) ;
334+ }
335+
314336 AddPassedMessage ( collector , expected ) ;
315337 using ( collector . Indent ( ) )
316338 {
317- IEnumerator < SyntaxTreeNode > expectedNodes = expected . Children . GetEnumerator ( ) ;
318- IEnumerator < SyntaxTreeNode > actualNodes = actual . Children . GetEnumerator ( ) ;
339+ var expectedNodes = expected . Children . GetEnumerator ( ) ;
340+ var actualNodes = actual . Children . GetEnumerator ( ) ;
319341 while ( expectedNodes . MoveNext ( ) )
320342 {
321343 if ( ! actualNodes . MoveNext ( ) )
@@ -335,6 +357,35 @@ private static void EvaluateBlock(ErrorCollector collector, Block actual, Block
335357 }
336358 }
337359
360+ private static void EvaluateTagHelperBlock ( ErrorCollector collector , TagHelperBlock actual , TagHelperBlock expected )
361+ {
362+ if ( expected == null )
363+ {
364+ AddMismatchError ( collector , actual , expected ) ;
365+ }
366+ else
367+ {
368+ var expectedAttributes = expected . Attributes . GetEnumerator ( ) ;
369+ var actualAttributes = actual . Attributes . GetEnumerator ( ) ;
370+
371+ while ( expectedAttributes . MoveNext ( ) )
372+ {
373+ if ( ! actualAttributes . MoveNext ( ) )
374+ {
375+ collector . AddError ( "{0} - FAILED :: No more attributes on this node" , expectedAttributes . Current ) ;
376+ }
377+ else
378+ {
379+ EvaluateTagHelperAttribute ( collector , actualAttributes . Current , expectedAttributes . Current ) ;
380+ }
381+ }
382+ while ( actualAttributes . MoveNext ( ) )
383+ {
384+ collector . AddError ( "End of Attributes - FAILED :: Found Attribute: {0}" , actualAttributes . Current . Key ) ;
385+ }
386+ }
387+ }
388+
338389 private static void AddPassedMessage ( ErrorCollector collector , SyntaxTreeNode expected )
339390 {
340391 collector . AddMessage ( "{0} - PASSED" , expected ) ;
0 commit comments