def METHOD_NAME(patron_martigny,
                                  librarian_martigny,
                                  system_librarian_martigny,
                                  patron_type_adults_martigny,
                                  patron_type_youngsters_sion):
    """Test patron types permissions class."""
    permission_policy = PatronTypePermissionPolicy
    # Anonymous user
    #    An anonymous user can't operate any operation about PatronType
    identity_changed.send(
        current_app._get_current_object(), identity=AnonymousIdentity()
    )
    check_permission(permission_policy, {'search': False}, None)
    check_permission(permission_policy, {'create': False}, {})
    check_permission(permission_policy, {
        'read': False,
        'create': False,
        'update': False,
        'delete': False
    }, patron_type_adults_martigny)
    # Patron
    #    A simple patron can't operate any operation about PatronType
    login_user(patron_martigny.user)
    check_permission(permission_policy, {'search': False}, None)
    check_permission(permission_policy, {'create': False}, {})
    check_permission(permission_policy, {
        'read': False,
        'create': False,
        'update': False,
        'delete': False
    }, patron_type_adults_martigny)
    # Librarian
    #     - search : any PatronType despite organisation owner
    #     - read : only PatronType for its own organisation
    #     - create/update/delete: disallowed
    login_user(librarian_martigny.user)
    check_permission(permission_policy, {'search': True}, None)
    check_permission(permission_policy, {'create': False}, {})
    check_permission(permission_policy, {
        'read': True,
        'create': False,
        'update': False,
        'delete': False
    }, patron_type_adults_martigny)
    check_permission(permission_policy, {
        'read': False,
        'create': False,
        'update': False,
        'delete': False
    }, patron_type_youngsters_sion)
    # SystemLibrarian
    #     - search : any PatronType despite organisation owner
    #     - read/create/update/delete : only PatronType for its own
    #       organisation
    login_user(system_librarian_martigny.user)
    check_permission(permission_policy, {'search': True}, None)
    check_permission(permission_policy, {'create': True}, {})
    check_permission(permission_policy, {
        'read': True,
        'create': True,
        'update': True,
        'delete': True
    }, patron_type_adults_martigny)
    check_permission(permission_policy, {
        'read': False,
        'create': False,
        'update': False,
        'delete': False
    }, patron_type_youngsters_sion)