Exemple #1
0
        public void NamedTypeTest()
        {
            var address = new BifoqlNamedType("Address", BifoqlType.Map(BifoqlType.Property("street", BifoqlType.String)));
            var person  = new BifoqlNamedType("Person", BifoqlType.Map(BifoqlType.Property("name", BifoqlType.String), BifoqlType.Property("address", BifoqlType.Named(() => address))));

            var optionalPerson = BifoqlType.Map(BifoqlType.Property("p",
                                                                    BifoqlType.Index(BifoqlType.Named(() => person),
                                                                                     BifoqlType.IndexParameter("id", BifoqlType.Number),
                                                                                     BifoqlType.IndexParameter("locale", BifoqlType.String, optional: true))));

            var s = new Schema(optionalPerson, address, person);

            var schema =
                @"{
    p: (id: number, locale?: string) => Person
}

Address = {
    street: string
}

Person = {
    name: string,
    address: Address
}
";

            Assert.Equal(schema, s.BuildDocumentation());
        }
Exemple #2
0
        public void ArrayOfUnion()
        {
            var type = new Schema(BifoqlType.ArrayOf(
                                      BifoqlType.Union(BifoqlType.String, BifoqlType.Number, BifoqlType.Null)));

            Assert.Equal("(string | number | null)[]", type.BuildDocumentation());
        }
Exemple #3
0
        public void DictionaryOfOptionalUnion()
        {
            var type = new Schema(BifoqlType.DictionaryOf(BifoqlType.Optional(
                                                              BifoqlType.Union(BifoqlType.String, BifoqlType.Number, BifoqlType.Null))));

            Assert.Equal("string => (string | number | null)?", type.BuildDocumentation());
        }
Exemple #4
0
        public void IndexedType()
        {
            var type = new Schema(BifoqlType.Index(BifoqlType.String,
                                                   BifoqlType.IndexParameter("a", BifoqlType.Number, true),
                                                   BifoqlType.IndexParameter("b", BifoqlType.Boolean),
                                                   BifoqlType.IndexSwitch("c")));

            Assert.Equal("(a?: number, b: boolean, c?: boolean) => string", type.BuildDocumentation());
        }
Exemple #5
0
        public void TupleTypes()
        {
            var expected =
                @"[
    number,
    [
        boolean
    ],
    string
]";
            var type = new Schema(BifoqlType.Tuple(BifoqlType.Number, BifoqlType.Tuple(BifoqlType.Boolean), BifoqlType.String));

            Assert.Equal(expected, type.BuildDocumentation());
        }
Exemple #6
0
        public void MapWithOverloadedLookups()
        {
            var expected =
                @"{
    foo: string,
    foo: (id: number) => string
}";
            var type = new Schema(BifoqlType.Map(
                                      BifoqlType.Property("foo", BifoqlType.String),
                                      BifoqlType.Property("foo", BifoqlType.Index(BifoqlType.String,
                                                                                  BifoqlType.IndexParameter("id", BifoqlType.Number)
                                                                                  ))));

            Assert.Equal(expected, type.BuildDocumentation());
        }
Exemple #7
0
        public void MapTypes()
        {
            var expected =
                @"{
    x: number,
    burger: [
        boolean
    ],
    street: string
}";
            var type = new Schema(BifoqlType.Map(
                                      BifoqlType.Property("x", BifoqlType.Number),
                                      BifoqlType.Property("burger", BifoqlType.Tuple(BifoqlType.Boolean)),
                                      BifoqlType.Property("street", BifoqlType.String)));

            Assert.Equal(expected, type.BuildDocumentation());
        }
Exemple #8
0
        public void MapTypesWithDocumentation()
        {
            var expected =
                @"{
    // A number
    x: number,

    // A tasty burger
    // yum!
    burger: [
        boolean
    ],

    // The street
    street: string
}";
            var type = new Schema(BifoqlType.Map(
                                      BifoqlType.Property("x", BifoqlType.Number, "A number"),
                                      BifoqlType.Property("burger", BifoqlType.Tuple(BifoqlType.Boolean), "A tasty burger\nyum!"),
                                      BifoqlType.Property("street", BifoqlType.String, "The street")));

            Assert.Equal(expected, type.BuildDocumentation());
        }
Exemple #9
0
        public void NamedTypeWithDocumentationTest()
        {
            var person = new BifoqlNamedType("Person", BifoqlType.Map(BifoqlType.Property("name", BifoqlType.String)), "A human being");

            var optionalPerson = BifoqlType.Map(BifoqlType.Property("p",
                                                                    BifoqlType.Index(BifoqlType.Named(() => person),
                                                                                     BifoqlType.IndexParameter("id", BifoqlType.Number),
                                                                                     BifoqlType.IndexParameter("locale", BifoqlType.String, optional: true))));

            var s = new Schema(optionalPerson, person);

            var schema =
                @"{
    p: (id: number, locale?: string) => Person
}

// A human being
Person = {
    name: string
}
";

            Assert.Equal(schema, s.BuildDocumentation());
        }
Exemple #10
0
        public void UnionType()
        {
            var type = new Schema(BifoqlType.Union(BifoqlType.String, BifoqlType.Number, BifoqlType.Null));

            Assert.Equal("string | number | null", type.BuildDocumentation());
        }