File: TestsBasePage.cs

package info (click to toggle)
mono-reference-assemblies 3.12.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 604,240 kB
  • ctags: 625,505
  • sloc: cs: 3,967,741; xml: 2,793,081; ansic: 418,042; java: 60,435; sh: 14,833; makefile: 11,576; sql: 7,956; perl: 1,467; cpp: 1,446; yacc: 1,203; python: 598; asm: 422; sed: 16; php: 1
file content (103 lines) | stat: -rw-r--r-- 2,290 bytes parent folder | download | duplicates (12)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Configuration;
using System.Web.DynamicData;
using System.Web.UI;

using MonoTests.SystemWeb.Framework;
using MonoTests.DataSource;

namespace MonoTests.Common
{
	public class TestsBasePage<DataContextType> : global::System.Web.UI.Page where DataContextType : new ()
	{
		Type containerType;
		bool? outsideTestSuite;

		public event EventHandler ItemDataBinding;

		public bool OutsideTestSuite
		{
			get
			{
				if (outsideTestSuite == null) {
					object o = WebConfigurationManager.AppSettings["OutsideTestSuite"];
					string s = o as string;
					bool b;
					if (s == null)
						outsideTestSuite = false;
					else if (Boolean.TryParse (s, out b))
						outsideTestSuite = b;
					else
						outsideTestSuite = false;
				}

				return (bool)outsideTestSuite;
			}

			set
			{
				outsideTestSuite = value;
			}
		}

		public virtual Type ContextType
		{
			get { return typeof (DataContextType); }
		}

		public virtual Type ContainerType
		{
			get
			{
				if (containerType == null) {
					Type genType = typeof (TestDataContainer<>).GetGenericTypeDefinition ();
					containerType = genType.MakeGenericType (new Type[] { ContextType });
				}

				return containerType;
			}
		}

		public virtual string ContainerTypeName
		{
			get { return ContainerType.AssemblyQualifiedName; }
		}

		protected virtual IDynamicDataContainer<DataContextType> CreateContainerInstance ()
		{
			return Activator.CreateInstance (ContainerType) as IDynamicDataContainer<DataContextType>;
		}

		protected virtual void InitializeDataSource (DynamicDataSource ds, string tableName)
		{
			ds.DataContainerTypeName = ContainerTypeName;
			ds.EntitySetName = tableName;
			ds.ContextType = typeof (DataContextType);
			ds.DataContainerInstance = CreateContainerInstance ();

			PopulateDataSource (ds);
		}

		protected virtual void PopulateDataSource (DynamicDataSource ds)
		{
		}

		protected override void OnPreInit (EventArgs e)
		{
			if (!OutsideTestSuite) {
				WebTest t = WebTest.CurrentTest;
				if (t != null)
					t.Invoke (this);
			}
		}

		public void Item_DataBinding (object sender, EventArgs args)
		{
			EventHandler eh = ItemDataBinding;
			if (eh != null)
				eh (sender, args);
		}
	}
}