/*
* Copyright 2016 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.rf.ide.core.testdata.model.presenter.update.variables;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.rf.ide.core.testdata.model.table.variables.DictionaryVariable.DictionaryKeyValuePair;
import org.rf.ide.core.testdata.text.read.recognizer.RobotToken;
public class VariablesValueConverterTest {
@Test
public void test_toRobotToken_convert() {
// prepare
final String text = "ok";
// execute
final RobotToken tok = VariablesValueConverter.toRobotToken(text);
// verify
assertThat(tok.getText()).isEqualTo(text);
}
@Test
public void test_conversion_fromString_keyValueExists() {
// prepare
final String dictText = "key=value";
// execute
final DictionaryKeyValuePair dict = VariablesValueConverter.fromString(dictText);
// verify
assertThat(dict.getKey().getText()).isEqualTo("key");
assertThat(dict.getValue().getText()).isEqualTo("value");
assertThat(dict.getRaw().getText()).isEqualTo(dictText);
}
@Test
public void test_conversion_fromRobotToken_keyValueExists() {
// prepare
final String dictText = "key=value";
final RobotToken tok = new RobotToken();
tok.setText(dictText);
// execute
final DictionaryKeyValuePair dict = VariablesValueConverter.fromRobotToken(tok);
// verify
assertThat(dict.getKey().getText()).isEqualTo("key");
assertThat(dict.getValue().getText()).isEqualTo("value");
assertThat(dict.getRaw().getText()).isEqualTo(dictText);
}
@Test
public void test_conversion_fromDictionaryKeyValuePair_keyValueExists() {
// prepare
final RobotToken raw = RobotToken.create("key=value");
final RobotToken key = RobotToken.create("key");
final RobotToken value = RobotToken.create("value");
final DictionaryKeyValuePair keyValuePair = new DictionaryKeyValuePair(raw, key, value);
// execute
final RobotToken tok = VariablesValueConverter.fromDictionaryKeyValuePair(keyValuePair);
// verify
assertThat(tok.getText()).isEqualTo("key=value");
}
@Test
public void test_conversion_convertAll_to_RobotToken_allTypes() {
// prepare
final List<Object> objs = new ArrayList<>();
final RobotToken tok = RobotToken.create("text");
objs.add(tok);
objs.add("text2");
objs.add(DictionaryKeyValuePair.createFromRaw("new=ok"));
// execute
final List<RobotToken> converted = VariablesValueConverter.convert(objs, RobotToken.class);
// verify
assertThat(converted).hasSize(3);
assertThat(converted.get(0)).isSameAs(tok);
assertThat(converted.get(1).getText()).isEqualTo("text2");
assertThat(converted.get(2).getText()).isEqualTo("new=ok");
}
@Test
public void test_converstion_convertAll_to_DictionaryKeyValuePair_allTypes() {
// prepare
final List<Object> objs = new ArrayList<>();
final DictionaryKeyValuePair pair = DictionaryKeyValuePair.createFromRaw("key=value");
objs.add("key1=value2");
objs.add(RobotToken.create("key2=value3"));
objs.add(pair);
// execute
List<DictionaryKeyValuePair> converted = VariablesValueConverter.convert(objs, DictionaryKeyValuePair.class);
// verify
assertThat(converted).hasSize(3);
assertKeyValuePair(converted.get(0), "key1", "value2");
assertKeyValuePair(converted.get(1), "key2", "value3");
assertThat(converted.get(2)).isSameAs(pair);
}
@Test(expected = ClassCastException.class)
public void test_wrongClassToConvert() {
// prepare
final List<Object> objs = new ArrayList<>();
objs.add(new String("xyz"));
// execute
VariablesValueConverter.convert(objs, Double.class);
// verify
Assert.fail("Shouldn't reach here.");
}
private void assertKeyValuePair(final DictionaryKeyValuePair pair, final String key, final String value) {
assertThat(pair.getRaw().getText()).isEqualTo(key + "=" + value);
assertThat(pair.getKey().getText()).isEqualTo(key);
assertThat(pair.getValue().getText()).isEqualTo(value);
}
}