public void ApplyPatches_Mov_Ok() { TokenTextLayerPart <CommentLayerFragment> part = GetCommentLayerPart(new[] { "1.1", "1.2" }); string json = SerializePart(part); AnonLayerPart anon = DeserializeAnonLayerPart(json); string json2 = anon.ApplyPatches(json, new[] { "mov 1.1 3.1" }); // anon has been synched to changes in its source JSON Assert.Equal(2, anon.Fragments.Count); Assert.NotNull(anon.Fragments.Find(fr => fr.Location == "3.1")); Assert.NotNull(anon.Fragments.Find(fr => fr.Location == "1.2")); // layer was patched TokenTextLayerPart <CommentLayerFragment> part2 = (TokenTextLayerPart <CommentLayerFragment>) DeserializePart(json2, part.GetType()); Assert.Equal(2, part2.Fragments.Count); CommentLayerFragment fr = part2.Fragments.Find(fr => fr.Location == "3.1"); Assert.NotNull(fr); Assert.Equal("3.1", fr.Location); Assert.Equal("tag", fr.Tag); Assert.Equal("Comment 1", fr.Text); fr = part2.Fragments.Find(fr => fr.Location == "1.2"); Assert.NotNull(fr); Assert.Equal("1.2", fr.Location); Assert.Equal("tag", fr.Tag); Assert.Equal("Comment 2", fr.Text); }
public void GetFragmentHints_EquMovedCoincident_Ok() { IList <YXEditOperation> operations = GetOperations("alpha beta", "alpha x beta"); AnonLayerPart part = new AnonLayerPart { Fragments = new List <AnonFragment> { new AnonFragment("1.1"), new AnonFragment("1.2") } }; IList <LayerHint> fragments = part.GetFragmentHints(operations); Assert.Equal(2, fragments.Count); // 1.1 LayerHint fr = fragments[0]; Assert.Equal("1.1", fr.Location); Assert.Equal(0, fr.ImpactLevel); Assert.Null(fr.EditOperation); // 1.2 fr = fragments[1]; Assert.Equal("1.2", fr.Location); Assert.Equal(2, fr.ImpactLevel); Assert.Equal("mov 1.2 1.3", fr.PatchOperation); Assert.NotNull(fr.Description); }
public void ApplyPatches_DelAndMov_Ok() { TokenTextLayerPart <CommentLayerFragment> part = GetCommentLayerPart(new[] { "1.1", "1.2" }); string json = SerializePart(part); AnonLayerPart anon = DeserializeAnonLayerPart(json); string json2 = anon.ApplyPatches(json, new[] { "del 1.1", "mov 1.2 1.1" }); // anon has been synched to changes in its source JSON Assert.Single(anon.Fragments); Assert.Equal("1.1", anon.Fragments[0].Location); // layer was patched TokenTextLayerPart <CommentLayerFragment> part2 = (TokenTextLayerPart <CommentLayerFragment>) DeserializePart(json2, part.GetType()); Assert.Single(part2.Fragments); CommentLayerFragment fr = part2.Fragments[0]; Assert.Equal("1.1", fr.Location); Assert.Equal("tag", fr.Tag); Assert.Equal("Comment 2", fr.Text); }
public void ApplyPatches_InvalidPatch_Unchanged() { TokenTextLayerPart <CommentLayerFragment> part = GetCommentLayerPart(new[] { "1.1" }); string json = SerializePart(part); AnonLayerPart anon = DeserializeAnonLayerPart(json); string json2 = anon.ApplyPatches(json, new[] { "fake 1.1" }); Assert.Equal(json, json2); }
public void ApplyPatches_Empty_Unchanged() { TokenTextLayerPart <CommentLayerFragment> part = GetCommentLayerPart(new[] { "1.1" }); string json = SerializePart(part); AnonLayerPart anon = DeserializeAnonLayerPart(json); string json2 = anon.ApplyPatches(json, Array.Empty <string>()); Assert.Equal(json, json2); }
public void GetFragmentHints_Equ_Ok() { IList <YXEditOperation> operations = GetOperations("alpha beta", "alpha beta"); AnonLayerPart part = new AnonLayerPart { Fragments = new List <AnonFragment> { new AnonFragment("1.1") } }; IList <LayerHint> fragments = part.GetFragmentHints(operations); Assert.Single(fragments); // 1.1 LayerHint fr = fragments[0]; Assert.Equal("1.1", fr.Location); Assert.Equal(0, fr.ImpactLevel); Assert.Null(fr.EditOperation); }
public void GetFragmentHints_RepOverlapOrCoincident_Ok(string loc) { IList <YXEditOperation> operations = GetOperations("alpha beta", "alpha x"); AnonLayerPart part = new AnonLayerPart { Fragments = new List <AnonFragment> { new AnonFragment(loc) } }; IList <LayerHint> fragments = part.GetFragmentHints(operations); Assert.Single(fragments); LayerHint fr = fragments[0]; Assert.Equal(loc, fr.Location); Assert.Equal(1, fr.ImpactLevel); Assert.Equal(operations[1].ToString(), fr.EditOperation); Assert.Null(fr.PatchOperation); }
public void GetFragmentHints_DelCoincident_Ok() { IList <YXEditOperation> operations = GetOperations("alpha beta", "beta"); AnonLayerPart part = new AnonLayerPart { Fragments = new List <AnonFragment> { new AnonFragment("1.1") } }; IList <LayerHint> fragments = part.GetFragmentHints(operations); Assert.Single(fragments); // 1.1 LayerHint fr = fragments[0]; Assert.Equal("1.1", fr.Location); Assert.Equal(2, fr.ImpactLevel); Assert.Equal(operations[0].ToString(), fr.EditOperation); Assert.Equal("del 1.1", fr.PatchOperation); }
public void GetFragmentHints_DelOverlapping_Ok() { IList <YXEditOperation> operations = GetOperations("alpha beta", "beta"); AnonLayerPart part = new AnonLayerPart { Fragments = new List <AnonFragment> { new AnonFragment("1.1-1.2") } }; IList <LayerHint> fragments = part.GetFragmentHints(operations); Assert.Single(fragments); // 1.1-1.2 LayerHint fr = fragments[0]; Assert.Equal("1.1-1.2", fr.Location); Assert.Equal(1, fr.ImpactLevel); Assert.Equal(operations[1].ToString(), fr.EditOperation); Assert.Null(fr.PatchOperation); }