//
//
//
//
// $Revision$
//
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
using ICSharpCode.PythonBinding;
using PythonBinding.Tests.Utils;
namespace PythonBinding.Tests.Designer
{
///
/// Base class for all LoadFormTestFixture classes.
///
public class LoadFormTestFixtureBase : IComponentCreator
{
List createdComponents = new List();
List createdInstances = new List();
List addedComponents = new List();
List typeNames = new List();
public LoadFormTestFixtureBase()
{
}
public IComponent CreateComponent(Type componentClass, string name)
{
CreatedComponent c = new CreatedComponent(componentClass.FullName, name);
createdComponents.Add(c);
object instance = componentClass.Assembly.CreateInstance(componentClass.FullName);
return (IComponent)instance;
}
public void Add(IComponent component, string name)
{
AddedComponent addedComponent = new AddedComponent(component, name);
addedComponents.Add(addedComponent);
}
public object CreateInstance(Type type, ICollection arguments, string name, bool addToContainer)
{
CreatedInstance createdInstance = new CreatedInstance(type, arguments, name, addToContainer);
createdInstances.Add(createdInstance);
object[] argumentsArray = new object[arguments.Count];
arguments.CopyTo(argumentsArray, 0);
object o = type.Assembly.CreateInstance(type.FullName, true, BindingFlags.CreateInstance, null, argumentsArray, null, new object[0]);
createdInstance.Object = o;
return o;
}
public Type GetType(string typeName)
{
typeNames.Add(typeName);
// Lookup type in System.Windows.Forms assembly.
Type type = typeof(Form).Assembly.GetType(typeName);
if (type == null) {
// Lookup type System.Drawing assembly.
type = typeof(Size).Assembly.GetType(typeName);
}
return type;
}
protected List CreatedComponents {
get { return createdComponents; }
}
protected List AddedComponents {
get { return addedComponents; }
}
protected List CreatedInstances {
get { return createdInstances; }
}
protected List TypeNames {
get { return typeNames; }
}
protected string LastTypeNameResolved {
get { return TypeNames[TypeNames.Count - 1]; }
}
protected CreatedInstance GetCreatedInstance(Type type)
{
foreach (CreatedInstance instance in createdInstances) {
if (instance.InstanceType == type) {
return instance;
}
}
return null;
}
}
}