public void GetSubPaths_SubPathsHaveValidProperties(params string[] parms) { // arrange var sut = new CodePath(); foreach (var name in parms) { var mockedMethod = Mock.Create <Method>(); Mock.Arrange(() => mockedMethod.FullName).Returns(name); sut.AddLast(mockedMethod); } // act var subPathsList = sut.GetSubPaths().ToList(); // assert for (int i = 0; i < subPathsList.Count; i++) { var currentPath = subPathsList[i]; Assert.Equal(sut.Length - i - 1, currentPath.Length); Assert.Equal(sut.ElementAt(i + 1), currentPath.FirstMethod); Assert.Equal(sut.LastMethod, currentPath.LastMethod); } }