package com.linecorp.armeria.common; import static com.linecorp.armeria.common.MediaType.parse; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assume.assumeTrue; import org.junit.Test; public class SerializationFormatTest { @Test public void findByMediaType_exactMatch() { for (SerializationFormat format : SerializationFormat.values()) { if (format == SerializationFormat.UNKNOWN) { continue; } assertThat(SerializationFormat.find(format.mediaType()).get()).isSameAs(format); } } @Test public void findByMediaType_notRecognized() { assertThat(SerializationFormat.find(parse("foo/bar"))).isEmpty(); } @Test @SuppressWarnings("deprecation") public void nullThriftSerializationFormats() { assumeNoThriftInClasspath(); assertThat(SerializationFormat.THRIFT_BINARY).isNull(); assertThat(SerializationFormat.THRIFT_COMPACT).isNull(); assertThat(SerializationFormat.THRIFT_JSON).isNull(); assertThat(SerializationFormat.THRIFT_TEXT).isNull(); } @Test @SuppressWarnings("deprecation") public void failingOfThrift() { assumeNoThriftInClasspath(); assertThatThrownBy(SerializationFormat::ofThrift).isInstanceOf(IllegalStateException.class); } private static void assumeNoThriftInClasspath() { boolean meetsAssumption = false; try { Class.forName("com.linecorp.armeria.common.thrift.ThriftSerializationFormatProvider"); } catch (ClassNotFoundException expected) { // armeria-thrift not in the classpath meetsAssumption = true; } assumeTrue("armeria-thrift in the classpath", meetsAssumption); } }