public void Test4()
        {
            string key = GetRandomKey();

            var          id      = new RiakObjectId(BucketTypeNames.Maps, Bucket, key);
            const string setName = "set";

            // New Map with Set
            var setMapUpdate = new MapUpdate
            {
                set_op = new SetOp(),
                field  = new MapField {
                    name = Serializer.Invoke(setName), type = MapField.MapFieldType.SET
                }
            };

            // Add X, Y to set
            var addSet = new List <string> {
                "X", "Y"
            }.Select(s => Serializer.Invoke(s)).ToList();

            setMapUpdate.set_op.adds.AddRange(addSet);

            // Store
            var updatedMap1 = Client.DtUpdateMap(id, Serializer, NoContext, NoRemovals,
                                                 new List <MapUpdate> {
                setMapUpdate
            });

            updatedMap1.Result.IsSuccess.ShouldBeTrue();

            // Add Z
            var setMapUpdate2 = new MapUpdate
            {
                set_op = new SetOp(),
                field  = new MapField {
                    name = Serializer.Invoke(setName), type = MapField.MapFieldType.SET
                }
            };

            var addSet2 = new List <string> {
                "Z"
            }.Select(s => Serializer.Invoke(s)).ToList();

            setMapUpdate2.set_op.adds.AddRange(addSet2);

            // Remove Set
            var fieldToRemove = new RiakDtMapField(setMapUpdate.field);

            // Store again, no context
            Assert.Throws <ArgumentNullException>(() =>
                                                  Client.DtUpdateMap(id, Serializer, NoContext,
                                                                     new List <RiakDtMapField> {
                fieldToRemove
            },
                                                                     new List <MapUpdate> {
                setMapUpdate2
            }));
        }
        public void Test2()
        {
            // New Map with Counter of value 5
            string key = GetRandomKey();

            var          id          = new RiakObjectId(BucketTypeNames.Maps, Bucket, key);
            const string counterName = "counter";

            var counterMapUpdate = new MapUpdate
            {
                counter_op = new CounterOp
                {
                    increment = 5
                },
                field = new MapField {
                    name = Serializer.Invoke(counterName), type = MapField.MapFieldType.COUNTER
                }
            };

            // Store
            var updatedMap = Client.DtUpdateMap(id, Serializer, NoContext, NoRemovals,
                                                new List <MapUpdate> {
                counterMapUpdate
            });

            // Increment by 2
            var counterMapUpdate2 = new MapUpdate
            {
                counter_op = new CounterOp
                {
                    increment = 2
                },
                field = new MapField {
                    name = Serializer.Invoke(counterName), type = MapField.MapFieldType.COUNTER
                }
            };

            // Remove field
            var fieldToRemove = new RiakDtMapField(counterMapUpdate.field);

            // Store
            var updatedMap2 = Client.DtUpdateMap(id, Serializer, updatedMap.Context,
                                                 new List <RiakDtMapField> {
                fieldToRemove
            }, new List <MapUpdate> {
                counterMapUpdate2
            });

            Assert.AreEqual(1, updatedMap2.Values.Count);

            var counterField = updatedMap2.Values.Single(s => s.Field.Name == counterName);

            Assert.AreEqual(2, counterField.Counter.Value);
        }
        public void Test1()
        {
            string key = GetRandomKey();

            var          id      = new RiakObjectId(BucketTypeNames.Maps, Bucket, key);
            const string setName = "set";

            // New Map with Set
            var setMapUpdate = new MapUpdate
            {
                set_op = new SetOp(),
                field  = new MapField {
                    name = Serializer.Invoke(setName), type = MapField.MapFieldType.SET
                }
            };

            // Add X, Y to set
            var addSet = new List <string> {
                "X", "Y"
            }.Select(s => Serializer.Invoke(s)).ToList();

            setMapUpdate.set_op.adds.AddRange(addSet);

            // Store
            var updatedMap1 = Client.DtUpdateMap(id, Serializer, NoContext, NoRemovals,
                                                 new List <MapUpdate> {
                setMapUpdate
            });

            // Add Z
            var setMapUpdate2 = new MapUpdate
            {
                set_op = new SetOp(),
                field  = new MapField {
                    name = Serializer.Invoke(setName), type = MapField.MapFieldType.SET
                }
            };

            var addSet2 = new List <string> {
                "Z"
            }.Select(s => Serializer.Invoke(s)).ToList();

            setMapUpdate2.set_op.adds.AddRange(addSet2);

            // Remove Set
            var fieldToRemove = new RiakDtMapField(setMapUpdate.field);

            // Store again
            var updatedMap2 = Client.DtUpdateMap(id, Serializer, updatedMap1.Context,
                                                 new List <RiakDtMapField> {
                fieldToRemove
            }, new List <MapUpdate> {
                setMapUpdate2
            });

            Assert.AreEqual(1, updatedMap2.Values.Count);

            var set       = updatedMap2.Values.Single(s => s.Field.Name == setName);
            var setValues = set.SetValue.Select(v => Deserializer.Invoke(v)).ToList();

            Assert.AreEqual(1, setValues.Count);
            Assert.Contains("Z", setValues);
        }