Ejemplo n.º 1
0
        public override IEnumerable <TElement> Execute([NotNull] RequestContext requestContext)
        {
            Check.NotNull(requestContext, "requestContext");

            if (requestContext.Logger != null)
            {
                var queryString = _query.FilterString;
                if (String.IsNullOrEmpty(queryString))
                {
                    requestContext.Logger.WriteWarning(Strings.MissingFilterString);
                }
                else if (!queryString.Contains("PartitionKey") ||
                         !queryString.Contains("RowKey"))
                {
                    requestContext.Logger.WriteWarning(Strings.MissingPartitionOrRowKey);
                }
            }

            return(requestContext
                   .TableClient
                   .GetTableReference(_table.Name)
                   .ExecuteQuery(_query, (key, rowKey, timestamp, properties, etag) =>
            {
                var buffer = new AtsNamedValueBuffer(properties);
                buffer.Add("PartitionKey", key);
                buffer.Add("RowKey", rowKey);
                buffer.Add("Timestamp", timestamp);
                buffer.Add("ETag", etag);
                return _resolver(buffer);
            },
                                 requestContext.TableRequestOptions,
                                 requestContext.OperationContext));
        }
Ejemplo n.º 2
0
        public void Inserts_strings_and_timestamp()
        {
            var buffer = new AtsNamedValueBuffer(new Dictionary <string, EntityProperty>());
            var stamp  = DateTime.UtcNow;

            buffer.Add("RowKey", "string data");
            buffer.Add("Timestamp", stamp);
            Assert.Equal("string data", buffer["RowKey"]);
            Assert.Equal(stamp, buffer["Timestamp"]);
        }
Ejemplo n.º 3
0
        public void Reader_uses_default_clr_for_unmapped_properties()
        {
            var entityType = new EntityType("TestType");

            entityType.AddProperty("BoolProp", typeof(bool));

            var buffer = new AtsNamedValueBuffer(new Dictionary <string, EntityProperty>());
            var reader = _factory.Create(entityType, buffer);

            Assert.False(reader.ReadValue <bool>(0));
            Assert.True(reader.IsNull(0));
        }
Ejemplo n.º 4
0
        public void Indexed_by_name()
        {
            var buffer = new AtsNamedValueBuffer(new Dictionary <string, EntityProperty>());

            Assert.Throws <KeyNotFoundException>(() => buffer["Key"]);
            Assert.Null(buffer.TryGet("Key"));

            Assert.DoesNotThrow(() => buffer.Add("Key", "value"));

            Assert.DoesNotThrow(() => buffer["Key"]);
            Assert.NotNull(buffer.TryGet("Key"));
        }
Ejemplo n.º 5
0
        public void Reader_contains_nulls_for_unmatched_properties()
        {
            var entityType = new EntityType("TestType");

            entityType.AddProperty("Prop1", typeof(string));
            entityType.AddProperty("Prop2", typeof(int));
            var buffer = new AtsNamedValueBuffer(new Dictionary <string, EntityProperty>());
            var reader = _factory.Create(entityType, buffer);

            Assert.Equal(2, reader.Count);
            Assert.True(reader.IsNull(0));
            Assert.True(reader.IsNull(1));
            Assert.DoesNotThrow(() => reader.ReadValue <string>(0));
        }
Ejemplo n.º 6
0
        public void It_constructs_from_entity_dictionary()
        {
            var data = new Dictionary <string, EntityProperty>
            {
                { "string", new EntityProperty("string") },
                { "double", new EntityProperty(324.34d) },
                { "byte", new EntityProperty(new byte[] { 4, 8, 15, 16, 23, 42 }) },
                { "long", new EntityProperty(429496729623) }
            };
            var buffer = new AtsNamedValueBuffer(data);

            foreach (var property in data)
            {
                Assert.Equal(data[property.Key].PropertyAsObject, buffer[property.Key]);
            }
        }
Ejemplo n.º 7
0
        public void It_gets_value_by_storage_name()
        {
            var entityType = new EntityType("TestType");
            var property   = entityType.AddProperty("ClrName", typeof(object));

            property.SetColumnName("StorageName");

            var data = new Dictionary <string, EntityProperty>
            {
                { "StorageName", new EntityProperty(3987) },
                { "ClrName", new EntityProperty(0) },
            };
            var buffer = new AtsNamedValueBuffer(data);

            var reader = _factory.Create(entityType, buffer);

            Assert.Equal(1, reader.Count);
            Assert.Equal(3987, reader.ReadValue <int>(0));
        }
Ejemplo n.º 8
0
        public void Reader_does_not_contain_ignored_properties()
        {
            var entityType = new EntityType("TestType");

            entityType.AddProperty("Prop1", typeof(string));
            entityType.AddProperty("Prop2", typeof(int));
            var data = new Dictionary <string, EntityProperty>
            {
                { "Prop2", new EntityProperty(3) },
                { "IgnoreA", new EntityProperty(1) },
                { "IgnoreB", new EntityProperty(2) },
                { "Prop1", new EntityProperty("0") },
                { "IgnoreZ", new EntityProperty(4) },
            };
            var buffer = new AtsNamedValueBuffer(data);

            var reader = _factory.Create(entityType, buffer);

            Assert.Equal(2, reader.Count);
            Assert.Equal("0", reader.ReadValue <string>(0));
            Assert.Equal(3, reader.ReadValue <int>(1));
        }