using System; using System.Collections.Generic; using System.Diagnostics; using Xamarin.Forms.CustomAttributes; using Xamarin.Forms.Loader; namespace Xamarin.Forms.UITest.Validator { internal class LoaderActions { readonly IEnumerable _androidTestTypes; readonly IEnumerable _iOsTestTypes; public LoaderActions() { var formsLoader = new FormsLoader(); FormsTypes = formsLoader.FormsTypes(); _iOsTestTypes = formsLoader.IOSTestTypes(); _androidTestTypes = formsLoader.AndroidTestTypes(); TypeiOsuiTestDictionary = BuildTypeUiTestDictionary(_iOsTestTypes); TypeAndroidUiTestDictionary = BuildTypeUiTestDictionary(_androidTestTypes); Debug.WriteLine("HI"); } internal IEnumerable FormsTypes { get; } internal Dictionary> TypeiOsuiTestDictionary { get; } internal Dictionary> TypeAndroidUiTestDictionary { get; } Dictionary> BuildTypeUiTestDictionary(IEnumerable testTypes) { var result = new Dictionary>(); foreach (TestType testType in testTypes) { foreach (TestMember testMember in testType.Members()) { IEnumerable testAttrs = testMember.UiTestAttributes(); foreach (UiTestAttribute testAttr in testAttrs) { Type type = testAttr.Type; string memberName = testAttr.MemberName; string testName = testMember.MemberInfo.Name; if (!result.ContainsKey(type)) result.Add(type, new List { new FormsUiTest(memberName, testName) }); else result[type].Add(new FormsUiTest(memberName, testName)); } } } return result; } } }