Exemple #1
0
        public void UsesStaticSerializerAndDeserializerMethodsAutomatically()
        {
            var key = new TangleKey("hello");

            Scheduler.WaitFor(Tangle.Set(key, new SpecialType(key, 4)));
            var result = Scheduler.WaitFor(Tangle.Get("hello"));

            Assert.AreEqual(4, result.Value);
        }
Exemple #2
0
        public void TestSimpleJoin()
        {
            for (int i = 0; i < 8; i++)
            {
                Scheduler.WaitFor(Tangle.Set(i, i * 2));
            }

            using (var otherTangle = new Tangle <int>(Scheduler, new SubStreamSource(Storage, "2_", false))) {
                var keys = new List <string>();
                for (int i = 0; i < 8; i++)
                {
                    var key = new String((char)('a' + i), 1);
                    keys.Add(key);
                    Scheduler.WaitFor(otherTangle.Set(key, i));
                }

                var joinResult = Scheduler.WaitFor(
                    otherTangle.Join(
                        Tangle, keys,
                        (leftValue) => leftValue
                        )
                    );

                for (int i = 0; i < 8; i++)
                {
                    var item = joinResult[i];
                    Assert.AreEqual(i, item.Key);
                    Assert.AreEqual(i * 2, item.Value);
                }
            }
        }
Exemple #3
0
        public void TestCascadingSelect()
        {
            using (var otherTangle1 = new Tangle <int>(Scheduler, new SubStreamSource(Storage, "2_", false)))
                using (var otherTangle2 = new Tangle <int>(Scheduler, new SubStreamSource(Storage, "3_", false))) {
                    Scheduler.WaitFor(Tangle.Set(1, 1));
                    Scheduler.WaitFor(otherTangle1.Set(2, 3));
                    Scheduler.WaitFor(otherTangle2.Set(2, 5));
                    Scheduler.WaitFor(otherTangle2.Set(3, 4));

                    var result = Scheduler.WaitFor(Tangle.CascadingSelect(
                                                       new [] { otherTangle1, otherTangle2 },
                                                       new [] { 1, 2, 3, 4 }
                                                       ));

                    Assert.AreEqual(new [] { 1, 3, 4, default(int) }, result);
                }
        }
Exemple #4
0
 protected IEnumerator <object> WriteLotsOfValues(Tangle <int> tangle, int numIterations, int direction)
 {
     if (direction > 0)
     {
         for (int i = 0; i < numIterations; i++)
         {
             yield return(tangle.Set(i, i));
         }
     }
     else
     {
         for (int i = numIterations - 1; i >= 0; i--)
         {
             yield return(tangle.Set(i, i));
         }
     }
 }
Exemple #5
0
 public void CanGetValueByNameAfterSettingIt()
 {
     Scheduler.WaitFor(Tangle.Set("hello", 1));
     Assert.AreEqual(1, Scheduler.WaitFor(Tangle.Get("hello")));
 }
Exemple #6
0
 public void OverwritingWithShorterStringWorks()
 {
     Scheduler.WaitFor(Tangle.Set("hello", "long string"));
     Assert.AreEqual("long string", Scheduler.WaitFor(Tangle.Get("hello")));
     Scheduler.WaitFor(Tangle.Set("hello", "world"));
     Assert.AreEqual("world", Scheduler.WaitFor(Tangle.Get("hello")));
 }
Exemple #7
0
 protected IEnumerator<object> WriteLotsOfValues(Tangle<int> tangle, int numIterations, int direction)
 {
     if (direction > 0)
         for (int i = 0; i < numIterations; i++) {
             yield return tangle.Set(i, i);
         }
     else
         for (int i = numIterations - 1; i >= 0; i--) {
             yield return tangle.Set(i, i);
         }
 }
Exemple #8
0
        public void TestSimpleJoin()
        {
            for (int i = 0; i < 8; i++)
                Scheduler.WaitFor(Tangle.Set(i, i * 2));

            using (var otherTangle = new Tangle<int>(Scheduler, new SubStreamSource(Storage, "2_", false))) {
                var keys = new List<string>();
                for (int i = 0; i < 8; i++) {
                    var key = new String((char)('a' + i), 1);
                    keys.Add(key);
                    Scheduler.WaitFor(otherTangle.Set(key, i));
                }

                var joinResult = Scheduler.WaitFor(
                    otherTangle.Join(
                        Tangle, keys,
                        (leftValue) => leftValue
                    )
                );

                for (int i = 0; i < 8; i++) {
                    var item = joinResult[i];
                    Assert.AreEqual(i, item.Key);
                    Assert.AreEqual(i * 2, item.Value);
                }
            }
        }
Exemple #9
0
        public void TestCascadingSelect()
        {
            using (var otherTangle1 = new Tangle<int>(Scheduler, new SubStreamSource(Storage, "2_", false)))
            using (var otherTangle2 = new Tangle<int>(Scheduler, new SubStreamSource(Storage, "3_", false))) {
                Scheduler.WaitFor(Tangle.Set(1, 1));
                Scheduler.WaitFor(otherTangle1.Set(2, 3));
                Scheduler.WaitFor(otherTangle2.Set(2, 5));
                Scheduler.WaitFor(otherTangle2.Set(3, 4));

                var result = Scheduler.WaitFor(Tangle.CascadingSelect(
                    new [] { otherTangle1, otherTangle2 },
                    new [] { 1, 2, 3, 4 }
                ));

                Assert.AreEqual(new [] { 1, 3, 4, default(int) }, result);
            }
        }
Exemple #10
0
        public void IndexUpdatedWhenAddingNewValues()
        {
            var ByValue = Scheduler.WaitFor(Tangle.CreateIndex("ByValue", (ref string v) => v));

            var key   = new TangleKey("hello");
            var value = "world";

            Scheduler.WaitFor(Tangle.Set(key, value));

            Assert.AreEqual(key, Scheduler.WaitFor(ByValue.FindOne(value)));
            Assert.AreEqual(value, Scheduler.WaitFor(ByValue.GetOne(value)));
        }