Ejemplo n.º 1
0
        public void TestMuptipleApply()
        {
            var str        = new EditorString();
            var operations = str.GenerateOperations("abc");

            str.ApplyOperations(operations);
            Assert.AreEqual("aabcbc", str.ToString());
        }
Ejemplo n.º 2
0
        public void TestSimple()
        {
            var str    = new EditorString();
            var remote = new EditorString();

            CheckChange(str, remote, "abcdef");
            CheckChange(str, remote, "abc123def");
        }
Ejemplo n.º 3
0
        public void TestReplace()
        {
            var str    = new EditorString();
            var remote = new EditorString();

            CheckChange(str, remote, "abc");
            CheckChange(str, remote, "123");
        }
Ejemplo n.º 4
0
        private static void CheckChange(EditorString str, EditorString remote, string change)
        {
            var operations = str.GenerateOperations(change);

            remote.ApplyOperations(operations);
            Assert.AreEqual(change, str.ToString());
            Assert.AreEqual(change, remote.ToString());
        }
        public void IncrementText_正常系_テキスト1をインクリメントして2になること()
        {
            var args     = "1";
            var expected = "2";

            var actual = EditorString.IncrementText(args);

            Assert.AreEqual(expected, actual);
        } // end function
Ejemplo n.º 6
0
        public void IncrementText_正常系_テキストa999をインクリメントしてa1000になること()
        {
            var args     = "a999";
            var expected = "a1000";

            var actual = EditorString.IncrementText(args);

            Assert.AreEqual(expected, actual);
        } // end function
Ejemplo n.º 7
0
        public void TestSplitApply()
        {
            var str        = new EditorString();
            var operations = new List <string>();

            operations.AddRange(str.GenerateOperations("1234567890"));

            var str2 = new EditorString();

            str2.ApplyOperations(operations.GetRange(0, operations.Count / 2));
            str2.ApplyOperations(operations.GetRange(operations.Count / 2, operations.Count / 2));
            Assert.AreEqual(str.ToString(), str2.ToString());
        }
Ejemplo n.º 8
0
        public void TestOneSymbol()
        {
            var str    = new EditorString();
            var remote = new EditorString();

            CheckChange(str, remote, "q");
            CheckChange(str, remote, "qq");
            CheckChange(str, remote, "qqq");
            CheckChange(str, remote, "qq");
            CheckChange(str, remote, "q");
            CheckChange(str, remote, "");
            CheckChange(str, remote, "1");
        }
Ejemplo n.º 9
0
        public void TestCombine()
        {
            var str        = new EditorString();
            var operations = new List <string>();

            operations.AddRange(str.GenerateOperations("abc"));
            operations.AddRange(str.GenerateOperations(""));
            operations.AddRange(str.GenerateOperations("def"));

            var str2 = new EditorString();

            str2.ApplyOperations(operations.ToArray());
            Assert.AreEqual("def", str2.ToString());
        }
Ejemplo n.º 10
0
 public void Save(Action <string> saveAction)
 {
     operationsLocker.EnterReadLock();
     try
     {
         var editorString = new EditorString();
         editorString.ApplyOperations(operationHistory);
         saveAction(editorString.ToString());
     }
     finally
     {
         operationsLocker.ExitReadLock();
     }
 }
Ejemplo n.º 11
0
        public void TestConcurrent2()
        {
            var str  = new EditorString();
            var str2 = new EditorString();
            var str3 = new EditorString();

            var gen1 = str.GenerateOperations("12");

            str2.ApplyOperations(gen1);

            var gen2 = str2.GenerateOperations("1a2");

            str.ApplyOperations(gen2);

            str3.ApplyOperations(gen1.Concat(gen2).ToArray());

            Assert.AreEqual(str.ToString(), str2.ToString());
            Assert.AreEqual(str.ToString(), str3.ToString());
        }
Ejemplo n.º 12
0
        public void TestConcurrent()
        {
            var str   = new EditorString();
            var gen1  = str.GenerateOperations("abc");
            var gen2a = str.GenerateOperations("adec");

            var str2 = new EditorString();

            str2.ApplyOperations(gen1);
            var gen2b = str2.GenerateOperations("aghc");

            str.ApplyOperations(gen2b);
            str2.ApplyOperations(gen2a);
            Assert.AreEqual("aghdebc", str.ToString());
            if (!(str2.ToString() == "agdehbc" || str2.ToString() == "adeghbc"))
            {
                Assert.Fail();
            }
        }
Ejemplo n.º 13
0
        public void TestOperations()
        {
            var clientId     = Guid.NewGuid();
            var clientId2    = Guid.NewGuid();
            var editorString = new EditorString(clientId);
            var operations1  = editorString.GenerateOperations("abc");


            documentSession.Change(clientId, new DocumenChange
            {
                Operations = operations1
            });
            var state = documentSession.GetState(clientId, null);

            Assert.AreEqual(0, state.Operations.Length);
            Assert.AreEqual(3, state.Revision);

            var state2 = documentSession.GetState(clientId2, null);

            Assert.AreEqual(3, state2.Operations.Length);
            Assert.AreEqual(3, state2.Revision);

            var operations2 = editorString.GenerateOperations("adebc");

            documentSession.Change(clientId, new DocumenChange()
            {
                Operations = operations2
            });
            var state3 = documentSession.GetState(clientId, null);

            Assert.AreEqual(0, state3.Operations.Length);
            Assert.AreEqual(5, state3.Revision);

            var state4 = documentSession.GetState(clientId2, 4);

            Assert.AreEqual(1, state4.Operations.Length);
            Assert.AreEqual(5, state4.Revision);
        }
Ejemplo n.º 14
0
        public void TestPerfomance()
        {
            var str       = new EditorString();
            var bigstring = new string('a', 2 * 1024 * 1024);

            Console.WriteLine(bigstring.Length);
            str.GenerateOperations(bigstring);

            bigstring = bigstring.Insert(bigstring.Length / 2, new string('b', bigstring.Length));
            Console.WriteLine(bigstring.Length);
            str.GenerateOperations(bigstring);

            bigstring = bigstring.Remove(bigstring.Length / 4, bigstring.Length / 2);
            Console.WriteLine(bigstring.Length);
            str.GenerateOperations(bigstring);

            bigstring = string.Concat(Enumerable.Repeat("ab", bigstring.Length / 2));
            Console.WriteLine(bigstring.Length);
            str.GenerateOperations(bigstring);

            Console.WriteLine(bigstring.Length);
            Assert.AreEqual(str.ToString(), bigstring);
        }