/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.pods.common;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Arrays;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import static org.diirt.pods.common.ChannelTranslator.*;
import static org.diirt.pods.common.ChannelTranslation.Permission.*;
/**
*
* @author carcassi
*/
public class ChannelTranslatorTest {
@Test
public void regexTranslator1() {
ChannelTranslator translator = regexTranslator("(.*)", "$1", READ_ONLY);
ChannelTranslation target = translator.translate("sim://noise");
assertThat(target.getFormula(), equalTo("sim://noise"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate("=1+2");
assertThat(target.getFormula(), equalTo("=1+2"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate("abc-345{dfkj:34}");
assertThat(target.getFormula(), equalTo("abc-345{dfkj:34}"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
}
@Test
public void regexTranslator2() {
ChannelTranslator translator = regexTranslator(".*", null, READ_ONLY);
ChannelTranslation target = translator.translate("sim://noise");
assertThat(target.getFormula(), equalTo("sim://noise"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate("=1+2");
assertThat(target.getFormula(), equalTo("=1+2"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate("abc-345{dfkj:34}");
assertThat(target.getFormula(), equalTo("abc-345{dfkj:34}"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
}
@Test
public void regexTranslator3() {
ChannelTranslator translator = regexTranslator("abc-.*", null, READ_ONLY);
ChannelTranslation target = translator.translate("sim://noise");
assertThat(target, nullValue());
target = translator.translate("=1+2");
assertThat(target, nullValue());
target = translator.translate("abc-345{dfkj:34}");
assertThat(target.getFormula(), equalTo("abc-345{dfkj:34}"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
}
@Test
public void regexTranslator4() {
ChannelTranslator translator = regexTranslator("(.*)-(.*)", "$2-$1", READ_WRITE);
ChannelTranslation target = translator.translate("sim://noise");
assertThat(target, nullValue());
target = translator.translate("=1+2");
assertThat(target, nullValue());
target = translator.translate("abc-345{dfkj:34}");
assertThat(target.getFormula(), equalTo("345{dfkj:34}-abc"));
assertThat(target.getPermission(), equalTo(READ_WRITE));
}
@Test
public void compositeTranslator1() {
ChannelTranslator translator = compositeTranslator(Arrays.asList(regexTranslator("abc-(.*)", null, READ_WRITE), regexTranslator(".*", null, READ_ONLY)));
ChannelTranslation target = translator.translate("sim://noise");
assertThat(target.getFormula(), equalTo("sim://noise"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate("=1+2");
assertThat(target.getFormula(), equalTo("=1+2"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate("abc-345{dfkj:34}");
assertThat(target.getFormula(), equalTo("abc-345{dfkj:34}"));
assertThat(target.getPermission(), equalTo(READ_WRITE));
}
@Test
public void compositeTranslator2() {
ChannelTranslator translator = compositeTranslator(Arrays.asList(regexTranslator("=.*", null, NONE), regexTranslator(".*", null, READ_ONLY)));
ChannelTranslation target = translator.translate("sim://noise");
assertThat(target.getFormula(), equalTo("sim://noise"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate("=1+2");
assertThat(target.getFormula(), equalTo("=1+2"));
assertThat(target.getPermission(), equalTo(NONE));
target = translator.translate("abc-345{dfkj:34}");
assertThat(target.getFormula(), equalTo("abc-345{dfkj:34}"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
}
@Test
public void loadTranslator1() throws Exception{
File file = new File(getClass().getResource("mappings1.xml").toURI());
try (InputStream input = new FileInputStream(file)) {
ChannelTranslator translator = loadTranslator(input);
ChannelTranslation target = translator.translate("specialchannel");
assertThat(target.getFormula(), equalTo("specialchannel"));
assertThat(target.getPermission(), equalTo(READ_WRITE));
target = translator.translate("ABC-DEF");
assertThat(target.getFormula(), equalTo("DEF"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate("diff-ABC-DEF");
assertThat(target.getFormula(), equalTo("='ABC'-'DEF'"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate("abc-345{dfkj:34}");
assertThat(target.getFormula(), equalTo("abc-345{dfkj:34}"));
assertThat(target.getPermission(), equalTo(NONE));
}
}
@Test
public void loadTranslator2() throws Exception{
File file = new File(getClass().getResource("mappings2.xml").toURI());
try (InputStream input = new FileInputStream(file)) {
ChannelTranslator translator = loadTranslator(input);
ChannelTranslation target = translator.translate("channel1");
assertThat(target.getFormula(), equalTo("channel1"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
target = translator.translate(new ChannelRequest("channel1", "carcassi", null, null, null));
assertThat(target.getFormula(), equalTo("channel1"));
assertThat(target.getPermission(), equalTo(READ_WRITE));
target = translator.translate("channel2-name");
assertThat(target, nullValue());
target = translator.translate(new ChannelRequest("channel2-name", "shroff", null, null, null));
assertThat(target.getFormula(), equalTo("name"));
assertThat(target.getPermission(), equalTo(READ_ONLY));
}
}
}