// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. using System.Collections.Generic; using System.Globalization; using System.Text; using System.Web.Razor.Parser.SyntaxTree; using System.Web.Razor.Text; using Xunit; namespace System.Web.Razor.Test.Utils { public static class EventAssert { public static void NoMoreSpans(IEnumerator enumerator) { IList tokens = new List(); while (enumerator.MoveNext()) { tokens.Add(enumerator.Current); } Assert.False(tokens.Count > 0, String.Format(CultureInfo.InvariantCulture, @"There are more tokens available from the source: {0}", FormatList(tokens))); } private static string FormatList(IList items) { StringBuilder tokenString = new StringBuilder(); foreach (T item in items) { tokenString.AppendLine(item.ToString()); } return tokenString.ToString(); } public static void NextSpanIs(IEnumerator enumerator, SpanKind type, string content, SourceLocation location) { Assert.True(enumerator.MoveNext(), "There is no next token!"); IsSpan(enumerator.Current, type, content, location); } public static void NextSpanIs(IEnumerator enumerator, SpanKind type, string content, int actualIndex, int lineIndex, int charIndex) { NextSpanIs(enumerator, type, content, new SourceLocation(actualIndex, lineIndex, charIndex)); } public static void IsSpan(Span tok, SpanKind type, string content, int actualIndex, int lineIndex, int charIndex) { IsSpan(tok, type, content, new SourceLocation(actualIndex, lineIndex, charIndex)); } public static void IsSpan(Span tok, SpanKind type, string content, SourceLocation location) { Assert.Equal(content, tok.Content); Assert.Equal(type, tok.Kind); Assert.Equal(location, tok.Start); } } }