Ejemplo n.º 1
0
 public void SetIndexer(CodeIndexer indexer)
 {
     if (indexer == null)
     {
         throw new ArgumentNullException(nameof(indexer));
     }
     if (InnerChildElements.Values.OfType <CodeIndexer>().Any() || InnerChildElements.Values.OfType <CodeMethod>().Any(static x => x.IsOfKind(CodeMethodKind.IndexerBackwardCompatibility)))
Ejemplo n.º 2
0
        public CodeIndexerWriterTests()
        {
            writer = LanguageWriter.GetLanguageWriter(GenerationLanguage.CSharp, defaultPath, defaultName);
            tw     = new StringWriter();
            writer.SetTextWriter(tw);
            var root = CodeNamespace.InitRootNamespace();

            parentClass = new CodeClass(root)
            {
                Name = "parentClass"
            };
            root.AddClass(parentClass);
            indexer = new CodeIndexer(parentClass)
            {
                Name = "idx",
            };
            indexer.IndexType = new CodeType(indexer)
            {
                Name = "string",
            };
            indexer.ReturnType = new CodeType(indexer)
            {
                Name = "SomeRequestBuilder"
            };
            parentClass.SetIndexer(indexer);
        }
Ejemplo n.º 3
0
        public void IndexerInits()
        {
            var indexer = new CodeIndexer {
                Name        = "idx",
                Description = "some description"
            };

            indexer.IndexType  = new CodeType {
            };
            indexer.ReturnType = new CodeType {
            };
        }
Ejemplo n.º 4
0
        public void IndexerInits()
        {
            var root    = CodeNamespace.InitRootNamespace();
            var indexer = new CodeIndexer(root)
            {
                Name        = "idx",
                Description = "some description"
            };

            indexer.IndexType = new CodeType(indexer)
            {
            };
            indexer.ReturnType = new CodeType(indexer)
            {
            };
        }
Ejemplo n.º 5
0
    public void ConvertsUnionTypesToWrapper()
    {
        var model = root.AddClass(new CodeClass {
            Name = "model",
            Kind = CodeClassKind.Model
        }).First();
        var union = new CodeUnionType {
            Name = "union",
        };

        union.AddType(new () {
            Name = "type1",
        }, new() {
            Name = "type2"
        });
        var property = model.AddProperty(new CodeProperty {
            Name = "deserialize",
            Kind = CodePropertyKind.Custom,
            Type = union.Clone() as CodeTypeBase,
        }).First();
        var method = model.AddMethod(new CodeMethod {
            Name       = "method",
            ReturnType = union.Clone() as CodeTypeBase
        }).First();
        var parameter = new CodeParameter {
            Name = "param1",
            Type = union.Clone() as CodeTypeBase
        };
        var indexer = new CodeIndexer {
            Name       = "idx",
            ReturnType = union.Clone() as CodeTypeBase,
        };

        model.SetIndexer(indexer);
        method.AddParameter(parameter);
        ILanguageRefiner.Refine(new GenerationConfiguration {
            Language = GenerationLanguage.CSharp
        }, root);                                                                                            //using CSharp so the indexer doesn't get removed
        Assert.True(property.Type is CodeType);
        Assert.True(parameter.Type is CodeType);
        Assert.True(method.ReturnType is CodeType);
        Assert.True(indexer.ReturnType is CodeType);
    }
Ejemplo n.º 6
0
    public static CodeMethod FromIndexer(CodeIndexer originalIndexer, CodeClass indexerClass, string methodNameSuffix, bool parameterNullable)
    {
        if (originalIndexer == null)
        {
            throw new ArgumentNullException(nameof(originalIndexer));
        }
        if (indexerClass == null)
        {
            throw new ArgumentNullException(nameof(indexerClass));
        }
        var method = new CodeMethod {
            IsAsync     = false,
            IsStatic    = false,
            Access      = AccessModifier.Public,
            Kind        = CodeMethodKind.IndexerBackwardCompatibility,
            Name        = originalIndexer.PathSegment + methodNameSuffix,
            Description = originalIndexer.Description,
            ReturnType  = new CodeType {
                IsNullable     = false,
                TypeDefinition = indexerClass,
                Name           = indexerClass.Name,
            },
            OriginalIndexer = originalIndexer,
        };
        var parameter = new CodeParameter {
            Name        = "id",
            Optional    = false,
            Kind        = CodeParameterKind.Custom,
            Description = "Unique identifier of the item",
            Type        = new CodeType {
                Name       = "String",
                IsNullable = parameterNullable,
                IsExternal = true,
            },
        };

        method.AddParameter(parameter);
        return(method);
    }
Ejemplo n.º 7
0
        public CodeIndexerWriterTests()
        {
            writer = LanguageWriter.GetLanguageWriter(GenerationLanguage.CSharp, DefaultPath, DefaultName);
            tw     = new StringWriter();
            writer.SetTextWriter(tw);
            var root = CodeNamespace.InitRootNamespace();

            parentClass = new CodeClass {
                Name = "parentClass"
            };
            root.AddClass(parentClass);
            indexer = new CodeIndexer {
                Name = "idx",
                SerializationName = "id"
            };
            indexer.IndexType = new CodeType {
                Name = "string",
            };
            indexer.ReturnType = new CodeType {
                Name = "SomeRequestBuilder"
            };
            parentClass.SetIndexer(indexer);
            parentClass.AddProperty(new() {
                Name = "pathParameters",
                Kind = CodePropertyKind.PathParameters,
                Type = new CodeType {
                    Name = "string"
                }
            }, new() {
                Name = "requestAdapter",
                Kind = CodePropertyKind.RequestAdapter,
                Type = new CodeType {
                    Name = "string"
                }
            });
        }