summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.UITest.Validator/LoaderActions.cs
blob: 9de39f2127e4d0ce159a49ca35ba4213f989046a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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<TestType> _androidTestTypes;
		readonly IEnumerable<TestType> _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<FormsType> FormsTypes { get; }

		internal Dictionary<Type, List<FormsUiTest>> TypeiOsuiTestDictionary { get; }

		internal Dictionary<Type, List<FormsUiTest>> TypeAndroidUiTestDictionary { get; }

		Dictionary<Type, List<FormsUiTest>> BuildTypeUiTestDictionary(IEnumerable<TestType> testTypes)
		{
			var result = new Dictionary<Type, List<FormsUiTest>>();

			foreach (TestType testType in testTypes)
			{
				foreach (TestMember testMember in testType.Members())
				{
					IEnumerable<UiTestAttribute> 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<FormsUiTest> { new FormsUiTest(memberName, testName) });
						else
							result[type].Add(new FormsUiTest(memberName, testName));
					}
				}
			}

			return result;
		}
	}
}