@ParameterizedTest
    @ArgumentsSource(SerializationFormatProvider.class)
    void testBinary(SerializationFormat defaultSerializationFormat) throws Exception {
        final BinaryService.Client client = new BinaryService.Client.Factory().getClient(
                inProto(defaultSerializationFormat), outProto(defaultSerializationFormat));
        client.send_process(ByteBuffer.wrap(new byte[] { 1, 2 }));

        final THttpService service = THttpService.of((BinaryService.Iface) data -> {
            final ByteBuffer result = ByteBuffer.allocate(data.remaining());
            for (int i = data.position(), j = 0; i < data.limit(); i++, j++) {
                result.put(j, (byte) (data.get(i) + 1));
            }
            return result;
        }, defaultSerializationFormat);

        invoke(service);

        final ByteBuffer result = client.recv_process();

        // Convert the result into a Byte[] for more comprehensive comparison.
        final List<Byte> out = new ArrayList<>();
        for (int i = result.position(); i < result.limit(); i++) {
            out.add(result.get(i));
        }

        assertThat(out).contains((byte) 2, (byte) 3);
    }
Tests {@link ThriftCallService} and {@link THttpService}.
<p>
The test methods have the following naming convention:

<pre><i>TestType</i>_<i>ServiceName</i>_<i>MethodName</i>[_<i>AdditionalInfo</i>]()</pre>

.. where each field has the following meaning:
<ul>
    <li>{@code TestType}
    <ul>
        <li>{@code Sync} tests an invocation of synchronous service. i.e. {@code *.Iface}</li>
        <li>{@code Async} tests an invocation of asynchronous service. i.e. {@code *.AsyncIface}</li>
        <li>{@code Identity} tests if the results of synchronous and asynchronous operations are identical
            at protocol level.</li>
        <li>{@code MultipleInheritance} tests the case where a service implementation implements
            multiple interfaces.</li>
    </ul></li>
    <li>{@code ServiceName} - the class name of the service being tested</li>
    <li>{@code MethodName} - the name of the method in the service being tested</li>
    <li>(Optional) {@code AdditionalInfo} - specified when a service method has more than one test case</li>
</ul>
</p>
thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceTest.java