public void ChainConcat_ToString() { var leftA = new[] { "a", "b", "c" }; var rightA = new[] { "c", "d" }; var chainedA = leftA.ChainConcat(rightA); Assert.AreEqual(chainedA.GetType().ToString(), chainedA.ToString()); var leftB = new List <string>(leftA); var rightB = new List <string>(rightA); var chainedB = leftB.ChainConcat(rightB); Assert.AreEqual(chainedB.GetType().ToString(), chainedB.ToString()); var leftC = new MyList1(leftA); var rightC = new MyList1(rightA); var chainedC = leftC.ChainConcat(rightC); Assert.AreEqual("a,b,c,c,d", chainedC.ToString()); var leftD = new MyList2(leftA); var rightD = new MyList2(rightA); var chainedD = leftD.ChainConcat(rightD); Assert.AreEqual("a, b, c, c, d", chainedD.ToString()); var leftE = new MyList3(leftA); var rightE = new MyList3(rightA); var chainedE = leftE.ChainConcat(rightE); Assert.AreEqual("a|b|c,c|d", chainedE.ToString()); var chainedF = leftA.ChainConcat(chainedD); Assert.AreEqual(chainedF.GetType().ToString(), chainedF.ToString()); var chainedG = chainedD.ChainConcat(rightA); Assert.AreEqual(chainedG.GetType().ToString(), chainedG.ToString()); var chainedH = chainedC.ChainConcat(chainedD); Assert.AreEqual("a,b,c,c,d, a, b, c, c, d", chainedH.ToString()); }