Esempio n. 1
0
        public override IList<BlipOperation> ApplyAndReturnReverse(IBlipData target)
        {
            var reverseContext = CreateReverseContext(target);
            
            // Update metadata
            var reverseMethod = Update(target, _method);

            target.Content.Consume(ContentOp);

            var reverseContentOp = DocOpInverter<IDocOp>.Invert(ContentOp);

            var reverseOp = new BlipContentOperation(reverseContext, reverseContentOp, reverseMethod);
            
            return new ReadOnlyCollection<BlipOperation>(new BlipOperation[] { reverseOp });
        }
        public void ReverseRestoresContent()
        {
            var op = new BlipContentOperation(Context, docOp);
            var blip = WaveletData.CreateDocument("root", Fred, NoParticipants, EmptyDocument.Empty, new DateTime(), 0L);

            var reverseOps = op.ApplyAndReturnReverse(blip);

            foreach (var reverse in reverseOps)
            {
                reverse.Apply(blip);
            }

            blip.Contributors.Should().BeEmpty();
            //blip.Content.Should().Be("");
        }
        public void Apply()
        {
            var op = new BlipContentOperation(Context, docOp);
            var holderFactory = WaveNET.Core.Model.Wave.Data.WaveletData.WaveletDataFactory.Create(A.Fake<IDocumentFactory>());
            var wavelet = WaveletDataFactory<IWaveletData>.Of(holderFactory).Create();

            var blip = wavelet.CreateDocument("root", Jane, NoParticipants, EmptyDocument.Empty, new DateTime(), 0L);

            op.Apply(blip);

            // editing the document makes the op creator a blip contributor
            blip.Contributors.Should().Contain(Fred);

            // the op eventually reached the document
            //docOp.Should().Be(blip.Content);

            //// the op eventually reached the document
            //assertEquals(docOp, ((FakeDocument)blip.getContent()).getConsumed());
            //// editing the document makes the op creator a blip contributor
            //assertEquals(Collections.singleton(fred), blip.getContributors());
        }
Esempio n. 4
0
        public static OperationPair<BlipOperation> Transform(BlipOperation clientOperation,
            BlipOperation serverOperation)
        {
            if (clientOperation is BlipContentOperation && serverOperation is BlipContentOperation)
            {
                var clientBlipContentOp = (BlipContentOperation) clientOperation;
                var serverBlipContentOp = (BlipContentOperation) serverOperation;
                IDocOp clientContentOp = clientBlipContentOp.ContentOp;
                IDocOp serverContentOp = serverBlipContentOp.ContentOp;

                OperationPair<IDocOp> transformedDocOps = Transform(clientContentOp, serverContentOp);

                clientOperation = new BlipContentOperation(clientBlipContentOp.Context,
                    transformedDocOps.ClientOperation);
                serverOperation = new BlipContentOperation(serverBlipContentOp.Context,
                    transformedDocOps.ServerOperation);
            }

            // Apply identity transform by default
            return new OperationPair<BlipOperation>(clientOperation, serverOperation);
        }