/* * Copyright (c) 2011-2015 The original author or authors * ------------------------------------------------------ * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Apache License v2.0 which accompanies this distribution. * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * * The Apache License v2.0 is available at * http://www.opensource.org/licenses/apache2.0.php * * You may elect to redistribute this code under either of these licenses. */ package io.vertx.ext.stomp.impl; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; /** * Checks the behavior of the {@link HeaderCodec}. * * @author <a href="http://escoffier.me">Clement Escoffier</a> */ public class HeaderCodecTest { @Test public void testDecoding() { assertThat(HeaderCodec.decode("hello", false)).isEqualTo("hello"); assertThat(HeaderCodec.decode("h\\ce", false)).isEqualTo("h:e"); assertThat(HeaderCodec.decode("\\c-)", false)).isEqualTo(":-)"); assertThat(HeaderCodec.decode(")-\\c", false)).isEqualTo(")-:"); assertThat(HeaderCodec.decode("multi\nline", false)).isEqualTo("multi\nline"); assertThat(HeaderCodec.decode("multi\r\nline", false)).isEqualTo("multi\r\nline"); assertThat(HeaderCodec.decode("multi" + (char) 92 + (char) 110 + "line", false)) .isEqualTo("multi\nline"); assertThat(HeaderCodec.decode("multi" + (char) 92 + (char) 114 + (char) 92 + (char) 110 + "line", false)).isEqualTo("multi\r\nline"); assertThat(HeaderCodec.decode("test" + (char) 92 + (char) 92 + "slash", false)).isEqualTo("test\\slash"); } @Test public void testDecodingOnConnectOrConnectedFrames() { assertThat(HeaderCodec.decode("hello", true)).isEqualTo("hello"); assertThat(HeaderCodec.decode("h\\ce", true)).isEqualTo("h\\ce"); assertThat(HeaderCodec.decode("\\c-)", true)).isEqualTo("\\c-)"); assertThat(HeaderCodec.decode(")-\\c", true)).isEqualTo(")-\\c"); assertThat(HeaderCodec.decode("multi\nline", true)).isEqualTo("multi\nline"); assertThat(HeaderCodec.decode("multi\r\nline", true)).isEqualTo("multi\r\nline"); assertThat(HeaderCodec.decode("multi" + (char) 92 + (char) 110 + "line", true)) .isEqualTo("multi" + (char) 92 + (char) 110 + "line"); assertThat(HeaderCodec.decode("multi" + (char) 92 + (char) 114 + (char) 92 + (char) 110 + "line", true)).isEqualTo("multi" + (char) 92 + (char) 114 + (char) 92 + (char) 110 + "line"); // Slash is decoded. assertThat(HeaderCodec.decode("test" + (char) 92 + (char) 92 + "slash", true)).isEqualTo("test\\slash"); } @Test(expected = FrameException.class) public void testDecodingIllegalEscape() { HeaderCodec.decode("this is an illegal " + (char) 92 + (char) 116 + " escape", false); } @Test public void testEncoding() { assertThat(HeaderCodec.encode("hello", false)).isEqualTo("hello"); assertThat(HeaderCodec.encode("h:e", false)).isEqualTo("h\\ce"); assertThat(HeaderCodec.encode(":-)", false)).isEqualTo("\\c-)"); assertThat(HeaderCodec.encode(")-:", false)).isEqualTo(")-\\c"); assertThat(HeaderCodec.encode("multi\nline", false)).isEqualTo("multi" + (char) 92 + (char) 110 + "line"); assertThat(HeaderCodec.encode("multi\r\nline", false)).isEqualTo("multi" + (char) 92 + (char) 114 + (char) 92 + (char) 110 + "line"); assertThat(HeaderCodec.encode("test\\slash", false)).isEqualTo("test" + (char) 92 + (char) 92 + "slash"); } @Test public void testEncodingOnConnectOrConnectedFrames() { assertThat(HeaderCodec.encode("hello", true)).isEqualTo("hello"); assertThat(HeaderCodec.encode("h:e", true)).isEqualTo("h:e"); assertThat(HeaderCodec.encode(":-)", true)).isEqualTo(":-)"); assertThat(HeaderCodec.encode(")-:", true)).isEqualTo(")-:"); assertThat(HeaderCodec.encode("multi\nline", true)).isEqualTo("multi\nline"); assertThat(HeaderCodec.encode("multi\r\nline", true)).isEqualTo("multi\r\nline"); // Slash is encoded. assertThat(HeaderCodec.encode("test\\slash", true)).isEqualTo("test" + (char) 92 + (char) 92 + "slash"); } }