// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataquality.indicators.impl;
import static org.powermock.api.mockito.PowerMockito.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Set;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;
import org.talend.dataquality.indicators.DuplicateCountIndicator;
import org.talend.dataquality.indicators.IndicatorsFactory;
/**
* DOC yyin class global comment. Detailled comment
*/
@RunWith(PowerMockRunner.class)
public class DuplicateCountIndicatorImplTest {
private DuplicateCountIndicator dupIndicator;
private ResultSet result;
/**
* DOC yyin Comment method "setUp".
*
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
dupIndicator = IndicatorsFactory.eINSTANCE.createDuplicateCountIndicator();
((DuplicateCountIndicatorImpl) dupIndicator).setUsedMapDBMode(false);
// init the resultset: columnsize:2, rowscount: 6
result = mock(ResultSet.class);
when(result.getObject(1)).thenReturn("1").thenReturn("2").thenReturn("3").thenReturn("4").thenReturn("5").thenReturn("6");
when(result.getObject(2)).thenReturn("1000").thenReturn("2000").thenReturn("1000").thenReturn("1000").thenReturn("3000")
.thenReturn("3000");
}
/**
* DOC yyin Comment method "tearDown".
*
* @throws java.lang.Exception
*/
@After
public void tearDown() throws Exception {
}
/**
* Test method for {@link org.talend.dataquality.indicators.impl.DuplicateCountIndicatorImpl#reset()}.
*/
@Test
public void testReset() {
this.dupIndicator.reset();
Assert.assertTrue(dupIndicator.getDuplicateMap().size() < 1);
}
/**
* Test method for {@link org.talend.dataquality.indicators.impl.DuplicateCountIndicatorImpl#finalizeComputation()}.
* after all handled.
*/
@Test
public void testFinalizeComputation() {
this.dupIndicator.reset();
this.testHandle_1();
this.dupIndicator.finalizeComputation();
Assert.assertTrue(this.dupIndicator.getDuplicateValueCount() == 2);
}
@Test
public void testGetDuplicateValues() {
this.dupIndicator.reset();
this.testHandle_1();
this.dupIndicator.finalizeComputation();
Set<Object> dupValues = dupIndicator.getDuplicateValues();
Assert.assertTrue(dupValues.size() == 2);
}
/**
* Test method for
* {@link org.talend.dataquality.indicators.impl.DuplicateCountIndicatorImpl#getDuplicateValueCount()}.
*/
@Test
public void testGetDuplicateValueCount() {
this.dupIndicator.reset();
this.testHandle_1();
Assert.assertNull(this.dupIndicator.getDuplicateValueCount());
this.dupIndicator.finalizeComputation();
Assert.assertTrue(this.dupIndicator.getDuplicateValueCount() == 2);
}
/**
* Test method for
* {@link org.talend.dataquality.indicators.impl.DuplicateCountIndicatorImpl#handle(java.lang.Object, java.sql.ResultSet, int)}
* .
*/
@Test
public void testHandle_1() {
this.dupIndicator.reset();
try {
this.dupIndicator.handle("1000", result, 2);
Assert.assertTrue(dupIndicator.getDuplicateMap().size() == 1);
this.dupIndicator.handle("2000", result, 2);
Assert.assertTrue(dupIndicator.getDuplicateMap().size() == 2);
this.dupIndicator.handle("1000", result, 2);
Assert.assertTrue(dupIndicator.getDuplicateMap().size() == 2);
this.dupIndicator.handle("1000", result, 2);
Assert.assertTrue(dupIndicator.getDuplicateMap().size() == 2);
this.dupIndicator.handle("3000", result, 2);
Assert.assertTrue(dupIndicator.getDuplicateMap().size() == 3);
this.dupIndicator.handle("3000", result, 2);
Assert.assertTrue(dupIndicator.getDuplicateMap().size() == 3);
} catch (SQLException e) {
Assert.fail("test method: DuplicateCountIndicator.handle(Object,Resultset,int) failed.");
}
}
}