public void Adapt_RepMultiple_Ok() { DifferResultToMspAdapter adapter = new DifferResultToMspAdapter(); var ops = adapter.Adapt(new diff_match_patch().diff_main("abcde", "XbYdZ")); Assert.Equal(3, ops.Count); // X MspOperation op = ops[0]; Assert.Equal(MspOperator.Replace, op.Operator); Assert.Equal("1", op.RangeA.ToString()); Assert.Equal("a", op.ValueA); Assert.Equal("X", op.ValueB); // Y op = ops[1]; Assert.Equal(MspOperator.Replace, op.Operator); Assert.Equal("3", op.RangeA.ToString()); Assert.Equal("c", op.ValueA); Assert.Equal("Y", op.ValueB); // Z op = ops[2]; Assert.Equal(MspOperator.Replace, op.Operator); Assert.Equal("5", op.RangeA.ToString()); Assert.Equal("e", op.ValueA); Assert.Equal("Z", op.ValueB); }
public void Seed_WithTags_Ok() { OrthographyLayerFragmentSeeder seeder = new OrthographyLayerFragmentSeeder(); seeder.SetSeedOptions(_seedOptions); seeder.Configure(new OrthographyLayerFragmentSeederOptions { Tags = new[] { "alpha", "beta", "gamma" } }); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); OrthographyLayerFragment fr = fragment as OrthographyLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotNull(fr.Standard); Assert.Single(fr.Operations); MspOperation op = MspOperation.Parse(fr.Operations[0]); Assert.NotNull(op.Tag); }
public void Adapt_InsRepDel_Ok() { DifferResultToMspAdapter adapter = new DifferResultToMspAdapter(); var ops = adapter.Adapt(new diff_match_patch().diff_main("bxdf", "AbCd")); Assert.Equal(3, ops.Count); // ins MspOperation op = ops[0]; Assert.Equal(MspOperator.Insert, op.Operator); Assert.Equal("1×0", op.RangeA.ToString()); Assert.Equal("A", op.ValueB); // rep op = ops[1]; Assert.Equal(MspOperator.Replace, op.Operator); Assert.Equal("2", op.RangeA.ToString()); Assert.Equal("x", op.ValueA); Assert.Equal("C", op.ValueB); // del op = ops[2]; Assert.Equal(MspOperator.Delete, op.Operator); Assert.Equal("4", op.RangeA.ToString()); Assert.Equal("f", op.ValueA); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="location">The location.</param> /// <param name="baseText">The base text.</param> /// <returns>A new fragment.</returns> /// <exception cref="ArgumentNullException">item or location or /// baseText</exception> public override ITextLayerFragment GetFragment( IItem item, string location, string baseText) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (location == null) { throw new ArgumentNullException(nameof(location)); } if (baseText == null) { throw new ArgumentNullException(nameof(baseText)); } // find 1st letter int i = 0; while (i < baseText.Length) { if (char.IsLetter(baseText[i])) { break; } i++; } if (i == baseText.Length) { return(null); } // change it string standard = ChangeLetterAt(baseText, i); // create operation MspOperation op = new MspOperation { Operator = MspOperator.Replace, RangeA = new TextRange(i, 1), ValueA = new string(baseText[i], 1), ValueB = new string(standard[i], 1), Tag = _options?.Tags?.Length > 0 ? SeedHelper.RandomPickOneOf(_options.Tags) : null }; OrthographyLayerFragment fragment = new OrthographyLayerFragment { Location = location, Standard = standard }; fragment.Operations.Add(op.ToString()); return(fragment); }
public void ToString_Delete_Ok(string tag, string note, string expected) { MspOperation op = new MspOperation { Operator = MspOperator.Delete, RangeA = TextRange.Parse("2x3"), Tag = tag, Note = note }; Assert.Equal(expected, op.ToString()); }
public void ToString_Insert_Ok(string tag, string note, string expected) { MspOperation op = new MspOperation { Operator = MspOperator.Insert, RangeA = TextRange.Parse("2x0"), ValueB = "new", Tag = tag, Note = note }; Assert.Equal(expected, op.ToString()); }
public void ToString_ReplaceWithValueA_Ok(string tag, string note, string expected) { MspOperation op = new MspOperation { Operator = MspOperator.Replace, RangeA = TextRange.Parse("2x3"), ValueA = "old", ValueB = "new", Tag = tag, Note = note }; Assert.Equal(expected, op.ToString()); }
public void Adapt_InsInitial_Ok() { DifferResultToMspAdapter adapter = new DifferResultToMspAdapter(); var ops = adapter.Adapt(new diff_match_patch().diff_main("eros", "heros")); Assert.Single(ops); // ins MspOperation op = ops[0]; Assert.Equal(MspOperator.Insert, op.Operator); Assert.Equal("1×0", op.RangeA.ToString()); Assert.Equal("h", op.ValueB); }
public void Adapt_DelFinal_Ok() { DifferResultToMspAdapter adapter = new DifferResultToMspAdapter(); var ops = adapter.Adapt(new diff_match_patch().diff_main("hocc", "hoc")); Assert.Single(ops); // del MspOperation op = ops[0]; Assert.Equal(MspOperator.Delete, op.Operator); Assert.Equal("4", op.RangeA.ToString()); Assert.Equal("c", op.ValueA); }
public void Adapt_RepFinal_Ok() { DifferResultToMspAdapter adapter = new DifferResultToMspAdapter(); var ops = adapter.Adapt(new diff_match_patch().diff_main("victo", "victu")); Assert.Single(ops); // rep MspOperation op = ops[0]; Assert.Equal(MspOperator.Replace, op.Operator); Assert.Equal("5", op.RangeA.ToString()); Assert.Equal("o", op.ValueA); Assert.Equal("u", op.ValueB); }
public void Adapt_RepWithShorter_Ok() { DifferResultToMspAdapter adapter = new DifferResultToMspAdapter(); var ops = adapter.Adapt(new diff_match_patch().diff_main("vicsit", "vixit")); Assert.Single(ops); // rep MspOperation op = ops[0]; Assert.Equal(MspOperator.Replace, op.Operator); Assert.Equal("3×2", op.RangeA.ToString()); Assert.Equal("cs", op.ValueA); Assert.Equal("x", op.ValueB); }
public void Adapt_MovFromEnd_Ok() { DifferResultToMspAdapter adapter = new DifferResultToMspAdapter(); var ops = adapter.Adapt(new diff_match_patch().diff_main("abX", "Xab")); Assert.Single(ops); // mov MspOperation op = ops[0]; Assert.Equal(MspOperator.Move, op.Operator); Assert.Equal("3", op.RangeA.ToString()); Assert.Equal("1×0", op.RangeB.ToString()); Assert.Equal("X", op.ValueA); }
public void Parse_SwapWithValuesAB_Ok(string tag, string note) { string text = AppendTagAndNote("\"a\"@2x1~\"b\"@4x1", tag, note); MspOperation op = MspOperation.Parse(text); // op: swap Assert.Equal(MspOperator.Swap, op.Operator); // ranges: A Assert.Equal("2", op.RangeA.ToString()); Assert.Equal("4", op.RangeB.ToString()); // values: A B Assert.Equal("a", op.ValueA); Assert.Equal("b", op.ValueB); // tag and notes Assert.Equal(tag, op.Tag); Assert.Equal(note, op.Note); }
public void Parse_MoveWithValueA_Ok(string tag, string note) { string text = AppendTagAndNote("\"a\"@2x1>@4", tag, note); MspOperation op = MspOperation.Parse(text); // op: move Assert.Equal(MspOperator.Move, op.Operator); // ranges: A Assert.Equal("2", op.RangeA.ToString()); Assert.Equal("4×0", op.RangeB.ToString()); // values: A Assert.Equal("a", op.ValueA); Assert.Null(op.ValueB); // tag and notes Assert.Equal(tag, op.Tag); Assert.Equal(note, op.Note); }
public void Parse_ReplaceWithValueA_Ok(string tag, string note) { string text = AppendTagAndNote("\"a\"@2x1=\"b\"", tag, note); MspOperation op = MspOperation.Parse(text); // op: replace Assert.Equal(MspOperator.Replace, op.Operator); // ranges: A Assert.Equal("2", op.RangeA.ToString()); Assert.Equal(TextRange.Empty, op.RangeB); // values: A B Assert.Equal("a", op.ValueA); Assert.Equal("b", op.ValueB); // tag and notes Assert.Equal(tag, op.Tag); Assert.Equal(note, op.Note); }
public void Parse_Insert_Ok(string tag, string note) { string text = AppendTagAndNote("@2x0=\"s\"", tag, note); MspOperation op = MspOperation.Parse(text); // op: delete Assert.Equal(MspOperator.Insert, op.Operator); // ranges: A Assert.Equal("2×0", op.RangeA.ToString()); Assert.Equal(TextRange.Empty, op.RangeB); // values: B Assert.Equal("s", op.ValueB); Assert.Null(op.ValueA); // tag and notes Assert.Equal(tag, op.Tag); Assert.Equal(note, op.Note); }
public void Seed_WithoutTags_Ok() { OrthographyLayerFragmentSeeder seeder = new OrthographyLayerFragmentSeeder(); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); OrthographyLayerFragment fr = fragment as OrthographyLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotNull(fr.Standard); Assert.Single(fr.Operations); MspOperation op = MspOperation.Parse(fr.Operations[0]); Assert.Null(op.Tag); }
public void Adapt_DelMultiple_Ok() { DifferResultToMspAdapter adapter = new DifferResultToMspAdapter(); var ops = adapter.Adapt(new diff_match_patch().diff_main("XabYcdZ", "abcd")); Assert.Equal(3, ops.Count); // X MspOperation op = ops[0]; Assert.Equal(MspOperator.Delete, op.Operator); Assert.Equal("1", op.RangeA.ToString()); Assert.Equal("X", op.ValueA); // Y op = ops[1]; Assert.Equal(MspOperator.Delete, op.Operator); Assert.Equal("4", op.RangeA.ToString()); Assert.Equal("Y", op.ValueA); // Z op = ops[2]; Assert.Equal(MspOperator.Delete, op.Operator); Assert.Equal("7", op.RangeA.ToString()); Assert.Equal("Z", op.ValueA); }
public void Parse_Whitespaces_Null() { MspOperation op = MspOperation.Parse(" \n "); Assert.Null(op); }
public void Parse_Empty_Null() { MspOperation op = MspOperation.Parse(""); Assert.Null(op); }
public void Parse_Null_Null() { MspOperation op = MspOperation.Parse(null); Assert.Null(op); }