blob: d384940f445d24f4589ecf849ba39fbf8901a7de (
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
60
61
62
63
64
65
66
67
68
|
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 =
"<html>" +
"<head>" +
"<link rel=\"stylesheet\" type=\"text/css\" href=\"Css/styles.css\">" +
"<script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-2.1.3.min.js\"></script>" +
"<script type=\"text/javascript\" src=\"Js/script.js\"></script>" +
"</head>" +
"<body>" +
"<div id=\"totalStats\">" +
string.Format("<div id=\"coverage\">{0:N2}%<span class=\"totalStatsLarge\"> Covered!!</span></div>",
(numberOfTestedMembers / (double)numberOfMembers) * 100) +
string.Format("<div class=\"coverageDetail\">{0}<span class=\"totalStatsSmall\"> Members</span></div>",
numberOfMembers) +
string.Format("<div class=\"coverageDetail\">{0}<span class=\"totalStatsSmall\"> Tested Members</span></div>",
numberOfTestedMembers) +
"</div>" +
"<div id=\"container\">" +
typeMemberHtml +
"</div>" +
"</body>" +
"</html>";
File.WriteAllText("../../UITestCoverage/index.html", html);
return 0;
}
}
}
|