, xUnit.Net. , , ( ), . , .
.
public class SelectAllInLinq2SqlTests
{
[Fact]
public void Unsuccessful()
{
var filteredLesson =
(from l in Lessons
where l.statusID == SUBMITTED ||
l.statusID == APPROVED &&
l.projectID == (l.projectID.HasValue ? projectOne : l.projectID)
select l).ToList();
Assert.Equal(4, filteredLesson.Count);
}
[Fact]
public void Unsuccessful2()
{
var filteredLesson =
(from l in Lessons
where !l.projectID.HasValue ||
(l.statusID == SUBMITTED || l.statusID == APPROVED && l.projectID == projectOne)
select l).ToList();
Assert.Equal(4, filteredLesson.Count);
}
[Fact]
public void Unsuccessful2NotQuiteFixed()
{
var filteredLesson =
(from l in Lessons
where !l.projectID.HasValue
|| ((l.statusID == SUBMITTED || l.statusID == APPROVED)
&& l.projectID == projectOne)
select l).ToList();
Assert.Equal(4, filteredLesson.Count);
}
[Fact]
public void Sucessful()
{
var filteredLesson =
(from l in Lessons
where !l.projectID.HasValue && (l.statusID == SUBMITTED || l.statusID == APPROVED)
|| l.projectID == projectOne && (l.statusID == SUBMITTED || l.statusID == APPROVED)
select l).ToList();
Assert.Equal(4, filteredLesson.Count);
}
[Fact]
public void SucessfulRefined()
{
var filteredLesson =
(from l in Lessons
where (!l.projectID.HasValue || l.projectID == projectOne)
&& (l.statusID == SUBMITTED || l.statusID == APPROVED)
select l).ToList();
Assert.Equal(4, filteredLesson.Count);
}
public class Lesson
{
public int? projectID { get; set; }
public int statusID { get; set; }
}
const int OTHER = 0;
const int SUBMITTED = 1;
const int APPROVED = 2;
const int projectOne = 1;
Lesson[] Lessons = new[]
{
new Lesson { projectID = null, statusID = SUBMITTED},
new Lesson { projectID = null, statusID = APPROVED},
new Lesson { projectID = null, statusID = OTHER},
new Lesson { projectID = 1, statusID = SUBMITTED},
new Lesson { projectID = 1, statusID = APPROVED},
new Lesson { projectID = 1, statusID = OTHER},
new Lesson { projectID = 2, statusID = SUBMITTED},
new Lesson { projectID = 2, statusID = APPROVED},
new Lesson { projectID = 2, statusID = OTHER},
};
}
}