public void TestJoinWhenThrowingExeptions() { List <Employee> employees = null; var departmentList = new List <Department> { new Department { DepartmentID = 1, Name = "HR" }, new Department { DepartmentID = 2, Name = "Marketing" }, new Department { DepartmentID = 4, Name = "Sales" } }; Func <Employee, int> outerFunc = (employee) => employee.ID; Func <Department, int> innerFunc = (department) => department.DepartmentID; Func <Employee, Department, KeyValuePair <string, string> > selector = (employee, department) => { { return(new KeyValuePair <string, string>(employee.FirstName, department.Name)); } }; var result = LINQFunctions.Join(employees, departmentList, employee => outerFunc(employee), department => innerFunc(department), (employee, department) => selector(employee, department)); Assert.Throws <ArgumentNullException>(() => result.Count()); }