package test.objectfactory.github1131;
import org.testng.TestNG;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.xml.XmlSuite;
import test.SimpleBaseTest;
import static org.assertj.core.api.Assertions.assertThat;
public class GitHub1131Test extends SimpleBaseTest {
private void testFactory(boolean onSuite, Class<?> sample) {
MyObjectFactory.allParams.clear();
XmlSuite suite = createXmlSuite("Test IObjectFactory2", "TmpTest", sample);
TestNG tng = create(suite);
if (onSuite) {
suite.setObjectFactory(new MyObjectFactory());
} else {
tng.setObjectFactory(MyObjectFactory.class);
}
tng.run();
}
@DataProvider
public static Object[][] dp() {
return new Object[][]{
new Object[]{true},
new Object[]{false}
};
}
@Test(dataProvider = "dp")
public void factoryWithEmptyConstructorShouldWork(boolean bool) {
testFactory(bool, EmptyConstructorSample.class);
assertThat(MyObjectFactory.allParams).isEmpty();
}
@Test(dataProvider = "dp")
public void factoryWithIntConstructorShouldWork(boolean bool) {
testFactory(bool, IntConstructorSample.class);
assertThat(MyObjectFactory.allParams).containsExactly(new Object[]{1}, new Object[]{2});
}
@Test(dataProvider = "dp")
public void factoryWithStringConstructorShouldWork(boolean bool) {
testFactory(bool, StringConstructorSample.class);
assertThat(MyObjectFactory.allParams).containsExactly(new Object[]{"foo"}, new Object[]{"bar"});
}
}