/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package project.latex.balloon.writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import org.mockito.Matchers;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
*
* @author dgorst
*/
public class DataModelConverterTest {
private ChecksumGenerator mockChecksumGenerator;
private DataModelConverter dataModelConverter;
@Before
public void setUp() {
mockChecksumGenerator = mock(ChecksumGenerator.class);
when(mockChecksumGenerator.generateChecksum(Matchers.anyString())).thenReturn("XX");
dataModelConverter = new DataModelConverter(mockChecksumGenerator);
}
/**
* Test of convertDataKeysToCsvString method, of class DataModelConverter.
*/
@Test
public void testConvertDataKeysToCsvString() {
List<String> dataKeys = new ArrayList<>();
dataKeys.add("First");
dataKeys.add("Second");
String expResult = "First,Second";
String result = dataModelConverter.convertDataKeysToCsvString(dataKeys);
assertEquals(expResult, result);
}
@Test(expected = IllegalArgumentException.class)
public void testConvertDataKeysThrowsIfPassedNullString() {
dataModelConverter.convertDataKeysToCsvString(null);
}
@Test
public void testConvertDataKeysReturnsEmptyStringIfPassedEmptyList() {
String actual = dataModelConverter.convertDataKeysToCsvString(new ArrayList<String>());
assertEquals("", actual);
}
/**
* Test of convertDataToCsvString method, of class DataModelConverter.
*/
@Test
public void testConvertDataToCsvString() {
List<String> dataKeys = new ArrayList<>();
dataKeys.add("First");
dataKeys.add("Second");
Map<String, Object> data = new HashMap<>();
data.put("Second", 0.34);
data.put("First", 1.23);
String expResult = "1.23,0.34*XX";
String result = dataModelConverter.convertDataToCsvString(dataKeys, data);
assertEquals(expResult, result);
}
@Test(expected = IllegalArgumentException.class)
public void testConvertDataToCsvStringThrowsIfPassedNullDataKeys() {
dataModelConverter.convertDataToCsvString(null, new HashMap<String, Object>());
}
@Test(expected = IllegalArgumentException.class)
public void testConvertDataToCsvStringThrowsIfPassedNullData() {
List<String> dataKeys = new ArrayList<>();
dataKeys.add("First");
dataKeys.add("Second");
dataModelConverter.convertDataToCsvString(dataKeys, null);
}
@Test
public void testConvertDataToCsvStringReturnsEmptyStringIfPassedEmptyKeysArray() {
List<String> dataKeys = new ArrayList<>();
Map<String, Object> data = new HashMap<>();
data.put("Second", 0.34);
data.put("First", 1.23);
String actual = dataModelConverter.convertDataToCsvString(dataKeys, data);
assertEquals("", actual);
}
@Test
public void testConvertDataToCsvStringReturnsNullStringsIfDataDoesntMatchKeys() {
List<String> dataKeys = new ArrayList<>();
dataKeys.add("First");
dataKeys.add("Second");
Map<String, Object> data = new HashMap<>();
data.put("X", 0.34);
data.put("Y", 1.23);
String actual = dataModelConverter.convertDataToCsvString(dataKeys, data);
assertEquals("99.99,99.99*XX", actual);
}
}