def test_building_init_from_all_story_geometry_offset():
    """Test Building objects from_all_story_geometry with a core/perimater offset."""
    pts_1 = (Point3D(0, 0, 0), Point3D(0, 10,
                                       0), Point3D(10, 10,
                                                   0), Point3D(10, 0, 0))
    pts_2 = (Point3D(0, 0, 4), Point3D(0, 10,
                                       4), Point3D(10, 10,
                                                   4), Point3D(10, 0, 4))
    pts_3 = (Point3D(0, 0, 8), Point3D(0, 10, 8), Point3D(5, 10,
                                                          8), Point3D(5, 0, 8))
    pts_4 = (Point3D(0, 0, 11), Point3D(0, 10,
                                        11), Point3D(5, 10,
                                                     11), Point3D(5, 0, 11))
    story_geo = [[Face3D(pts_1)], [Face3D(pts_2)], [Face3D(pts_3)],
                 [Face3D(pts_4)]]
    building = Building.from_all_story_geometry('Office_Tower',
                                                story_geo, [4, 4, 3, 3],
                                                perimeter_offset=3,
                                                tolerance=0.01)
    building.set_outdoor_window_parameters(SimpleWindowRatio(0.4))

    assert building.identifier == 'Office_Tower'
    assert building.display_name == 'Office_Tower'
    assert len(building.unique_stories) == 2
    assert len(building.all_stories()) == 4
    assert len(building.unique_room_2ds) == 9
    assert len(building.all_room_2ds()) == 2 * 5 + 2 * 4
        min, max = geo_min_max_height(geo)
        floor_heights, interpreted_f2f = interpret_floor_height_subdivide(
            _floor_to_floor, max, min)

        # get the floor geometries of the building
        floor_breps = split_solid_to_floors(geo, floor_heights)
        floor_faces = []
        for flr in floor_breps:
            story_faces = []
            for rm_face in flr:
                story_faces.extend(to_face3d(rm_face))
            floor_faces.append(story_faces)

        # create the Building
        building = Building.from_all_story_geometry(
            name, floor_faces, floor_to_floor_heights=interpreted_f2f,
            perimeter_offset=perim_offset_, tolerance=tolerance)
        building.display_name = display_name

        # assign the program
        if len(_program_) != 0:
            program = longest_list(_program_, i)
            if isinstance(program, str):
                program = program_type_by_identifier(program)
            building.properties.energy.set_all_room_2d_program_type(program)
        else:  # generic office program by default
            try:
                building.properties.energy.set_all_room_2d_program_type(office_program)
            except (NameError, AttributeError):
                pass  # honeybee-energy is not installed