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

benchmark("ErrorSyntaxResult_Success") {
    value = ErrorSyntaxResultStruct{
        result: ErrorSyntaxResult{
            response: ErrorSyntaxResponse{
                ptrs: 1,
                payload_buffer_id: 2,
                payload_offset: 3,
                payload_size: 4,
                flags: 5,
                buffer_config: 6,
                stream_segment_id: 7,
            },
        },
    },
}

benchmark("ErrorSyntaxResult_Failure") {
    value = ErrorSyntaxResultStruct{
        result: ErrorSyntaxResult{
            err: 10,
        },
    },
}
