// Copyright © 2015 HSL <https://www.hsl.fi>
// This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses.
package fi.hsl.parkandride.core.domain;
import static fi.hsl.parkandride.core.domain.PropertyPathTranslator.translate;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
public class PropertyPathTranslatorTest {
@Test
public void translates_keys() {
assertThat(translate("foo[KEY].bar")).isEqualTo("foo.KEY.bar");
assertThat(translate("foo[KEY]")).isEqualTo("foo.KEY");
}
@Test
public void translates_multiple_keys() {
assertThat(translate("foo[1].bar.baz[KEY].qux")).isEqualTo("foo[1].bar.baz.KEY.qux");
assertThat(translate("foo[1].bar.baz[KEY]")).isEqualTo("foo[1].bar.baz.KEY");
}
@Test
public void no_translation_for_indices() {
assertThat(translate("foo[1].bar")).isEqualTo("foo[1].bar");
assertThat(translate("foo[1]")).isEqualTo("foo[1]");
}
@Test
public void no_translation_without_key_or_index() {
assertThat(translate("foo")).isEqualTo("foo");
assertThat(translate("foo.bar")).isEqualTo("foo.bar");
}
@Test
public void no_translation_when_empty() {
assertThat(translate("")).isEqualTo("");
}
@Test
public void no_translation_when_empty_() {
assertThat(translate("foo[.].bar")).isEqualTo("foo...bar");
}
@Test(expected = IllegalArgumentException.class)
public void nullInputIsIllegal() {
translate(null);
}
@Test(expected = IllegalArgumentException.class)
public void whitespaceInputIsIllegal() {
translate(" ");
}
@Test
public void knownIssues() {
assertThat(translate("foo[.].bar")).isEqualTo("foo...bar");
assertThat(translate("foo[..].bar")).isEqualTo("foo[..].bar");
assertThat(translate("foo[]].bar")).isEqualTo("foo.].bar");
assertThat(translate("foo[[].bar")).isEqualTo("foo.[.bar");
}
}