From bee85570f73f164d8eb52edce77f3ea74824b90f Mon Sep 17 00:00:00 2001 From: FoggyFinder Date: Thu, 24 Oct 2019 12:46:17 +0300 Subject: [PATCH 1/2] copy FusedAtoms --- CSharpMath/Atoms/Atom/MathAtom.cs | 2 ++ 1 file changed, 2 insertions(+) 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; From 4b8edc76063ae02c8c130169f3e75dc13a29d2af Mon Sep 17 00:00:00 2001 From: FoggyFinder Date: Thu, 24 Oct 2019 13:41:46 +0300 Subject: [PATCH 2/2] add test --- CSharpMath.Tests/PreTypesetting/MathListTest.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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); + } } }