diff --git a/CSharpMath.Tests/PreTypesetting/MathListTest.cs b/CSharpMath.Tests/PreTypesetting/MathListTest.cs index 888de673e..45d943c35 100644 --- a/CSharpMath.Tests/PreTypesetting/MathListTest.cs +++ b/CSharpMath.Tests/PreTypesetting/MathListTest.cs @@ -2,6 +2,7 @@ using CSharpMath.Enumerations; using CSharpMath.Interfaces; using System; +using System.Linq; using Xunit; namespace CSharpMath.Tests { @@ -159,5 +160,19 @@ public void TestListCopy() { var list2 = AtomCloner.Clone(list, false); CheckClone(list, list2); } + + [Fact] + public void TestListCopyWithFusedItems() { + var builder = new MathListBuilder("12+x"); + var list = builder.Build(); + + var finalized = list.FinalizedList(); + var fusedCount = finalized.Sum(atom => atom.FusedAtoms?.Count ?? 0); + Assert.Equal(2, fusedCount); + + var copy = AtomCloner.Clone(finalized, true); + var fusedCopyCount = copy.Sum(atom => atom.FusedAtoms?.Count ?? 0); + Assert.Equal(2, fusedCopyCount); + } } } diff --git a/CSharpMath/Atoms/Atom/MathAtom.cs b/CSharpMath/Atoms/Atom/MathAtom.cs index d4270a4d8..e8fccbd54 100644 --- a/CSharpMath/Atoms/Atom/MathAtom.cs +++ b/CSharpMath/Atoms/Atom/MathAtom.cs @@ -47,6 +47,8 @@ public MathAtom(MathAtomType type, string nucleus) { public MathAtom(MathAtom cloneMe, bool finalize) { AtomType = cloneMe.AtomType; Nucleus = cloneMe.Nucleus; + if (cloneMe.FusedAtoms != null) + FusedAtoms = new List(cloneMe.FusedAtoms); Superscript = AtomCloner.Clone(cloneMe.Superscript, finalize); Subscript = AtomCloner.Clone(cloneMe.Subscript, finalize); IndexRange = cloneMe.IndexRange;