human
Complete this python program:
def _generate_round_trip_test(include_base, lazy_relationship, redefine_colprop, with_polymorphic):
assistant
#Here is the Python program you requested.

    """generates a round trip test.
    include_base - whether or not to include the base \person\ type in
    the union.
    lazy_relationship - whether or not the Company relationship to
    People is lazy or eager.
    redefine_colprop - if we redefine the \name\ column to be
    \people_name\ on the base Person class
    use_literal_join - primary join condition is explicitly specified
    """
    def test_roundtrip(self):
        if (with_polymorphic == 'unions'):
            if include_base:
                person_join = polymorphic_union({'engineer': people.join(engineers), 'manager': people.join(managers), 'person': people.select((people.c.type == 'person'))}, None, 'pjoin')
            else:
                person_join = polymorphic_union({'engineer': people.join(engineers), 'manager': people.join(managers)}, None, 'pjoin')
            manager_join = people.join(managers).outerjoin(boss)
            person_with_polymorphic = ['*', person_join]
            manager_with_polymorphic = ['*', manager_join]
        elif (with_polymorphic == 'joins'):
            person_join = people.outerjoin(engineers).outerjoin(managers).outerjoin(boss)
            manager_join = people.join(managers).outerjoin(boss)
            person_with_polymorphic = ['*', person_join]
            manager_with_polymorphic = ['*', manager_join]
        elif (with_polymorphic == 'auto'):
            person_with_polymorphic = '*'
            manager_with_polymorphic = '*'
        else:
            person_with_polymorphic = None
            manager_with_polymorphic = None
        if redefine_colprop:
            person_mapper = mapper(Person, people, with_polymorphic=person_with_polymorphic, polymorphic_on=people.c.type, polymorphic_identity='person', properties={'person_name': people.c.name})
        else:
            person_mapper = mapper(Person, people, with_polymorphic=person_with_polymorphic, polymorphic_on=people.c.type, polymorphic_identity='person')
        mapper(Engineer, engineers, inherits=person_mapper, polymorphic_identity='engineer')
        mapper(Manager, managers, inherits=person_mapper, with_polymorphic=manager_with_polymorphic, polymorphic_identity='manager')
        mapper(Boss, boss, inherits=Manager, polymorphic_identity='boss')
        mapper(Company, companies, properties={'employees': relationship(Person, lazy=lazy_relationship, cascade='all,    delete-orphan', backref='company',...