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]); }
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"); }
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())); }
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"); }
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); }
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]); }
public void TestRangeErrorInvalidIndex() { var seq = new KSEQReplicatedList <string>("test"); Assert.Throws <ArgumentOutOfRangeException>(() => { seq.Insert(-1, "a"); }); }