Пример #1
0
        public void TestAddAtomToEndOfSequence()
        {
            var seq = new KSEQReplicatedList <string>("test");

            seq.Insert(0, "a");
            seq.Insert(1, "b");
            Assert.AreEqual(2, seq.Count);
            Assert.AreEqual("a", seq[0]);
            Assert.AreEqual("b", seq[1]);
        }
Пример #2
0
        public void TestAtomToBeginningOfSequence()
        {
            var seq = new KSEQReplicatedList <string>("test");

            seq.Insert(0, "a");
            seq.Insert(1, "b");
            seq.Insert(0, "c");
            Assert.AreEqual(seq.Count, 3);
            Assert.AreEqual(seq[0], "c");
            Assert.AreEqual(seq[1], "a");
            Assert.AreEqual(seq[2], "b");
        }
Пример #3
0
        public void TestRandomSingleReplica()
        {
            var random = new Random();
            var alice  = new KSEQReplicatedList <int>("alice");
            var bob    = new KSEQReplicatedList <int>("bob");
            var ops    = Enumerable.Range(0, 1000).Select(i =>
            {
                alice.Insert(random.Next(i), i);
                return(alice.lastOp);
            }).Concat(Enumerable.Range(0, 500)
                      .Select(i =>
            {
                alice.RemoveAt(random.Next(1000 - i));
                return(alice.lastOp);
            })).ToArray();

            Shuffle(ops, random);

            foreach (var op in ops)
            {
                if (op != null)
                {
                    bob.Apply(op.Value);
                }
            }

            Assert.AreEqual(alice.Count, bob.Count);
            Assert.AreEqual(500, alice.Count);
            Assert.IsTrue(alice.ToArray().SequenceEqual(bob.ToArray()));
        }
Пример #4
0
        public void TestRemoveAtom()
        {
            var seq = new KSEQReplicatedList <string>("test");

            seq.Add("a");
            Assert.AreEqual("a", seq[0]);
            seq.RemoveAt(0);
            Assert.AreEqual(KSEQOperationTypes.Remove, seq.lastOp?.op);

            seq = new KSEQReplicatedList <string>("test");
            seq.Insert(0, "a");
            seq.Insert(1, "b");
            seq.Insert(2, "c");
            Assert.AreEqual(3, seq.Count);
            seq.RemoveAt(1);
            Assert.AreEqual(seq.Count, 2);
            Assert.AreEqual(seq[1], "c");
        }
Пример #5
0
        public void TestValidInsertOp()
        {
            var seq = new KSEQReplicatedList <string>("test");

            seq.Insert(0, "a");
            var op = seq.lastOp;

            Assert.AreEqual(KSEQOperationTypes.Insert, op?.op);
            Assert.AreEqual("a", op?.value);
        }
Пример #6
0
        public void TestAdd1000ItemsToBeginning()
        {
            var seq = new KSEQReplicatedList <int>("test");

            for (var i = 0; i < 1000; i++)
            {
                seq.Insert(0, i);
            }

            Assert.AreEqual(1000, seq.Count);
            Assert.AreEqual(0, seq[seq.Count - 1]);
            Assert.AreEqual(999, seq[0]);
        }
Пример #7
0
        public void TestRangeErrorInvalidIndex()
        {
            var seq = new KSEQReplicatedList <string>("test");

            Assert.Throws <ArgumentOutOfRangeException>(() => { seq.Insert(-1, "a"); });
        }