public async Task RemoteWithWorkSpaceAutoTest() { var repo = new ControlledRepository <NumberWorkSpace>(); var repo2 = new ControlledRepository <NumberWorkSpace>(); var remote = new ObjectRemoteWithWorkSpace <NumberWorkSpace>(repo2, true, true); await remote.AttachAsync(repo); var workspacePointer = repo.WorkSpace; Assert.AreEqual(0, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(0, repo.WorkSpace.NumberStore); Assert.AreEqual(0, repo2.WorkSpace.NumberStore); repo.ApplyChange(new AddModification(5)); repo.ApplyChange(new AddModification(50)); await Task.Delay(10); var workspacePointerNew = repo.WorkSpace; Assert.AreEqual(55, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(55, repo.WorkSpace.NumberStore); Assert.AreEqual(55, repo2.WorkSpace.NumberStore); Assert.AreEqual(workspacePointer, workspacePointerNew); }
public async Task ObserveTheChange() { var repo = new ControlledRepository <NumberWorkSpace>(); var happendTimes = 0; repo.PropertyChanged += (_, e) => { if (e.PropertyName == nameof(repo.WorkSpace)) { happendTimes++; } }; Assert.AreEqual(0, happendTimes); repo.ApplyChange(new AddModification(5)); Assert.AreEqual(1, happendTimes); var repo2 = new ControlledRepository <NumberWorkSpace>(); repo.ApplyChange(new AddModification(5000)); var remote = new ObjectRemoteWithWorkSpace <NumberWorkSpace>(repo2); await remote.AttachAsync(repo); await remote.PullAsync(); Assert.AreEqual(2, happendTimes); }
public void ControlledRepositoryTest() { var repo = new ControlledRepository <NumberWorkSpace>(); repo.ApplyChange(new AddModification(5)); Assert.AreEqual(5, repo.WorkSpace.NumberStore); repo.ApplyChange(new AddModification(50)); Assert.AreEqual(55, repo.WorkSpace.NumberStore); }
public async Task RemoteWithWorkSpaceTest() { var repo = new ControlledRepository <NumberWorkSpace>(); repo.ApplyChange(new AddModification(5)); repo.ApplyChange(new AddModification(50)); var repo2 = new ControlledRepository <NumberWorkSpace>(); var remote = new ObjectRemoteWithWorkSpace <NumberWorkSpace>(repo2); await remote.AttachAsync(repo); await remote.PushAsync(); Assert.AreEqual(55, repo.WorkSpace.NumberStore); Assert.AreEqual(55, repo2.WorkSpace.NumberStore); Assert.AreEqual(0, remote.RemoteWorkSpace.NumberStore); await remote.PullAsync(); Assert.AreEqual(55, repo.WorkSpace.NumberStore); Assert.AreEqual(55, repo2.WorkSpace.NumberStore); Assert.AreEqual(55, remote.RemoteWorkSpace.NumberStore); }
public ObjectRemoteWithWorkSpace(ControlledRepository <T> localRepository, bool autoPush = false, bool autoPull = false) : base(new FakeConnection <IModification <T> >(localRepository), autoPush, autoPull) { }
public async Task RemoteWithMergeWorkSpaceTest(bool commitBefore) { var repo = new ControlledRepository <NumberWorkSpace>(); var repo2 = new ControlledRepository <NumberWorkSpace>(); var remote = new ObjectRemoteWithWorkSpace <NumberWorkSpace>(repo2); await remote.AttachAsync(repo); Assert.AreEqual(0, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(0, repo.WorkSpace.NumberStore); Assert.AreEqual(0, repo2.WorkSpace.NumberStore); repo.ApplyChange(new AddModification(5)); repo.ApplyChange(new AddModification(50)); Assert.AreEqual(0, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(55, repo.WorkSpace.NumberStore); // 5, 50 Assert.AreEqual(0, repo2.WorkSpace.NumberStore); // 0 await remote.PushAsync(); Assert.AreEqual(0, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(55, repo.WorkSpace.NumberStore); // 5, 50 Assert.AreEqual(55, repo2.WorkSpace.NumberStore); // 5, 50 await remote.PullAsync(); Assert.AreEqual(55, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(55, repo.WorkSpace.NumberStore); // 5, 50 Assert.AreEqual(55, repo2.WorkSpace.NumberStore); // 5, 50 repo.ApplyChange(new AddModification(100)); Assert.AreEqual(55, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(155, repo.WorkSpace.NumberStore); // 5, 50, 100 Assert.AreEqual(55, repo2.WorkSpace.NumberStore); // 5, 50 repo2.ApplyChange(new AddModification(1000)); Assert.AreEqual(55, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(155, repo.WorkSpace.NumberStore); // 5, 50, 100 Assert.AreEqual(1055, repo2.WorkSpace.NumberStore); // 5, 50, 1000 await remote.PushAsync(); Assert.AreEqual(55, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(155, repo.WorkSpace.NumberStore); // 5, 50, 100 Assert.AreEqual(1155, repo2.WorkSpace.NumberStore); // 5, 50, 1000, 100 if (commitBefore) { repo.ApplyChange(new AddModification(3)); await remote.PullAsync(); Assert.AreEqual(1155, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(1158, repo.WorkSpace.NumberStore); // 5, 50, 1000, 100, 3 Assert.AreEqual(1155, repo2.WorkSpace.NumberStore); // 5, 50, 1000, 100 } else { await remote.PullAsync(); Assert.AreEqual(1155, remote.RemoteWorkSpace.NumberStore); Assert.AreEqual(1155, repo.WorkSpace.NumberStore); // 5, 50, 1000, 100 Assert.AreEqual(1155, repo2.WorkSpace.NumberStore); // 5, 50, 1000, 100 } }