public void ConcatNew_ShouldMaintainOldChain(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.ConcatNew(extraPath); // assert var actualCount = sut.Count(); Assert.Equal(parms.Length, actualCount); Assert.Equal(parms.Length, sut.Length); var index = 0; foreach (var method in sut) { Assert.Equal(parms[index++], method.FullName); } }
public void ConcatNew_ConcatPartial_ShouldConcatFullChain(params string[][] parms) { // arrange var extraPath = new CodePath(); var sut = new CodePath(); foreach (var name in parms[0]) { var mockedMethod = Mock.Create <Method>(); Mock.Arrange(() => mockedMethod.FullName).Returns(name); sut.AddLast(mockedMethod); } foreach (var name in parms[1]) { var mockedMethod = Mock.Create <Method>(); Mock.Arrange(() => mockedMethod.FullName).Returns(name); extraPath.AddLast(mockedMethod); } // form expected final path var expected = parms[0].Concat(parms[1].Skip(2)); // act var newSut = sut.ConcatNew(extraPath.GetSubPaths().ToList()[1]); // assert Assert.Equal(parms[0].Length + parms[1].Length - 2, newSut.Count()); Assert.Equal(parms[0].Length + parms[1].Length - 2, newSut.Length); Assert.Equal(expected, newSut.Select(x => x.FullName)); }