// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package test_service

// A testing interface with methods that throw various types of errors
type ErrorThrower interface {
    // Throws v23/vError.Aborted error
    ThrowAborted() error

    // Throws v23/vError.BadArg error
    ThrowBadArg() error

    // Throws v23/vError.BadProtocol error
    ThrowBadProtocol() error

    // Throws v23/vError.Internal error
    ThrowInternal() error

    // Throws v23/vError.NoAccess error
    ThrowNoAccess() error

    // Throws v23/vError.NoExist error
    ThrowNoExist() error

    // Throws v23/vError.NoExistOrNoAccess error
    ThrowNoExistOrNoAccess() error

    // Throws v23/vError.Unknown error
    ThrowUnknown() error

    // Throws normal Go error
    ThrowGoError() error

    // Throws custom error created by using Standard
    ThrowCustomStandardError() error
}
