LINQ for SQL unit testing Part1

Ian Cooper had some nice articles on how to do unit testing , i have implemented his code and ideas ( shown below) .

See Part 2 for some Business code

{
{
impl = source;
queryableImpl = impl.AsQueryable();
}
{
}
 
{
impl.Add(item);
queryableImpl = impl.AsQueryable();
}
 
 

 

 

 

 
 

 

{
}
 

 

#region
 
{
}
{
impl.Remove(item);
queryableImpl = impl.AsQueryable();
}
{
impl.RemoveAll(MatchWithContainer);
queryableImpl = impl.AsQueryable();
}
{
}
 

 

#endregion
#region
System.Collections.
{
}

 

#endregion
#region
{
}
{
}
{
}

 

#endregion

 

}

 

 

public interface IDataSource<T> : IQueryable<T>, IEnumerable<T>,ITable, IQueryProvider

{

}

 

 

{

 

 

 

 

}

public

 

{

 

 

 

 

 

 

}

interface IUnitOfWork<T> :IDisposableILINQDataSource<T> DataSource{ get; set; } //table// bool ReadOnly { get; set; }void SubmitChanges(); // only call for inserts OR when all work is done

 

 

{

 

 

 

 

 

{

 

unitOfWork = work;

}

 

 

 

 

 

 

 

 

 

 

{

 

 

#region

 

 

{

 

 

{

 

}

 

 

{

dataSource =

}

}

 

 

 

#region

 

 

 

public abstract class UnitOfWorkBase<T> : IUnitOfWork<T>ILINQDataSource<T> dataSource; IUnitofWork<T> Memberspublic ILINQDataSource<T> DataSourcegetreturn dataSource;setvalue ;abstract public bool ReadOnly { get; set; }abstract public void SubmitChanges();#endregion IDisposable Membersabstract public void Dispose();#endregion}public class RepositryBase<T> where T : classprotected IUnitOfWork<T> unitOfWork;public RepositryBase(IUnitOfWork<T> work) Guard.ArgumentNotNull(work, "work");//public IQueryable<T> T//{// get { return gameSettings; }// set { gameSettings = value; }//} }public interface ILINQDataSource<T> : IQueryable<T>, IEnumerable<T> void Add(T item);void Attach(T item);void Remove(T item);void RemoveAll(IEnumerable<T> items);
publicclassMemoryDataSource<T> : ILINQDataSource<T> List<T> impl;IQueryable<T> queryableImpl;public MemoryDataSource(List<T> source)public MemoryDataSource(): this(newList<T>())publicvoid Add(T item)//public IQueryable<S> CreateQuery<S>(Expression expression)//{// return queryableImpl..CreateQuery<S>(expression);//}IEnumerator<T> IEnumerable<T>.GetEnumerator()return impl.GetEnumerator(); ITable<T> Memberspublicvoid Attach(T item)return; publicvoid Remove(T item)publicvoid RemoveAll(IEnumerable<T> items)internalbool MatchWithContainer(T item)return impl.Contains(item); IEnumerable MembersIEnumerator System.Collections.IEnumerable.GetEnumerator()return impl.GetEnumerator(); IQueryable Memberspublic System.Type ElementTypeget { return queryableImpl.ElementType; }publicExpression Expressionget { return queryableImpl.Expression; }publicIQueryProvider Providerget { return queryableImpl.Provider; }
Print | posted on Thursday, January 15, 2009 12:25 AM

Feedback

No comments posted yet.
Title  
Name
Email (never displayed)
Url
Comments   
Please add 2 and 4 and type the answer here: