using System; using System.IO; using System.Linq; namespace Xamarin.Forms.UITest.Validator { //[UITest (typeof(Button), "Clicked")] internal class Validator { // TODO - Add support for muliple attributes (i.e. Fonts or Image.Aspect) // TODO - Add analysis of test duplication using duplicated tags // TODO - Support Single class analysis by passing a class name into the program // TODO - Stats of public surface area coverage static int Main(string[] args) { Console.WriteLine("Generating UITest code coverage"); // Currently scanning for public events, public properties and public methods. var loaderActions = new LoaderActions(); var domTypes = (from formsType in loaderActions.FormsTypes where formsType.Members().Count() > 1 select new DomTypeModel(formsType, loaderActions.TypeiOsuiTestDictionary, loaderActions.TypeAndroidUiTestDictionary)) .OrderByDescending(domType => domType.Rank); var typeMemberHtml = ""; int numberOfTestedMembers = 0; int numberOfMembers = 0; foreach (var domType in domTypes) { numberOfTestedMembers += (from member in domType.Children where member.IsTested select member).Count(); numberOfMembers += domType.Children.Count; typeMemberHtml += domType.Html(); } var html = "" + "" + "" + "" + "" + "" + "" + "
" + string.Format("
{0:N2}% Covered!!
", (numberOfTestedMembers / (double)numberOfMembers) * 100) + string.Format("
{0} Members
", numberOfMembers) + string.Format("
{0} Tested Members
", numberOfTestedMembers) + "
" + "
" + typeMemberHtml + "
" + "" + ""; File.WriteAllText("../../UITestCoverage/index.html", html); return 0; } } }