package com.constellio.data.io.concurrent.data; import static org.assertj.core.api.Assertions.assertThat; import java.util.Arrays; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @RunWith(value = Parameterized.class) public class GenericWrapperTest{ @Parameters(name = "{index}: Test {0}") public static Iterable<Object[]> setUpParameters() { return Arrays.asList(new Object[][] { { new TextWrapperTestHelper() }, { new XmlWrapperTestHelper() }, }); } public GenericWrapperTest(WrapperTestHelper<?> testHelper) { this.testHelper = testHelper; } private WrapperTestHelper<?> testHelper; @SuppressWarnings({ "rawtypes", "unchecked" }) @Test public void givenAByteArrayConstructedFromDataWhenConstructingAnotherDataFromTheByteArrayThenTwoDatasAreEqual(){ //given DataWrapper data = testHelper.createEmptyData(); data.init(testHelper.getAValue()); //when DataWrapper newTextData = testHelper.createEmptyData(); newTextData.init(data.toBytes()); //then testHelper.assertEquality(data, newTextData); } @SuppressWarnings("rawtypes") @Test public void givenADataWhenModifingBinaryDataThenTheDataIsImutable(){ //given DataWrapper dataWrapper = testHelper.createEmptyData(); dataWrapper.init(testHelper.getAValue()); byte[] bytes = dataWrapper.toBytes(); byte[] copy = Arrays.copyOf(bytes, bytes.length); //when for (int i = 0; i < bytes.length; i++) bytes[i] = 0; //then assertThat(copy).isEqualTo(dataWrapper.toBytes()); } @SuppressWarnings({ "unchecked", "rawtypes" }) public <T> void givenADataWrapperWhenConveringToDataWithVersionAndGetItBackTheValuesAreTheSame(){ DataWithVersion dataWithVersion = new DataWithVersion(testHelper.getAValue(), null); DataWrapper createByDataVersion = testHelper.createEmptyData(); createByDataVersion = dataWithVersion.getView(createByDataVersion); DataWrapper dataWrapper = testHelper.createEmptyData(); dataWrapper.init(testHelper.getAValue()); testHelper.assertEquality(dataWrapper, createByDataVersion); } }