package org.rf.ide.core.testdata.text.write.tables.variables.creation;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import org.junit.Test;
import org.rf.ide.core.testdata.model.RobotFile;
import org.rf.ide.core.testdata.model.table.VariableTable;
import org.rf.ide.core.testdata.model.table.variables.AVariable;
import org.rf.ide.core.testdata.text.read.recognizer.RobotToken;
import org.rf.ide.core.testdata.text.write.NewRobotFileTestHelper;
public abstract class ACreationOfDictionaryVariableTest {
public static final String PRETTY_NEW_DIR_LOCATION = "variables//dictionary//new//";
private final String extension;
public ACreationOfDictionaryVariableTest(final String extension) {
this.extension = extension;
}
public String getExtension() {
return extension;
}
@Test
public void test_emptyFile_and_thanCreateDictionaryVariable() throws Exception {
// prepare
final String fileName = PRETTY_NEW_DIR_LOCATION + "EmptyDictionaryVariableDeclarationOnly." + getExtension();
final RobotFile modelFile = NewRobotFileTestHelper.getModelFileToModify("2.9");
// test data prepare
modelFile.includeVariableTableSection();
final VariableTable variableTable = modelFile.getVariableTable();
variableTable.createDictionaryVariable(0, "dict", new ArrayList<Entry<String, String>>());
// verify
NewRobotFileTestHelper.assertNewModelTheSameAsInFile(fileName, modelFile);
}
@Test
public void test_emptyFile_and_thanCreationDictionary_withThreeKeyValuePairs() throws Exception {
// prepare
final String fileName = PRETTY_NEW_DIR_LOCATION + "DictionaryVariableDeclarationWithThreeValuePairKeysOnly."
+ getExtension();
final RobotFile modelFile = NewRobotFileTestHelper.getModelFileToModify("2.9");
// test data prepare
modelFile.includeVariableTableSection();
final VariableTable variableTable = modelFile.getVariableTable();
final List<Entry<String, String>> data = new ArrayList<>();
data.add(variableTable.createEntry("key1", "value1"));
data.add(variableTable.createEntry("key2", "value2"));
data.add(variableTable.createEntry("key3", "value3"));
variableTable.createDictionaryVariable(0, "dict", data);
// verify
NewRobotFileTestHelper.assertNewModelTheSameAsInFile(fileName, modelFile);
}
@Test
public void test_emptyFile_and_thanCreationDictionary_withComment() throws Exception {
// prepare
final String fileName = PRETTY_NEW_DIR_LOCATION + "DictionaryVariableDeclarationWithCommentOnly."
+ getExtension();
final RobotFile modelFile = NewRobotFileTestHelper.getModelFileToModify("2.9");
// test data prepare
modelFile.includeVariableTableSection();
final VariableTable variableTable = modelFile.getVariableTable();
final List<Entry<String, String>> data = new ArrayList<>();
final AVariable aVariable = variableTable.createDictionaryVariable(0, "dict", data);
final RobotToken cmTok1 = new RobotToken();
cmTok1.setText("cm1");
final RobotToken cmTok2 = new RobotToken();
cmTok2.setText("cm2");
final RobotToken cmTok3 = new RobotToken();
cmTok3.setText("cm3");
aVariable.addCommentPart(cmTok1);
aVariable.addCommentPart(cmTok2);
aVariable.addCommentPart(cmTok3);
// verify
NewRobotFileTestHelper.assertNewModelTheSameAsInFile(fileName, modelFile);
}
@Test
public void test_emptyFile_and_thanCreationDictionary_withThreeKeyValuePair_andComment() throws Exception {
// prepare
final String fileName = PRETTY_NEW_DIR_LOCATION
+ "DictionaryVariableDeclarationWithCommentAndThreeKeyValuePairOnly." + getExtension();
final RobotFile modelFile = NewRobotFileTestHelper.getModelFileToModify("2.9");
// test data prepare
modelFile.includeVariableTableSection();
final VariableTable variableTable = modelFile.getVariableTable();
final List<Entry<String, String>> data = new ArrayList<>();
data.add(variableTable.createEntry("key1", "value1"));
data.add(variableTable.createEntry("key2", "value2"));
data.add(variableTable.createEntry("key3", "value3"));
final AVariable aVariable = variableTable.createDictionaryVariable(0, "dict", data);
final RobotToken cmTok1 = new RobotToken();
cmTok1.setText("cm1");
final RobotToken cmTok2 = new RobotToken();
cmTok2.setText("cm2");
final RobotToken cmTok3 = new RobotToken();
cmTok3.setText("cm3");
aVariable.addCommentPart(cmTok1);
aVariable.addCommentPart(cmTok2);
aVariable.addCommentPart(cmTok3);
// verify
NewRobotFileTestHelper.assertNewModelTheSameAsInFile(fileName, modelFile);
}
@Test
public void test_emptyFile_and_thanCreationDictionary_withThreeKeyValuePair_andLastOnlyHasValue() throws Exception {
// prepare
final String fileName = PRETTY_NEW_DIR_LOCATION + "DictionaryVariableDeclarationWith2ValuesEmptyAndLastSet."
+ getExtension();
final RobotFile modelFile = NewRobotFileTestHelper.getModelFileToModify("2.9");
// test data prepare
modelFile.includeVariableTableSection();
final VariableTable variableTable = modelFile.getVariableTable();
final List<Entry<String, String>> data = new ArrayList<>();
data.add(variableTable.createEntry("", ""));
data.add(variableTable.createEntry("", ""));
data.add(variableTable.createEntry("key", "value"));
variableTable.createDictionaryVariable(0, "dict", data);
// verify
NewRobotFileTestHelper.assertNewModelTheSameAsInFile(fileName, modelFile);
}
@Test
public void test_emptyFile_and_thanCreationDictionary_withThreeKeyValuePair_andMiddleHasValue() throws Exception {
// prepare
final String fileName = PRETTY_NEW_DIR_LOCATION
+ "DictionaryVariableDeclarationWith1ValueEmptyNextSetAndLastEmpty." + getExtension();
final RobotFile modelFile = NewRobotFileTestHelper.getModelFileToModify("2.9");
// test data prepare
modelFile.includeVariableTableSection();
final VariableTable variableTable = modelFile.getVariableTable();
final List<Entry<String, String>> data = new ArrayList<>();
data.add(variableTable.createEntry("", ""));
data.add(variableTable.createEntry("key", "value"));
data.add(variableTable.createEntry("", ""));
variableTable.createDictionaryVariable(0, "dict", data);
// verify
NewRobotFileTestHelper.assertNewModelTheSameAsInFile(fileName, modelFile);
}
}