Example #1
0
def test_one_table_with_id(generate_traps):
    assert generate_traps([
        dbscheme.Table(name="foos", columns=[
            dbscheme.Column("bla", "int", binding=True)]),
    ]) == [
        cpp.Trap("foos", name="Foos", fields=[cpp.Field(
            "bla", "int")], id=cpp.Field("bla", "int")),
    ]
Example #2
0
def test_trap_has_first_field_marked():
    fields = [
        cpp.Field("a", "x"),
        cpp.Field("b", "y"),
        cpp.Field("c", "z"),
    ]
    expected = deepcopy(fields)
    expected[0].first = True
    t = cpp.Trap("table_name", "name", fields)
    assert t.fields == expected
Example #3
0
def test_class_single_fields():
    fields = [
        cpp.Field("a", "A"),
        cpp.Field("b", "B", is_optional=True),
        cpp.Field("c", "C"),
        cpp.Field("d", "D", is_repeated=True),
        cpp.Field("e", "E"),
    ]
    c = cpp.Class("foo", fields=fields)
    assert c.single_fields == fields[::2]
Example #4
0
def test_one_table_with_two_binding_first_is_id(generate_traps):
    assert generate_traps([
        dbscheme.Table(name="foos", columns=[
            dbscheme.Column("x", "a", binding=True),
            dbscheme.Column("y", "b", binding=True),
        ]),
    ]) == [
        cpp.Trap("foos", name="Foos", fields=[
            cpp.Field("x", "a"),
            cpp.Field("y", "b"),
        ], id=cpp.Field("x", "a")),
    ]
Example #5
0
def test_one_table_overridden_underscore_named_field(generate_traps):
    assert generate_traps([
        dbscheme.Table(name="foos",
                       columns=[dbscheme.Column("whatever_", "bar")]),
    ]) == [
        cpp.Trap("foos", name="Foos", fields=[cpp.Field("whatever", "bar")]),
    ]
Example #6
0
def get_field(c: dbscheme.Column):
    args = {
        "field_name": c.schema_name,
        "type": c.type,
    }
    args.update(cpp.get_field_override(c.schema_name))
    args["type"] = get_cpp_type(args["type"])
    return cpp.Field(**args)
Example #7
0
def test_class_with_predicate(generate):
    assert generate([
        schema.Class(name="MyClass", properties=[schema.PredicateProperty("prop")]),
    ]) == [
               cpp.Class(name="MyClass",
                         fields=[cpp.Field("prop", "bool", trap_name="MyClassProp", is_predicate=True)],
                         trap_name="MyClasses",
                         final=True)
           ]
Example #8
0
def test_class_with_field(generate, type, expected, property_cls, optional, repeated, trap_name):
    assert generate([
        schema.Class(name="MyClass", properties=[property_cls("prop", type)]),
    ]) == [
               cpp.Class(name="MyClass",
                         fields=[cpp.Field("prop", expected, is_optional=optional,
                                           is_repeated=repeated, trap_name=trap_name)],
                         trap_name="MyClasses",
                         final=True)
           ]
Example #9
0
def test_class_with_overridden_unsigned_field(generate, name):
    assert generate([
        schema.Class(name="MyClass",
                     properties=[schema.SingleProperty(name, "bar")]),
    ]) == [
        cpp.Class(name="MyClass",
                  fields=[cpp.Field(name, "unsigned")],
                  trap_name="MyClasses",
                  final=True)
    ]
Example #10
0
def test_class_with_keyword_field(generate, name):
    assert generate([
        schema.Class(name="MyClass",
                     properties=[schema.SingleProperty(name, "bar")]),
    ]) == [
        cpp.Class(name="MyClass",
                  fields=[cpp.Field(name + "_", "bar")],
                  trap_name="MyClasses",
                  final=True)
    ]
Example #11
0
def test_class_with_overridden_underscore_field(generate):
    assert generate([
        schema.Class(name="MyClass",
                     properties=[schema.SingleProperty("something_", "bar")]),
    ]) == [
        cpp.Class(name="MyClass",
                  fields=[cpp.Field("something", "bar")],
                  trap_name="MyClasses",
                  final=True)
    ]
Example #12
0
def _get_field(cls: schema.Class, p: schema.Property) -> cpp.Field:
    trap_name = None
    if not p.is_single:
        trap_name = inflection.camelize(f"{cls.name}_{p.name}")
        if not p.is_predicate:
            trap_name = inflection.pluralize(trap_name)
    args = dict(
        field_name=p.name + ("_" if p.name in cpp.cpp_keywords else ""),
        type=_get_type(p.type),
        is_optional=p.is_optional,
        is_repeated=p.is_repeated,
        is_predicate=p.is_predicate,
        trap_name=trap_name,
    )
    args.update(cpp.get_field_override(p.name))
    return cpp.Field(**args)
Example #13
0
def test_field_get_streamer(type, expected):
    f = cpp.Field("name", type)
    assert f.get_streamer()("value") == expected
Example #14
0
def test_one_table(generate_traps):
    assert generate_traps([
        dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]),
    ]) == [
        cpp.Trap("foos", name="Foos", fields=[cpp.Field("bla", "int")]),
    ]
Example #15
0
def test_one_table_overridden_unsigned_field(generate_traps, name):
    assert generate_traps([
        dbscheme.Table(name="foos", columns=[dbscheme.Column(name, "bar")]),
    ]) == [
        cpp.Trap("foos", name="Foos", fields=[cpp.Field(name, "unsigned")]),
    ]
Example #16
0
def test_one_table_with_two_binding_first_is_id(generate_traps):
    assert generate_traps([
        dbscheme.Table(name="foos", columns=[
            dbscheme.Column("x", "a", binding=True),
            dbscheme.Column("y", "b", binding=True),
        ]),
    ]) == [
        cpp.Trap("foos", name="Foos", fields=[
            cpp.Field("x", "a"),
            cpp.Field("y", "b"),
        ], id=cpp.Field("x", "a")),
    ]


@pytest.mark.parametrize("column,field", [
    (dbscheme.Column("x", "string"), cpp.Field("x", "std::string")),
    (dbscheme.Column("y", "boolean"), cpp.Field("y", "bool")),
    (dbscheme.Column("z", "@db_type"), cpp.Field("z", "TrapAffixLabel<DbTypeTag>")),
])
def test_one_table_special_types(generate_traps, column, field):
    assert generate_traps([
        dbscheme.Table(name="foos", columns=[column]),
    ]) == [
        cpp.Trap("foos", name="Foos", fields=[field]),
    ]


@pytest.mark.parametrize("name", ["start_line", "start_column", "end_line", "end_column", "index", "num_whatever"])
def test_one_table_overridden_unsigned_field(generate_traps, name):
    assert generate_traps([
        dbscheme.Table(name="foos", columns=[dbscheme.Column(name, "bar")]),
Example #17
0
def test_field_keyword_name(keyword):
    f = cpp.Field(keyword, "int")
    assert f.field_name == keyword + "_"
Example #18
0
def test_field_modal_types(is_optional, is_repeated, expected):
    f = cpp.Field("name", "bar", is_optional=is_optional, is_repeated=is_repeated)
    assert f.type == expected
Example #19
0
def test_field_is_single(is_optional, is_repeated, is_predicate, expected):
    f = cpp.Field("name", "type", is_optional=is_optional, is_repeated=is_repeated, is_predicate=is_predicate)
    assert f.is_single is expected
Example #20
0
def test_field_name():
    f = cpp.Field("foo", "int")
    assert f.field_name == "foo"