/org-lib-usurper/test/org/org/usurper/UsurperSpringTest.java

https://github.com/zepag/org-libs · Java · 456 lines · 333 code · 49 blank · 74 comment · 30 complexity · 2b40c44f6421b6b7f3ca365899e206a9 MD5 · raw file

  1. /*
  2. ORG Usurper is a random value object generator library
  3. Copyright (C) 2007 Pierre-Antoine Grégoire
  4. This library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Lesser General Public
  6. License as published by the Free Software Foundation; either
  7. version 2.1 of the License, or (at your option) any later version.
  8. This library is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. Lesser General Public License for more details.
  12. You should have received a copy of the GNU Lesser General Public
  13. License along with this library; if not, write to the Free Software
  14. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  15. */
  16. package org.org.usurper;
  17. import java.util.List;
  18. import java.util.Map;
  19. import java.util.Set;
  20. import junit.framework.TestCase;
  21. import org.org.usurper.TestCommons.BadSetupException;
  22. import org.org.usurper.TestCommons.NullPropertyException;
  23. import org.org.usurper.dummydomain.DummyService;
  24. import org.org.usurper.dummydomain.DummyVO;
  25. import org.org.usurper.dummydomain.IDummyDAO;
  26. import org.org.usurper.dummydomain.IOtherDummyDAO;
  27. import org.org.usurper.dummydomain.ImmutableDummyVO;
  28. import org.org.usurper.dummydomain.OtherDummyVO;
  29. import org.org.usurper.setup.IUsurperGeneratorSetup;
  30. import org.org.usurper.setup.constants.OnMissingHandlers;
  31. import org.org.usurper.setup.constants.PropertyWritingMechanism;
  32. import org.org.usurper.springframework.UsurperFactoryBean;
  33. import org.org.usurper.springframework.UsurperGeneratorSetupFactoryBean;
  34. import org.org.usurper.springframework.UsurperListFactoryBean;
  35. import org.org.usurper.springframework.UsurperMapFactoryBean;
  36. import org.org.usurper.springframework.UsurperSetFactoryBean;
  37. import org.org.usurper.springframework.UsurperSpringConstants;
  38. import org.springframework.context.ApplicationContext;
  39. import org.springframework.context.support.ClassPathXmlApplicationContext;
  40. /**
  41. * @author pagregoire
  42. */
  43. public class UsurperSpringTest extends TestCase {
  44. /**
  45. * @see junit.framework.TestCase#setUp()
  46. */
  47. @Override
  48. protected void setUp() throws Exception {
  49. super.setUp();
  50. }
  51. public void testGenerateObject() throws Exception {
  52. // CREATE USURPER GENERATOR
  53. UsurperFactoryBean usurperFactoryBean = new UsurperFactoryBean();
  54. usurperFactoryBean.setUsurpedClassName(DummyVO.class.getName());
  55. usurperFactoryBean.afterPropertiesSet();
  56. // GENERATE USURPER
  57. DummyVO object = (DummyVO) usurperFactoryBean.getObject();
  58. // VALIDATE RESULTING OBJECT
  59. try {
  60. TestCommons.auditVO(object);
  61. } catch (NullPropertyException e) {
  62. fail(e.getMessage());
  63. }
  64. }
  65. @SuppressWarnings("unchecked")
  66. public void testGenerateList() throws Exception {
  67. final int listSize = 15;
  68. // CREATE USURPER GENERATOR
  69. UsurperListFactoryBean usurperListFactoryBean = new UsurperListFactoryBean();
  70. usurperListFactoryBean.setUsurpedClassName(DummyVO.class.getName());
  71. usurperListFactoryBean.setCount(listSize);
  72. usurperListFactoryBean.afterPropertiesSet();
  73. // GENERATE USURPER
  74. List list = (List) usurperListFactoryBean.getObject();
  75. assertTrue("Generated List's size should be " + listSize, list.size() == listSize);
  76. // VALIDATE RESULTING OBJECT
  77. try {
  78. for (Object object : list) {
  79. TestCommons.auditVO(object);
  80. }
  81. } catch (NullPropertyException e) {
  82. fail(e.getMessage());
  83. }
  84. }
  85. @SuppressWarnings("unchecked")
  86. public void testGenerateSet() throws Exception {
  87. final int setSize = 15;
  88. // CREATE USURPER GENERATOR
  89. UsurperSetFactoryBean usurperSetFactoryBean = new UsurperSetFactoryBean();
  90. usurperSetFactoryBean.setUsurpedClassName(DummyVO.class.getName());
  91. usurperSetFactoryBean.setCount(setSize);
  92. usurperSetFactoryBean.afterPropertiesSet();
  93. // GENERATE USURPER
  94. Set set = (Set) usurperSetFactoryBean.getObject();
  95. assertTrue("Generated Set's size should be " + setSize, set.size() == setSize);
  96. // VALIDATE RESULTING OBJECT
  97. try {
  98. for (Object object : set) {
  99. TestCommons.auditVO(object);
  100. }
  101. } catch (NullPropertyException e) {
  102. fail(e.getMessage());
  103. }
  104. }
  105. @SuppressWarnings("unchecked")
  106. public void testGenerateMap() throws Exception {
  107. final int mapSize = 15;
  108. // CREATE USURPER GENERATOR
  109. UsurperMapFactoryBean usurperMapFactoryBean = new UsurperMapFactoryBean();
  110. usurperMapFactoryBean.setUsurpedKeyClassName(DummyVO.class.getName());
  111. usurperMapFactoryBean.setUsurpedValueClassName(OtherDummyVO.class.getName());
  112. usurperMapFactoryBean.setCount(mapSize);
  113. usurperMapFactoryBean.afterPropertiesSet();
  114. // GENERATE USURPER
  115. Map map = (Map) usurperMapFactoryBean.getObject();
  116. assertTrue("Generated Map's size should be " + mapSize, map.size() == mapSize);
  117. // VALIDATE RESULTING OBJECT
  118. try {
  119. Set keys = map.keySet();
  120. for (Object key : keys) {
  121. TestCommons.auditVO(key);
  122. TestCommons.auditVO(map.get(key));
  123. }
  124. } catch (NullPropertyException e) {
  125. fail(e.getMessage());
  126. }
  127. }
  128. public void testGenerateObjectWithNamespaceHandler() throws Exception {
  129. // CREATE USURPER GENERATOR through Spring namespace
  130. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-onebean.xml");
  131. // RETRIEVE USURPER
  132. DummyVO object = (DummyVO) applicationContext.getBean("DummyVO");
  133. // VALIDATE RESULTING OBJECT
  134. try {
  135. TestCommons.auditVO(object);
  136. } catch (NullPropertyException e) {
  137. fail(e.getMessage());
  138. }
  139. // RETRIEVE USURPER
  140. object = ((DummyService) applicationContext.getBean("DummyService")).getDummyVO();
  141. // VALIDATE RESULTING OBJECT
  142. try {
  143. TestCommons.auditVO(object);
  144. } catch (NullPropertyException e) {
  145. fail(e.getMessage());
  146. }
  147. }
  148. @SuppressWarnings("unchecked")
  149. public void testGenerateListWithNamespaceHandler() throws Exception {
  150. final int listSize = 15;
  151. // CREATE USURPER GENERATOR through Spring namespace
  152. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-listofbeans.xml");
  153. // RETRIEVE USURPER
  154. List list = (List) applicationContext.getBean("DummyVOs");
  155. assertTrue("Generated List's size should be " + listSize, list.size() == listSize);
  156. // VALIDATE RESULTING OBJECT
  157. try {
  158. for (Object object : list) {
  159. TestCommons.auditVO(object);
  160. }
  161. } catch (NullPropertyException e) {
  162. fail(e.getMessage());
  163. }
  164. }
  165. @SuppressWarnings("unchecked")
  166. public void testGenerateSetWithNamespaceHandler() throws Exception {
  167. final int setSize = 15;
  168. // CREATE USURPER GENERATOR through Spring namespace
  169. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-setofbeans.xml");
  170. // RETRIEVE USURPER
  171. Set set = (Set) applicationContext.getBean("DummyVOs");
  172. assertTrue("Generated Set's size should be " + setSize, set.size() == setSize);
  173. // VALIDATE RESULTING OBJECT
  174. try {
  175. for (Object object : set) {
  176. TestCommons.auditVO(object);
  177. }
  178. } catch (NullPropertyException e) {
  179. fail(e.getMessage());
  180. }
  181. }
  182. @SuppressWarnings("unchecked")
  183. public void testGenerateMapWithNamespaceHandler() throws Exception {
  184. final int mapSize = 15;
  185. // CREATE USURPER GENERATOR through Spring namespace
  186. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-mapofbeans.xml");
  187. // RETRIEVE USURPER
  188. Map map = (Map) applicationContext.getBean("DummyVOs");
  189. assertTrue("Generated Map's size should be " + mapSize, map.size() == mapSize);
  190. // VALIDATE RESULTING OBJECT
  191. try {
  192. Set keys = map.keySet();
  193. for (Object key : keys) {
  194. TestCommons.auditVO(key);
  195. TestCommons.auditVO(map.get(key));
  196. }
  197. } catch (NullPropertyException e) {
  198. fail(e.getMessage());
  199. }
  200. }
  201. @SuppressWarnings("unchecked")
  202. public void testMethodInterceptor() throws Exception {
  203. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-aop.xml");
  204. IDummyDAO dummyDAO = (IDummyDAO) applicationContext.getBean("DummyDAO");
  205. // RETRIEVE USURPER
  206. DummyVO dummyVO = dummyDAO.getVO("whatever, this is not used");
  207. // VALIDATE RESULTING OBJECT
  208. try {
  209. TestCommons.auditVO(dummyVO);
  210. } catch (NullPropertyException e) {
  211. fail(e.getMessage());
  212. }
  213. // RETRIEVE USURPER
  214. List list = dummyDAO.getVOList("whatever, this is not used");
  215. assertTrue("Generated List's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, list.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT);
  216. // VALIDATE RESULTING OBJECT
  217. try {
  218. for (Object object : list) {
  219. TestCommons.auditVO(object);
  220. }
  221. } catch (NullPropertyException e) {
  222. fail(e.getMessage());
  223. }
  224. // RETRIEVE USURPER
  225. Set set = dummyDAO.getVOSet("whatever, this is not used");
  226. assertTrue("Generated Set's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, set.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT);
  227. // VALIDATE RESULTING OBJECT
  228. try {
  229. for (Object object : set) {
  230. TestCommons.auditVO(object);
  231. }
  232. } catch (NullPropertyException e) {
  233. fail(e.getMessage());
  234. }
  235. // RETRIEVE USURPER
  236. Map map = dummyDAO.getVOMap("whatever, this is not used");
  237. assertTrue("Generated Map's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, map.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT);
  238. // VALIDATE RESULTING OBJECT
  239. try {
  240. Set keys = map.keySet();
  241. for (Object key : keys) {
  242. TestCommons.auditVO(key);
  243. TestCommons.auditVO(map.get(key));
  244. }
  245. } catch (NullPropertyException e) {
  246. fail(e.getMessage());
  247. }
  248. }
  249. @SuppressWarnings("unchecked")
  250. public void testMethodInterceptorWithNamespaceHandler() throws Exception {
  251. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-aop.xml");
  252. IDummyDAO dummyDAO = (IDummyDAO) applicationContext.getBean("DummyDAO");
  253. // RETRIEVE USURPER
  254. DummyVO dummyVO = dummyDAO.getVO("whatever, this is not used");
  255. // VALIDATE RESULTING OBJECT
  256. try {
  257. TestCommons.auditVO(dummyVO);
  258. } catch (NullPropertyException e) {
  259. fail(e.getMessage());
  260. }
  261. // RETRIEVE USURPER
  262. List list = dummyDAO.getVOList("whatever, this is not used");
  263. assertTrue("Generated List's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, list.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT);
  264. // VALIDATE RESULTING OBJECT
  265. try {
  266. for (Object object : list) {
  267. TestCommons.auditVO(object);
  268. }
  269. } catch (NullPropertyException e) {
  270. fail(e.getMessage());
  271. }
  272. // RETRIEVE USURPER
  273. Set set = dummyDAO.getVOSet("whatever, this is not used");
  274. assertTrue("Generated Set's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, set.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT);
  275. // VALIDATE RESULTING OBJECT
  276. try {
  277. for (Object object : set) {
  278. TestCommons.auditVO(object);
  279. }
  280. } catch (NullPropertyException e) {
  281. fail(e.getMessage());
  282. }
  283. // RETRIEVE USURPER
  284. Map map = dummyDAO.getVOMap("whatever, this is not used");
  285. assertTrue("Generated Map's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, map.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT);
  286. // VALIDATE RESULTING OBJECT
  287. try {
  288. Set keys = map.keySet();
  289. for (Object key : keys) {
  290. TestCommons.auditVO(key);
  291. TestCommons.auditVO(map.get(key));
  292. }
  293. } catch (NullPropertyException e) {
  294. fail(e.getMessage());
  295. }
  296. }
  297. @SuppressWarnings("unchecked")
  298. public void testMethodInterceptorWithNamespaceHandlerAndImmutables() throws Exception {
  299. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-aop-immutable.xml");
  300. IOtherDummyDAO dummyDAO = (IOtherDummyDAO) applicationContext.getBean("OtherDummyDAO");
  301. // RETRIEVE USURPER
  302. ImmutableDummyVO dummyVO = dummyDAO.getVO("whatever, this is not used");
  303. // VALIDATE RESULTING OBJECT
  304. try {
  305. TestCommons.auditVO(dummyVO);
  306. } catch (NullPropertyException e) {
  307. fail(e.getMessage());
  308. }
  309. // RETRIEVE USURPER
  310. List list = dummyDAO.getVOList("whatever, this is not used");
  311. assertTrue("Generated List's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, list.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT);
  312. // VALIDATE RESULTING OBJECT
  313. try {
  314. for (Object object : list) {
  315. TestCommons.auditVO(object);
  316. }
  317. } catch (NullPropertyException e) {
  318. fail(e.getMessage());
  319. }
  320. // RETRIEVE USURPER
  321. Set set = dummyDAO.getVOSet("whatever, this is not used");
  322. assertTrue("Generated Set's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, set.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT);
  323. // VALIDATE RESULTING OBJECT
  324. try {
  325. for (Object object : set) {
  326. TestCommons.auditVO(object);
  327. }
  328. } catch (NullPropertyException e) {
  329. fail(e.getMessage());
  330. }
  331. // RETRIEVE USURPER
  332. Map map = dummyDAO.getVOMap("whatever, this is not used");
  333. assertTrue("Generated Map's size should be " + UsurperSpringConstants.DEFAULT_ENTRIES_COUNT, map.size() == UsurperSpringConstants.DEFAULT_ENTRIES_COUNT);
  334. // VALIDATE RESULTING OBJECT
  335. try {
  336. Set keys = map.keySet();
  337. for (Object key : keys) {
  338. TestCommons.auditVO(key);
  339. TestCommons.auditVO(map.get(key));
  340. }
  341. } catch (NullPropertyException e) {
  342. fail(e.getMessage());
  343. }
  344. }
  345. @SuppressWarnings("unchecked")
  346. public void testGenerateSetup() throws Exception {
  347. UsurperGeneratorSetupFactoryBean usurperGeneratorSetupFactoryBean = new UsurperGeneratorSetupFactoryBean();
  348. usurperGeneratorSetupFactoryBean.setArrayHandler(TestCommons.ARRAY_HANDLER);
  349. usurperGeneratorSetupFactoryBean.setEnumHandler(TestCommons.ENUM_HANDLER);
  350. usurperGeneratorSetupFactoryBean.setCountCallback(TestCommons.DUMMY_COLLECTION_COUNT_CALLBACK);
  351. usurperGeneratorSetupFactoryBean.onMissingHandlers(OnMissingHandlers.SKIP);
  352. usurperGeneratorSetupFactoryBean.usePropertyWritingMechanism(PropertyWritingMechanism.USE_SETTERS);
  353. usurperGeneratorSetupFactoryBean.setPropertyTypeHandlers(TestCommons.PROPERTY_TYPE_HANDLERS_SET);
  354. usurperGeneratorSetupFactoryBean.setSpecificPropertyHandlers(TestCommons.SPECIFIC_PROPERTY_HANDLERS_SET);
  355. usurperGeneratorSetupFactoryBean.afterPropertiesSet();
  356. IUsurperGeneratorSetup usurperGeneratorSetup = (IUsurperGeneratorSetup) usurperGeneratorSetupFactoryBean.getObject();
  357. try {
  358. TestCommons.auditSetup(usurperGeneratorSetup);
  359. } catch (BadSetupException e) {
  360. fail(e.getMessage());
  361. }
  362. UsurperGeneratorSetupFactoryBean usurperGeneratorSetupFactoryBean2 = new UsurperGeneratorSetupFactoryBean();
  363. usurperGeneratorSetupFactoryBean2.setParentSetup(usurperGeneratorSetup);
  364. usurperGeneratorSetupFactoryBean2.afterPropertiesSet();
  365. IUsurperGeneratorSetup usurperGeneratorSetup2 = (IUsurperGeneratorSetup) usurperGeneratorSetupFactoryBean2.getObject();
  366. try {
  367. TestCommons.auditSetup(usurperGeneratorSetup2);
  368. } catch (BadSetupException e) {
  369. fail(e.getMessage());
  370. }
  371. }
  372. @SuppressWarnings("unchecked")
  373. public void testGenerateSetupWithXMLConfig() throws Exception {
  374. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-setup.xml");
  375. IUsurperGeneratorSetup usurperGeneratorSetup = (IUsurperGeneratorSetup) applicationContext.getBean("usurperGeneratorSetupClassic");
  376. try {
  377. TestCommons.auditSetup(usurperGeneratorSetup);
  378. } catch (BadSetupException e) {
  379. fail(e.getMessage());
  380. }
  381. IUsurperGeneratorSetup usurperGeneratorSetup2 = (IUsurperGeneratorSetup) applicationContext.getBean("usurperGeneratorSetupClassic2");
  382. try {
  383. TestCommons.auditSetup(usurperGeneratorSetup2);
  384. } catch (BadSetupException e) {
  385. fail(e.getMessage());
  386. }
  387. }
  388. @SuppressWarnings("unchecked")
  389. public void testGenerateSetupWithNamespaceHandler() throws Exception {
  390. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-namespace-setup.xml");
  391. IUsurperGeneratorSetup usurperGeneratorSetup = (IUsurperGeneratorSetup) applicationContext.getBean("usurperGeneratorSetupNamespace");
  392. try {
  393. TestCommons.auditSetup(usurperGeneratorSetup);
  394. } catch (BadSetupException e) {
  395. fail(e.getMessage());
  396. }
  397. IUsurperGeneratorSetup usurperGeneratorSetup2 = (IUsurperGeneratorSetup) applicationContext.getBean("usurperGeneratorSetupNamespace2");
  398. try {
  399. TestCommons.auditSetup(usurperGeneratorSetup2);
  400. } catch (BadSetupException e) {
  401. fail(e.getMessage());
  402. }
  403. }
  404. }