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); }
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); } } }
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); } }
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)); } } }
public void CanGetValueByNameAfterSettingIt() { Scheduler.WaitFor(Tangle.Set("hello", 1)); Assert.AreEqual(1, Scheduler.WaitFor(Tangle.Get("hello"))); }
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"))); }
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); } }
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); } } }
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); } }
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))); }