blob: 9e0b7519b1a84ed567a8bd3cf5607820192115d6 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2008 The University of York.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.epsilon.emc.spreadsheets.instantiate;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.eclipse.epsilon.emc.spreadsheets.SpreadsheetConstants;
import org.eclipse.epsilon.emc.spreadsheets.SpreadsheetModel;
import org.eclipse.epsilon.emc.spreadsheets.SpreadsheetRow;
import org.eclipse.epsilon.emc.spreadsheets.SpreadsheetWorksheet;
import org.eclipse.epsilon.emc.spreadsheets.google.GSWorksheet;
import org.eclipse.epsilon.emc.spreadsheets.test.SharedTestMethods;
import org.eclipse.epsilon.emc.spreadsheets.test.TestModelFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
public class CreateInstanceReferencingSheetDataTypeStrictTest {
private static SpreadsheetModel model = null;
public CreateInstanceReferencingSheetDataTypeStrictTest(SpreadsheetModel model) {
CreateInstanceReferencingSheetDataTypeStrictTest.model = model;
}
@Parameterized.Parameters
public static Collection<Object[]> models() throws Exception {
String pathToFile = "resources/instantiate/CreateInstanceTest.xlsx";
String pathToConfig = "resources/instantiate/CreateInstanceReferencingTestConfig.xml";
return TestModelFactory.getModelsToTest("", pathToFile, pathToConfig, "CreateInstanceTest");
}
@Test
public void testWriteNonRowToReferencingCell() throws Exception {
String worksheetName = "Sheet3";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
Map<String, Object> values = new HashMap<>();
values.put("c_1", "VALUE0");
try {
model.createInstance(worksheetName, values);
fail("Should not be possible to write String to referencing cell");
}
catch (IllegalArgumentException e) {
assertTrue(true);
}
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows == null || rows.isEmpty());
}
@Test
public void testWriteEmptyValueFromReferencedRow() throws Exception {
String worksheetName = "Sheet3";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
SharedTestMethods.clearWorksheet(model, "Sheet5");
assertTrue(model.getAllOfType("Sheet5").size() == 0);
Map<String, Object> referencedValues = new HashMap<>();
referencedValues.put("c_1", "");
referencedValues.put("c_2", "");
referencedValues.put("c_3", "");
referencedValues.put("c_4", "");
referencedValues.put("c_5", "");
SpreadsheetRow referencedRow = (SpreadsheetRow) model.createInstance("Sheet5", referencedValues);
assertTrue(model.getAllOfType("Sheet5").size() == 1);
Map<String, Object> values = new HashMap<>();
values.put("c_1", referencedRow);
values.put("c_2", referencedRow);
values.put("c_3", referencedRow);
values.put("c_4", referencedRow);
values.put("c_5", referencedRow);
model.createInstance(worksheetName, values);
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows != null && !rows.isEmpty());
assertTrue(rows.size() == 1);
SpreadsheetWorksheet worksheet = model.getWorksheetByType(worksheetName);
SpreadsheetRow row = rows.get(0);
String value;
value = row.getVisibleCellValue(worksheet.getColumn("c_1"));
if (worksheet instanceof GSWorksheet) {
assertTrue(value.equals(worksheet.getDefaultEmptyCellValue()));
}
else {
assertTrue(value.equals(""));
}
value = row.getVisibleCellValue(worksheet.getColumn("c_2"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_INTEGER));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_2")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_3"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_DOUBLE));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_3")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_4"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_FLOAT));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_4")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_5"));
assertTrue(value.equalsIgnoreCase(SpreadsheetConstants.DEFAULT_DT_BOOLEAN));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_5")).size() == 1);
}
@Test
public void testNotManyCellsDataTypeStrictFromNotManyCells() throws Exception {
String worksheetName = "Sheet3";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
SharedTestMethods.clearWorksheet(model, "Sheet5");
assertTrue(model.getAllOfType("Sheet5").size() == 0);
Map<String, Object> referencedValues = new HashMap<>();
referencedValues.put("c_1", "string1, string2");
referencedValues.put("c_2", "123, 456, abc");
referencedValues.put("c_3", "1.52684, 1.23456, abc");
referencedValues.put("c_4", "1.52684789, 1.23456789, abc");
referencedValues.put("c_5", "true, false, abc");
SpreadsheetRow referencedRow = (SpreadsheetRow) model.createInstance("Sheet5", referencedValues);
assertTrue(model.getAllOfType("Sheet5").size() == 1);
Map<String, Object> values = new HashMap<>();
values.put("c_1", referencedRow);
values.put("c_2", referencedRow);
values.put("c_3", referencedRow);
values.put("c_4", referencedRow);
values.put("c_5", referencedRow);
model.createInstance(worksheetName, values);
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows != null && !rows.isEmpty());
assertTrue(rows.size() == 1);
SpreadsheetWorksheet worksheet = model.getWorksheetByType(worksheetName);
SpreadsheetRow row = rows.get(0);
String value;
value = row.getVisibleCellValue(worksheet.getColumn("c_1"));
assertTrue(value.equals("string1, string2"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_1")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_2"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_INTEGER));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_2")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_3"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_DOUBLE));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_3")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_4"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_FLOAT));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_4")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_5"));
assertTrue(value.equalsIgnoreCase(SpreadsheetConstants.DEFAULT_DT_BOOLEAN));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_5")).size() == 1);
}
@Test
public void testNotManyCellsDataTypeStrictMultipleRowsFromNotManyCells() throws Exception {
String worksheetName = "Sheet3";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
SharedTestMethods.clearWorksheet(model, "Sheet5");
assertTrue(model.getAllOfType("Sheet5").size() == 0);
Map<String, Object> referencedValues = new HashMap<>();
referencedValues.put("c_1", "string1, string2");
referencedValues.put("c_2", "123, 456, abc");
referencedValues.put("c_3", "1.52684, 1.23456, abc");
referencedValues.put("c_4", "1.52684789, 1.23456789, abc");
referencedValues.put("c_5", "true, false, abc");
SpreadsheetRow referencedRow1 = (SpreadsheetRow) model.createInstance("Sheet5", referencedValues);
SpreadsheetRow referencedRow2 = (SpreadsheetRow) model.createInstance("Sheet5", referencedValues);
assertTrue(model.getAllOfType("Sheet5").size() == 2);
Set<SpreadsheetRow> setOfReferencedRows = new LinkedHashSet<>();
setOfReferencedRows.add(referencedRow1);
setOfReferencedRows.add(referencedRow2);
Map<String, Object> values = new HashMap<>();
values.put("c_1", setOfReferencedRows);
values.put("c_2", setOfReferencedRows);
values.put("c_3", setOfReferencedRows);
values.put("c_4", setOfReferencedRows);
values.put("c_5", setOfReferencedRows);
model.createInstance(worksheetName, values);
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows != null && !rows.isEmpty());
assertTrue(rows.size() == 1);
SpreadsheetWorksheet worksheet = model.getWorksheetByType(worksheetName);
SpreadsheetRow row = rows.get(0);
String value;
value = row.getVisibleCellValue(worksheet.getColumn("c_1"));
assertTrue(value.equals("string1, string2"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_1")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_2"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_INTEGER));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_2")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_3"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_DOUBLE));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_3")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_4"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_FLOAT));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_4")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_5"));
assertTrue(value.equalsIgnoreCase(SpreadsheetConstants.DEFAULT_DT_BOOLEAN));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_5")).size() == 1);
}
@Test
public void testManyCellsDataTypeStrictFromNotManyCells() throws Exception {
String worksheetName = "Sheet4";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
SharedTestMethods.clearWorksheet(model, "Sheet5");
assertTrue(model.getAllOfType("Sheet5").size() == 0);
Map<String, Object> referencedValues = new HashMap<>();
referencedValues.put("c_1", "string1, string2");
referencedValues.put("c_2", "123, 456, abc");
referencedValues.put("c_3", "1.52684, 1.23456, abc");
referencedValues.put("c_4", "1.52684789, 1.23456789, abc");
referencedValues.put("c_5", "true, false, abc");
SpreadsheetRow referencedRow = (SpreadsheetRow) model.createInstance("Sheet5", referencedValues);
assertTrue(model.getAllOfType("Sheet5").size() == 1);
Map<String, Object> values = new HashMap<>();
values.put("c_1", referencedRow);
values.put("c_2", referencedRow);
values.put("c_3", referencedRow);
values.put("c_4", referencedRow);
values.put("c_5", referencedRow);
model.createInstance(worksheetName, values);
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows != null && !rows.isEmpty());
assertTrue(rows.size() == 1);
SpreadsheetWorksheet worksheet = model.getWorksheetByType(worksheetName);
SpreadsheetRow row = rows.get(0);
String value;
value = row.getVisibleCellValue(worksheet.getColumn("c_1"));
assertTrue(value.equals("string1, string2"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_1")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_2"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_INTEGER));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_2")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_3"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_DOUBLE));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_3")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_4"));
assertTrue(value.equals(SpreadsheetConstants.DEFAULT_DT_FLOAT));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_4")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_5"));
assertTrue(value.equalsIgnoreCase(SpreadsheetConstants.DEFAULT_DT_BOOLEAN));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_5")).size() == 1);
}
@Test
public void testManyCellsDataTypeStrictMultipleRowsFromNotManyCells() throws Exception {
String worksheetName = "Sheet4";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
SharedTestMethods.clearWorksheet(model, "Sheet5");
assertTrue(model.getAllOfType("Sheet5").size() == 0);
Map<String, Object> referencedValues = new HashMap<>();
referencedValues.put("c_1", "string1, string2");
referencedValues.put("c_2", "123, 456, abc");
referencedValues.put("c_3", "1.52684, 1.23456, abc");
referencedValues.put("c_4", "1.52684789, 1.23456789, abc");
referencedValues.put("c_5", "true, false, abc");
SpreadsheetRow referencedRow1 = (SpreadsheetRow) model.createInstance("Sheet5", referencedValues);
SpreadsheetRow referencedRow2 = (SpreadsheetRow) model.createInstance("Sheet5", referencedValues);
assertTrue(model.getAllOfType("Sheet5").size() == 2);
Set<SpreadsheetRow> setOfReferencedRows = new LinkedHashSet<>();
setOfReferencedRows.add(referencedRow1);
setOfReferencedRows.add(referencedRow2);
Map<String, Object> values = new HashMap<>();
values.put("c_1", setOfReferencedRows);
values.put("c_2", setOfReferencedRows);
values.put("c_3", setOfReferencedRows);
values.put("c_4", setOfReferencedRows);
values.put("c_5", setOfReferencedRows);
model.createInstance(worksheetName, values);
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows != null && !rows.isEmpty());
assertTrue(rows.size() == 1);
SpreadsheetWorksheet worksheet = model.getWorksheetByType(worksheetName);
SpreadsheetRow row = rows.get(0);
String value;
String cellValue;
value = row.getVisibleCellValue(worksheet.getColumn("c_1"));
cellValue = "string1, string2";
assertTrue(value.equals(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_1")).size() == 2);
value = row.getVisibleCellValue(worksheet.getColumn("c_2"));
cellValue = SpreadsheetConstants.DEFAULT_DT_INTEGER;
assertTrue(value.equals(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_2")).size() == 2);
value = row.getVisibleCellValue(worksheet.getColumn("c_3"));
cellValue = SpreadsheetConstants.DEFAULT_DT_DOUBLE;
assertTrue(value.equals(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_3")).size() == 2);
value = row.getVisibleCellValue(worksheet.getColumn("c_4"));
cellValue = SpreadsheetConstants.DEFAULT_DT_FLOAT;
assertTrue(value.equals(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_4")).size() == 2);
value = row.getVisibleCellValue(worksheet.getColumn("c_5"));
cellValue = SpreadsheetConstants.DEFAULT_DT_BOOLEAN;
assertTrue(value.equalsIgnoreCase(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_5")).size() == 2);
}
@Test
public void testNotManyCellsDataTypeStrictFromManyCells() throws Exception {
String worksheetName = "Sheet3";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
SharedTestMethods.clearWorksheet(model, "Sheet6");
assertTrue(model.getAllOfType("Sheet6").size() == 0);
Map<String, Object> referencedValues = new HashMap<>();
referencedValues.put("c_1", "string1, string2");
referencedValues.put("c_2", "123, 456, abc");
referencedValues.put("c_3", "1.52684, 1.23456, abc");
referencedValues.put("c_4", "1.52684789, 1.23456789, abc");
referencedValues.put("c_5", "true, false, abc");
SpreadsheetRow referencedRow = (SpreadsheetRow) model.createInstance("Sheet6", referencedValues);
assertTrue(model.getAllOfType("Sheet6").size() == 1);
Map<String, Object> values = new HashMap<>();
values.put("c_1", referencedRow);
values.put("c_2", referencedRow);
values.put("c_3", referencedRow);
values.put("c_4", referencedRow);
values.put("c_5", referencedRow);
model.createInstance(worksheetName, values);
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows != null && !rows.isEmpty());
assertTrue(rows.size() == 1);
SpreadsheetWorksheet worksheet = model.getWorksheetByType(worksheetName);
SpreadsheetRow row = rows.get(0);
String value;
value = row.getVisibleCellValue(worksheet.getColumn("c_1"));
assertTrue(value.equals("string1"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_1")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_2"));
assertTrue(value.equals("123"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_2")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_3"));
assertTrue(value.equals("1.52684"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_3")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_4"));
assertTrue(value.equals("1.5268478"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_4")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_5"));
assertTrue(value.equalsIgnoreCase("true"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_5")).size() == 1);
}
@Test
public void testNotManyCellsDataTypeStrictMultipleRowsFromManyCells() throws Exception {
String worksheetName = "Sheet3";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
SharedTestMethods.clearWorksheet(model, "Sheet6");
assertTrue(model.getAllOfType("Sheet6").size() == 0);
Map<String, Object> referencedValues = new HashMap<>();
referencedValues.put("c_1", "string1, string2");
referencedValues.put("c_2", "123, 456, abc");
referencedValues.put("c_3", "1.52684, 1.23456, abc");
referencedValues.put("c_4", "1.52684789, 1.23456789, abc");
referencedValues.put("c_5", "true, false, abc");
SpreadsheetRow referencedRow1 = (SpreadsheetRow) model.createInstance("Sheet6", referencedValues);
SpreadsheetRow referencedRow2 = (SpreadsheetRow) model.createInstance("Sheet6", referencedValues);
assertTrue(model.getAllOfType("Sheet6").size() == 2);
Set<SpreadsheetRow> setOfReferencedRows = new LinkedHashSet<>();
setOfReferencedRows.add(referencedRow1);
setOfReferencedRows.add(referencedRow2);
Map<String, Object> values = new HashMap<>();
values.put("c_1", setOfReferencedRows);
values.put("c_2", setOfReferencedRows);
values.put("c_3", setOfReferencedRows);
values.put("c_4", setOfReferencedRows);
values.put("c_5", setOfReferencedRows);
model.createInstance(worksheetName, values);
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows != null && !rows.isEmpty());
assertTrue(rows.size() == 1);
SpreadsheetWorksheet worksheet = model.getWorksheetByType(worksheetName);
SpreadsheetRow row = rows.get(0);
String value;
value = row.getVisibleCellValue(worksheet.getColumn("c_1"));
assertTrue(value.equals("string1"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_1")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_2"));
assertTrue(value.equals("123"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_2")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_3"));
assertTrue(value.equals("1.52684"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_3")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_4"));
assertTrue(value.equals("1.5268478"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_4")).size() == 1);
value = row.getVisibleCellValue(worksheet.getColumn("c_5"));
assertTrue(value.equalsIgnoreCase("true"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_5")).size() == 1);
}
@Test
public void testManyCellsDataTypeStrictFromManyCells() throws Exception {
String worksheetName = "Sheet4";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
SharedTestMethods.clearWorksheet(model, "Sheet6");
assertTrue(model.getAllOfType("Sheet6").size() == 0);
Map<String, Object> referencedValues = new HashMap<>();
referencedValues.put("c_1", "string1, string2");
referencedValues.put("c_2", "123, 456, abc");
referencedValues.put("c_3", "1.52684, 1.23456, abc");
referencedValues.put("c_4", "1.52684789, 1.23456789, abc");
referencedValues.put("c_5", "true, false, abc");
SpreadsheetRow referencedRow = (SpreadsheetRow) model.createInstance("Sheet6", referencedValues);
assertTrue(model.getAllOfType("Sheet6").size() == 1);
Map<String, Object> values = new HashMap<>();
values.put("c_1", referencedRow);
values.put("c_2", referencedRow);
values.put("c_3", referencedRow);
values.put("c_4", referencedRow);
values.put("c_5", referencedRow);
model.createInstance(worksheetName, values);
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows != null && !rows.isEmpty());
assertTrue(rows.size() == 1);
SpreadsheetWorksheet worksheet = model.getWorksheetByType(worksheetName);
SpreadsheetRow row = rows.get(0);
String value;
value = row.getVisibleCellValue(worksheet.getColumn("c_1"));
assertTrue(value.equals("string1;string2"));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_1")).size() == 2);
value = row.getVisibleCellValue(worksheet.getColumn("c_2"));
assertTrue(value.equals("123;456;" + SpreadsheetConstants.DEFAULT_DT_INTEGER));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_2")).size() == 3);
value = row.getVisibleCellValue(worksheet.getColumn("c_3"));
assertTrue(value.equals("1.52684;1.23456;" + SpreadsheetConstants.DEFAULT_DT_DOUBLE));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_3")).size() == 3);
value = row.getVisibleCellValue(worksheet.getColumn("c_4"));
assertTrue(value.equals(Float.parseFloat("1.52684789") + ";" + Float.parseFloat("1.23456789") + ";"
+ SpreadsheetConstants.DEFAULT_DT_FLOAT));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_4")).size() == 3);
value = row.getVisibleCellValue(worksheet.getColumn("c_5"));
assertTrue(value.equalsIgnoreCase("true;false;" + SpreadsheetConstants.DEFAULT_DT_BOOLEAN));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_5")).size() == 3);
}
@Test
public void testManyCellsDataTypeStrictMultipleRowsFromManyCells() throws Exception {
String worksheetName = "Sheet4";
SharedTestMethods.clearWorksheet(model, worksheetName);
assertTrue(model.getAllOfType(worksheetName).size() == 0);
SharedTestMethods.clearWorksheet(model, "Sheet6");
assertTrue(model.getAllOfType("Sheet6").size() == 0);
Map<String, Object> referencedValues = new HashMap<>();
referencedValues.put("c_1", "string1, string2");
referencedValues.put("c_2", "123, 456, abc");
referencedValues.put("c_3", "1.52684, 1.23456, abc");
referencedValues.put("c_4", "1.52684789, 1.23456789, abc");
referencedValues.put("c_5", "true, false, abc");
SpreadsheetRow referencedRow1 = (SpreadsheetRow) model.createInstance("Sheet6", referencedValues);
SpreadsheetRow referencedRow2 = (SpreadsheetRow) model.createInstance("Sheet6", referencedValues);
assertTrue(model.getAllOfType("Sheet6").size() == 2);
Set<SpreadsheetRow> setOfReferencedRows = new LinkedHashSet<>();
setOfReferencedRows.add(referencedRow1);
setOfReferencedRows.add(referencedRow2);
Map<String, Object> values = new HashMap<>();
values.put("c_1", setOfReferencedRows);
values.put("c_2", setOfReferencedRows);
values.put("c_3", setOfReferencedRows);
values.put("c_4", setOfReferencedRows);
values.put("c_5", setOfReferencedRows);
model.createInstance(worksheetName, values);
List<SpreadsheetRow> rows = (List<SpreadsheetRow>) model.getAllOfKind(worksheetName);
assertTrue(rows != null && !rows.isEmpty());
assertTrue(rows.size() == 1);
SpreadsheetWorksheet worksheet = model.getWorksheetByType(worksheetName);
SpreadsheetRow row = rows.get(0);
String value;
String cellValue;
value = row.getVisibleCellValue(worksheet.getColumn("c_1"));
cellValue = "string1;string2";
assertTrue(value.equals(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_1")).size() == 4);
value = row.getVisibleCellValue(worksheet.getColumn("c_2"));
cellValue = "123;456;" + SpreadsheetConstants.DEFAULT_DT_INTEGER;
assertTrue(value.equals(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_2")).size() == 6);
value = row.getVisibleCellValue(worksheet.getColumn("c_3"));
cellValue = "1.52684;1.23456;" + SpreadsheetConstants.DEFAULT_DT_DOUBLE;
assertTrue(value.equals(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_3")).size() == 6);
value = row.getVisibleCellValue(worksheet.getColumn("c_4"));
cellValue = Float.parseFloat("1.52684789") + ";" + Float.parseFloat("1.23456789") + ";"
+ SpreadsheetConstants.DEFAULT_DT_FLOAT;
assertTrue(value.equals(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_4")).size() == 6);
value = row.getVisibleCellValue(worksheet.getColumn("c_5"));
cellValue = "true;false;" + SpreadsheetConstants.DEFAULT_DT_BOOLEAN;
assertTrue(value.equalsIgnoreCase(cellValue + ";" + cellValue));
assertTrue(row.getAllVisibleCellValuesAsIs(worksheet.getColumn("c_5")).size() == 6);
}
}