Hi ,
I want to write a unit test for a small class where it has following execution paths
private bool? DetermineCheckState()
{
try
{
//1.where ProjectsOperationData is a ObservableCollection<ProjectOperationData>{get;set;}
//2 IsSelected is a public property in ProjectOperationData Class
bool allChildrenChecked = ProjectsOperationData.Count(x => x.IsSelected == true) == ProjectsOperationData.Count;
if (allChildrenChecked)
{
return true;
}
//2. returns false if any project is not selected in Project Operations Form
bool allChildrenUnChecked = ProjectsOperationData.Count(x => x.IsSelected == false) == ProjectsOperationData.Count;
if (allChildrenUnChecked)
{
return false;
}
}
}
return null;
}
Can anyone suggest a way to write unit test?
5 Answers, 1 is accepted
Hello Surya,
Thank you for contacting us. Due to the Christmas holidays, we are currently working with limited capacity and thus, we will need some additional time in order to address your inquiry correctly. We will get back to you as soon as possible.
Thank you for your understanding.
Regards,
Dinko
Progress Telerik

Hello Surya,
We will get back to you within the next few working days (next Monday at the latest).
Regards,
Martin Ivanov
Progress Telerik

Hello Surya,
The basic unit test scenarios which cover the main use cases could look like the ones below (SampleClass is the target class under test, please replace with your own):
[TestMethod]
public void TestChecked()
{
// Arrange
var sut = new SampleClass();
Mock.Arrange(() => sut.ProjectsOperationData)
.ReturnsCollection(
new ObservableCollection<ProjectOperationData>()
{
new ProjectOperationData() { IsSelected = true },
new ProjectOperationData() { IsSelected = true },
new ProjectOperationData() { IsSelected = true },
new ProjectOperationData() { IsSelected = true },
new ProjectOperationData() { IsSelected = true },
})
.MustBeCalled();
// Act
var sutAccessor = new PrivateAccessor(sut);
bool? result = (bool?)sutAccessor.CallMethod("DetermineCheckState");
// Assert
Mock.Assert(sut);
Assert.IsTrue(result.HasValue && result.Value);
}
[TestMethod]
public void TestUnchecked()
{
// Arrange
var sut = new SampleClass();
Mock.Arrange(() => sut.ProjectsOperationData)
.ReturnsCollection(
new ObservableCollection<ProjectOperationData>()
{
new ProjectOperationData() { IsSelected = false },
new ProjectOperationData() { IsSelected = false },
new ProjectOperationData() { IsSelected = false },
new ProjectOperationData() { IsSelected = false },
new ProjectOperationData() { IsSelected = false },
})
.MustBeCalled();
// Act
var sutAccessor = new PrivateAccessor(sut);
bool? result = (bool?)sutAccessor.CallMethod("DetermineCheckState");
// Assert
Mock.Assert(sut);
Assert.IsTrue(result.HasValue && !result.Value);
}
[TestMethod]
public void TestUndetermined()
{
// Arrange
var sut = new SampleClass();
Mock.Arrange(() => sut.ProjectsOperationData)
.ReturnsCollection(
new ObservableCollection<ProjectOperationData>()
{
new ProjectOperationData() { IsSelected = true },
new ProjectOperationData() { IsSelected = true },
new ProjectOperationData() { IsSelected = true },
new ProjectOperationData() { IsSelected = true },
new ProjectOperationData() { IsSelected = false },
})
.MustBeCalled();
// Act
var sutAccessor = new PrivateAccessor(sut);
bool? result = (bool?)sutAccessor.CallMethod("DetermineCheckState");
// Assert
Mock.Assert(sut);
Assert.IsTrue(!result.HasValue);
}
I hope the provided information answers your questions. If you need any further assistance do not hesitate to write us back.
Regards,
Ivo
Progress Telerik