コード例 #1
0
        public void GenerateFieldTest()
        {
            var schema      = new JsonSchema();
            var decorator   = new StandardPropertyFieldDecorator();
            var implDetails = new SchemaImplementationDetails();

            schema.Type = JsonSchemaType.String;
            CodeMemberField generatedField = decorator.GenerateField(
                "normalName", schema, implDetails, 1, internalClassProvider, Enumerable.Empty <string>());

            Assert.NotNull(generatedField);
            Assert.AreEqual(typeof(string).FullName, generatedField.Type.BaseType);
            Assert.AreEqual("_normalName", generatedField.Name);
            Assert.AreEqual(MemberAttributes.Private, generatedField.Attributes);

            schema.Type    = JsonSchemaType.Boolean;
            generatedField = decorator.GenerateField(
                "public", schema, implDetails, 2, internalClassProvider, Enumerable.Empty <string>());

            Assert.NotNull(generatedField);
            Assert.AreEqual(typeof(Nullable <>).FullName, generatedField.Type.BaseType);
            Assert.AreEqual(typeof(bool).FullName, generatedField.Type.TypeArguments[0].BaseType);
            Assert.AreEqual("_public", generatedField.Name);
            Assert.AreEqual(MemberAttributes.Private, generatedField.Attributes);

            generatedField = decorator.GenerateField(
                "UPPERCASE", schema, implDetails, 2, internalClassProvider, Enumerable.Empty <string>());

            Assert.NotNull(generatedField);
            Assert.AreEqual("_UPPERCASE", generatedField.Name);
        }
コード例 #2
0
        public void GenerateAllFieldsTestEdgeCases()
        {
            var    implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails>();
            var    decorator   = new StandardPropertyFieldDecorator();
            var    schema      = new MockSchema();
            string name        = "test";

            Assert.Throws(
                typeof(ArgumentNullException),
                () => decorator.GenerateAllFields(name, null, implDetails, internalClassProvider));
            Assert.Throws(
                typeof(ArgumentNullException),
                () => decorator.GenerateAllFields(name, schema.SchemaDetails, null, internalClassProvider));
            Assert.Throws(
                typeof(ArgumentNullException),
                () => decorator.GenerateAllFields(name, schema.SchemaDetails, implDetails, null));

            schema.Name          = "test";
            schema.SchemaDetails = null;
            Assert.Throws(
                typeof(ArgumentNullException),
                () => decorator.GenerateAllFields(name, schema.SchemaDetails, implDetails, internalClassProvider));

            schema.SchemaDetails            = new JsonSchema();
            schema.SchemaDetails.Properties = null;
            var expectedEmpty = decorator.GenerateAllFields(
                name, schema.SchemaDetails, implDetails, internalClassProvider);

            Assert.IsNotNull(expectedEmpty);
            Assert.AreEqual(0, expectedEmpty.Count);
        }
コード例 #3
0
        public void GenerateAllFieldsTest()
        {
            var implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails>();
            var schema      = new MockSchema();

            schema.SchemaDetails            = new JsonSchema();
            schema.SchemaDetails.Type       = JsonSchemaType.Object;
            schema.SchemaDetails.Properties = new Dictionary <string, JsonSchema>();
            implDetails.Add(schema.SchemaDetails, new SchemaImplementationDetails());

            foreach (var pair in NamesToType)
            {
                JsonSchema property = new JsonSchema();
                property.Type = pair.Value;
                property.Id   = pair.Key;
                schema.SchemaDetails.Properties.Add(pair.Key, property);
                implDetails.Add(property, new SchemaImplementationDetails());
            }

            var decorator = new StandardPropertyFieldDecorator();
            IList <CodeMemberField> generatedFields = decorator.GenerateAllFields(
                "test", schema.SchemaDetails, implDetails, internalClassProvider);

            Assert.NotNull(generatedFields);
            Assert.AreEqual(NamesToType.Count, generatedFields.Count);
            foreach (var field in generatedFields)
            {
                Assert.That(
                    NamesToType.ContainsKey(field.Name.Substring(1)), "field name was not present in namesToType " + field.Name);
            }

            int item = 0;

            foreach (var pair in NamesToType)
            {
                var field = generatedFields[item++];
                Assert.AreEqual(
                    "_" + pair.Key, field.Name, string.Format("Name different for expected at index {0}", item - 1));
                Assert.AreEqual(
                    SchemaDecoratorUtil.GetCodeType(new JsonSchema {
                    Type = pair.Value
                }, null, internalClassProvider)
                    .BaseType, field.Type.BaseType);
            }
        }