예제 #1
0
        public async Task DoubleWayDataBinding()
        {
            var repoA = new Repository <LogItem>();

            await new WebSocketRemote <LogItem>(EndpointUrl)
            .AttachAsync(repoA);

            var repoB = new Repository <LogItem>();

            await new WebSocketRemote <LogItem>(EndpointUrl)
            .AttachAsync(repoB);

            repoA.Commit(new LogItem {
                Message = "G"
            });
            repoA.Commit(new LogItem {
                Message = "H"
            });
            repoA.Commit(new LogItem {
                Message = "X"
            });
            repoB.Commit(new LogItem {
                Message = "Z"
            });

            repoA.AssertEqual(repoB, 4);
            repoA.AssertEqual(RepositoryContainer.GetRepositoryForTest(), 4);
        }
예제 #2
0
        public async Task SimpleCommitWithRemote()
        {
            var repo   = new Repository <LogItem>();
            var remote = await new WebSocketRemote <LogItem>(EndpointUrl)
                         .AttachAsync(repo);

            repo.Commit(new LogItem {
                Message = "1"
            });
            repo.Commit(new LogItem {
                Message = "2"
            });

            await Task.Delay(50); // Wait for the pull to update pointer.

            Assert.IsNotNull(remote.PullPointer);

            var remoteRepo = RepositoryContainer.GetRepositoryForTest();

            remoteRepo.Assert(
                new LogItem {
                Message = "1"
            },
                new LogItem {
                Message = "2"
            });

            repo.Assert(
                new LogItem {
                Message = "1"
            },
                new LogItem {
                Message = "2"
            });
        }
예제 #3
0
        public async Task OneCommitSync()
        {
            var repoA = new Repository <LogItem>();

            await new WebSocketRemote <LogItem>(EndpointUrl)
            .AttachAsync(repoA);

            var repoB = new Repository <LogItem>();

            await new WebSocketRemote <LogItem>(EndpointUrl)
            .AttachAsync(repoB);

            repoA.Commit(new LogItem {
                Message = "1"
            });

            RepositoryContainer.GetRepositoryForTest().Assert(
                new LogItem {
                Message = "1"
            });
            repoA.Assert(
                new LogItem {
                Message = "1"
            });
            repoB.Assert(
                new LogItem {
                Message = "1"
            });
        }
예제 #4
0
        public async Task OnewayAutoPull()
        {
            var repo = new Repository <LogItem>();

            await new WebSocketRemote <LogItem>(EndpointUrl).AttachAsync(repo);

            var repo2 = new Repository <LogItem>();

            await new WebSocketRemote <LogItem>(EndpointUrl).AttachAsync(repo2);

            repo.Commit(new LogItem {
                Message = "1"
            });
            repo.Commit(new LogItem {
                Message = "2"
            });
            repo.Commit(new LogItem {
                Message = "3"
            });

            repo.Assert(
                new LogItem {
                Message = "1"
            },
                new LogItem {
                Message = "2"
            },
                new LogItem {
                Message = "3"
            });
            RepositoryContainer.GetRepositoryForTest().Assert(
                new LogItem {
                Message = "1"
            },
                new LogItem {
                Message = "2"
            },
                new LogItem {
                Message = "3"
            });
            repo2.Assert(
                new LogItem {
                Message = "1"
            },
                new LogItem {
                Message = "2"
            },
                new LogItem {
                Message = "3"
            });
        }
예제 #5
0
        public async Task PreviousPushedTest()
        {
            var repo = new Repository <LogItem>();

            repo.Commit(new LogItem {
                Message = "1"
            });
            repo.Commit(new LogItem {
                Message = "2"
            });

            var remote = await new WebSocketRemote <LogItem>(EndpointUrl)
                         .AttachAsync(repo);

            await Task.Delay(50);

            Assert.IsNotNull(remote.PullPointer);

            var remoteRepo = RepositoryContainer.GetRepositoryForTest();

            remoteRepo.Assert(
                new LogItem {
                Message = "1"
            },
                new LogItem {
                Message = "2"
            });

            repo.Assert(
                new LogItem {
                Message = "1"
            },
                new LogItem {
                Message = "2"
            });
        }