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);
        }
        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 Adapt_Equal_Ok()
        {
            DifferResultToMspAdapter adapter = new DifferResultToMspAdapter();

            var ops = adapter.Adapt(new diff_match_patch().diff_main("abc", "abc"));

            Assert.Empty(ops);
        }
        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_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 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_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_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);
        }