public void Concat_ShouldConcatFullChain(params string[] parms) { // arrange var extraPath = new CodePath(); var sut = new CodePath(); foreach (var name in parms) { var mockedMethod = Mock.Create <Method>(); Mock.Arrange(() => mockedMethod.FullName).Returns(name); extraPath.AddLast(mockedMethod); sut.AddLast(mockedMethod); } // act sut.Concat(extraPath); // assert Assert.Equal(parms.Length * 2, sut.Count()); Assert.Equal(parms.Length * 2, sut.Length); var index = 0; foreach (var method in sut) { Assert.Equal(parms[index % parms.Length], method.FullName); index++; } }