package kr.debop4j.core.io; import kr.debop4j.core.ISerializer; import kr.debop4j.core.compress.ICompressor; import kr.debop4j.core.compress.spring.CompressorConfiguration; import kr.debop4j.core.cryptography.spring.EncryptorConfiguration; import kr.debop4j.core.cryptography.symmetric.ISymmetricByteEncryptor; import kr.debop4j.core.io.spring.SerializerConfiguration; import lombok.extern.slf4j.Slf4j; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.Collection; /** * 설명을 추가하세요. * * @author 배성혁 ( sunghyouk.bae@gmail.com ) * @since 12. 12. 17 */ @Slf4j @RunWith( SpringJUnit4ClassRunner.class ) @ContextConfiguration( classes = { CompressorConfiguration.class, EncryptorConfiguration.class, SerializerConfiguration.class } ) public class SerializerTest { @Autowired ApplicationContext context; private static final Company company; static { company = new Company(); company.setCode("KTH"); company.setName("KT Hitel"); company.setAmount(10000L); company.setDescription("한국통신 하이텔"); for (int i = 0; i < 100; i++) { User user = new User(); user.setName("USER_" + i); user.setEmployeeNumber("EMPNO_" + i); user.setAddress("ADDR_" + i); company.getUsers().add(user); } } @Test public void compressableSerializeTest() { Collection<ICompressor> compressors = context.getBeansOfType(ICompressor.class).values(); Collection<ISerializer> serializers = context.getBeansOfType(ISerializer.class).values(); for (ICompressor compressor : compressors) { for (ISerializer serializer : serializers) { ISerializer cs = new CompressableSerializer(serializer, compressor); if (log.isDebugEnabled()) log.debug("compressor=[{}], serializer=[{}]", compressor.getClass(), serializer.getClass()); byte[] bytes = cs.serialize(company); Company deserialized = cs.deserialize(bytes, Company.class); Assert.assertNotNull(deserialized); Assert.assertEquals(deserialized.getCode(), company.getCode()); Assert.assertEquals(deserialized.getUsers().size(), company.getUsers().size()); } } } @Test public void encryptableSerializeTest() { Collection<ICompressor> compressors = context.getBeansOfType(ICompressor.class).values(); Collection<ISerializer> serializers = context.getBeansOfType(ISerializer.class).values(); Collection<ISymmetricByteEncryptor> encryptors = context.getBeansOfType(ISymmetricByteEncryptor.class).values(); for (ISymmetricByteEncryptor encryptor : encryptors) { for (ISerializer serializer : serializers) { ISerializer cs = new EncryptableSerializer(serializer, encryptor); if (log.isDebugEnabled()) log.debug("encryptor=[{}], serializer=[{}]", encryptor.getClass(), serializer.getClass()); byte[] bytes = cs.serialize(company); Company deserialized = cs.deserialize(bytes, Company.class); Assert.assertNotNull(deserialized); Assert.assertEquals(deserialized.getCode(), company.getCode()); Assert.assertEquals(deserialized.getUsers().size(), company.getUsers().size()); } } } }