PageRenderTime 35ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/property/src/test/java/com/pb/sawdust/util/property/PropertyDeluxeTest.java

https://bitbucket.org/half_the_bird/sawdust_core
Java | 282 lines | 245 code | 30 blank | 7 comment | 4 complexity | c57354b43d3a58d3a33de7dfe8059ac7 MD5 | raw file
  1. package com.pb.sawdust.util.property;
  2. import static com.pb.sawdust.util.Range.*;
  3. import com.pb.sawdust.io.TextFile;
  4. import com.pb.sawdust.util.test.TestBase;
  5. import org.junit.After;
  6. import org.junit.Before;
  7. import org.junit.Test;
  8. import static org.junit.Assert.*;
  9. import java.io.File;
  10. import java.util.*;
  11. /**
  12. * The {@code PropertyDeluxeTest} ...
  13. *
  14. * @author crf <br/>
  15. * Started Oct 5, 2010 8:37:42 PM
  16. */
  17. public class PropertyDeluxeTest extends TestBase {
  18. public static final String NAMESPACE_TYPE_KEY = "namespace type";
  19. protected static enum NamespaceType {
  20. NONE,
  21. ONE_A,
  22. ONE_B,
  23. BOTH_A_B
  24. }
  25. protected PropertyDeluxe propertyDeluxe;
  26. protected Map<String,Object[]> noNameData;
  27. protected Map<String,Object[]> aData;
  28. protected Map<String,Object[]> abData;
  29. protected Map<String,Object[]> bData;
  30. protected Map<String,Object[]> data;
  31. protected List<String> keys;
  32. protected String[] namespace;
  33. public static void main(String ... args) {
  34. TestBase.main();
  35. }
  36. protected Collection<Class<? extends TestBase>> getAdditionalTestClasses() {
  37. List<Map<String,Object>> context = new LinkedList<Map<String,Object>>();
  38. for (NamespaceType type : NamespaceType.values())
  39. context.add(buildContext(NAMESPACE_TYPE_KEY,type));
  40. addClassRunContext(this.getClass(),context);
  41. return super.getAdditionalTestClasses();
  42. }
  43. private Map<String,Object[]> getPropertyData() {
  44. Map<String,Object[]> propertyData = new LinkedHashMap<String,Object[]>();
  45. for (int i : range(12)) {
  46. String k = random.nextAlphaNumericString(random.nextInt(12,27));
  47. Object[] value = null;
  48. switch (i) {
  49. case 0 : value = new Object[] {k,random.nextInt() + ""}; break;
  50. case 1 : value = new Object[] {k,random.nextInt()}; break;
  51. case 2 : value = new Object[] {k,random.nextDouble()}; break;
  52. case 3 : value = new Object[] {k,random.nextBoolean()}; break;
  53. case 4 : value = new Object[] {k,random.nextAlphaNumericString(random.nextInt(3,8))}; break;
  54. case 5 : value = new Object[] {k,random.nextAlphaNumericString(random.nextInt(3,8)),random.nextAlphaNumericString(random.nextInt(3,8)),random.nextAlphaNumericString(random.nextInt(3,8))}; break;
  55. case 6 : value = new Object[] {k,random.nextInt(),random.nextInt(),random.nextInt()}; break;
  56. case 7 : value = new Object[] {k,random.nextInt(),random.nextInt(),random.nextInt(),random.nextInt(),random.nextInt(),random.nextInt(),random.nextInt(),random.nextInt()}; break;
  57. case 8 : value = new Object[] {k,random.nextBoolean(),random.nextInt(),random.nextBoolean(),random.nextInt(),random.nextBoolean(),random.nextInt(),random.nextBoolean(),random.nextInt(),random.nextBoolean(),random.nextInt()}; break;
  58. case 9 : value = new Object[] {k,random.nextBoolean() + "",random.nextDouble() + "",random.nextInt() + "",random.nextAlphaNumericString(8)}; break;
  59. case 10 : value = new Object[] {k,random.nextInt(),random.nextDouble() + "",random.nextInt(),random.nextDouble() + ""}; break;
  60. case 11 : value = new Object[] {k,random.nextInt(),random.nextDouble() + "",random.nextBoolean(),random.nextBoolean(),random.nextDouble() + "",random.nextBoolean(),random.nextInt(),random.nextDouble() + "",random.nextBoolean()}; break;
  61. }
  62. propertyData.put(k,value);
  63. }
  64. return propertyData;
  65. }
  66. protected List<String> getPropertyFileData(Map<String,Object[]> propertyData) {
  67. //properties.length = 12
  68. Iterator<String> kit = propertyData.keySet().iterator();
  69. List<String> lines = new LinkedList<String>();
  70. lines.add(String.format("%s = %s",propertyData.get(kit.next())));
  71. lines.add(String.format("%s(I) = %d",propertyData.get(kit.next())));
  72. lines.add(String.format("%s(D) = %f",propertyData.get(kit.next())));
  73. lines.add(String.format("%s(B) = %b",propertyData.get(kit.next())));
  74. lines.add(String.format("%s(S) = %s",propertyData.get(kit.next())));
  75. lines.add(String.format("%s(L) = [%s,%s,%s]",propertyData.get(kit.next())));
  76. lines.add(String.format("%s(LI) = [%d,%d,%d]",propertyData.get(kit.next())));
  77. lines.add(String.format("%s(LLI) = [[%d,%d,%d],[%d,%d],[%d,%d,%d]]",propertyData.get(kit.next())));
  78. lines.add(String.format("%s(LMBI) = [{%b:%d},{%b:%d,%b:%d},{%b:%d,%b:%d}]",propertyData.get(kit.next())));
  79. lines.add(String.format("%s(M) = {%s:%s,%s:%s}",propertyData.get(kit.next())));
  80. lines.add(String.format("%s(MIS) = {%d:%s,%d:%s}",propertyData.get(kit.next())));
  81. lines.add(String.format("%s(MIMSLB) = {%d:{%s:[%b,%b],%s:[%b]},%d:{%s:[%b]}}",propertyData.get(kit.next())));
  82. return lines;
  83. }
  84. protected String getResourceName() {
  85. return "com.pb.sawdust.util.property.testit";
  86. }
  87. protected File getResourceFile() {
  88. return getTemporaryFile(PropertyDeluxeTest.class,getResourceName() + ".properties");
  89. }
  90. @Before
  91. public void beforeTest() {
  92. noNameData = getPropertyData();
  93. aData = getPropertyData();
  94. bData = getPropertyData();
  95. abData = getPropertyData();
  96. List<String> lines = getPropertyFileData(noNameData);
  97. lines.add("+a");
  98. lines.addAll(getPropertyFileData(aData));
  99. lines.add("+b");
  100. lines.addAll(getPropertyFileData(abData));
  101. lines.add("-a");
  102. lines.addAll(getPropertyFileData(bData));
  103. TextFile tf = new TextFile(getResourceFile(),true);
  104. tf.writeLines(lines);
  105. NamespaceType type = ((NamespaceType) getTestData(NAMESPACE_TYPE_KEY));
  106. switch (type) {
  107. case NONE : {
  108. data = noNameData;
  109. namespace = new String[0];
  110. break;
  111. }
  112. case ONE_A : {
  113. data = aData;
  114. namespace = new String[] {"a"};
  115. break;
  116. }
  117. case ONE_B : {
  118. data = bData;
  119. namespace = new String[] {"b"};
  120. break;
  121. }
  122. case BOTH_A_B : {
  123. data = abData;
  124. namespace = new String[] {"a","b"};
  125. break;
  126. }
  127. }
  128. keys = new ArrayList<String>(data.keySet());
  129. propertyDeluxe = new PropertyDeluxe(getResourceFile().getPath());
  130. }
  131. @After
  132. public void afterTest() {
  133. getResourceFile().delete();
  134. }
  135. @Test
  136. public void testGetProperty() {
  137. assertEquals(data.get(keys.get(0))[1],propertyDeluxe.getProperty(keys.get(0),namespace));
  138. }
  139. @Test
  140. public void testGetIntFromString() {
  141. assertEquals(Integer.parseInt((String) data.get(keys.get(0))[1]),propertyDeluxe.getInt(keys.get(0),namespace));
  142. }
  143. @Test
  144. public void testGetInt() {
  145. assertEquals(data.get(keys.get(1))[1],propertyDeluxe.getInt(keys.get(1),namespace));
  146. }
  147. @Test
  148. public void testGetDouble() {
  149. assertAlmostEquals(data.get(keys.get(2))[1],propertyDeluxe.getDouble(keys.get(2),namespace));
  150. }
  151. @Test
  152. public void testGetIntFromDouble() {
  153. assertEquals(((Double) data.get(keys.get(2))[1]).intValue(),propertyDeluxe.getInt(keys.get(2),namespace));
  154. }
  155. @Test
  156. public void testGetBoolean() {
  157. assertEquals(data.get(keys.get(3))[1],propertyDeluxe.getBoolean(keys.get(3),namespace));
  158. }
  159. @Test
  160. public void testGetString() {
  161. assertEquals(data.get(keys.get(4))[1],propertyDeluxe.getString(keys.get(4),namespace));
  162. }
  163. @Test
  164. public void testGetList1() {
  165. assertEquals(Arrays.asList(Arrays.copyOfRange(data.get(keys.get(5)),1,data.get(keys.get(5)).length)),propertyDeluxe.getList(keys.get(5),namespace));
  166. }
  167. @Test
  168. public void testGetList2() {
  169. assertEquals(Arrays.asList(Arrays.copyOfRange(data.get(keys.get(6)),1,data.get(keys.get(6)).length)),propertyDeluxe.getList(keys.get(6),namespace));
  170. }
  171. @Test
  172. public void testGetList3() {
  173. List<List<Object>> list = new LinkedList<List<Object>>();
  174. Object[] d = data.get(keys.get(7));
  175. List<Object> list1 = new LinkedList<Object>();
  176. List<Object> list2 = new LinkedList<Object>();
  177. List<Object> list3 = new LinkedList<Object>();
  178. list1.add(d[1]);
  179. list1.add(d[2]);
  180. list1.add(d[3]);
  181. list2.add(d[4]);
  182. list2.add(d[5]);
  183. list3.add(d[6]);
  184. list3.add(d[7]);
  185. list3.add(d[8]);
  186. list.add(list1);
  187. list.add(list2);
  188. list.add(list3);
  189. assertEquals(list,propertyDeluxe.getList(keys.get(7),namespace));
  190. }
  191. @Test
  192. public void testGetList4() {
  193. List<Map<Object,Object>> list = new LinkedList<Map<Object,Object>>();
  194. Object[] d = data.get(keys.get(8));
  195. Map<Object,Object> map1 = new HashMap<Object,Object>();
  196. Map<Object,Object> map2 = new HashMap<Object,Object>();
  197. Map<Object,Object> map3 = new HashMap<Object,Object>();
  198. map1.put(d[1],d[2]);
  199. map2.put(d[3],d[4]);
  200. map2.put(d[5],d[6]);
  201. map3.put(d[7],d[8]);
  202. map3.put(d[9],d[10]);
  203. list.add(map1);
  204. list.add(map2);
  205. list.add(map3);
  206. assertEquals(list,propertyDeluxe.getList(keys.get(8),namespace));
  207. }
  208. @Test
  209. public void testGetMap1() {
  210. Map<Object,Object> map = new HashMap<Object,Object>();
  211. Object[] d = data.get(keys.get(9));
  212. map.put(d[1],d[2]);
  213. map.put(d[3],d[4]);
  214. assertEquals(map,propertyDeluxe.getMap(keys.get(9),namespace));
  215. }
  216. @Test
  217. public void testGetMap2() {
  218. Map<Object,Object> map = new HashMap<Object,Object>();
  219. Object[] d = data.get(keys.get(10));
  220. map.put(d[1],d[2]);
  221. map.put(d[3],d[4]);
  222. assertEquals(map,propertyDeluxe.getMap(keys.get(10),namespace));
  223. }
  224. @Test
  225. public void testGetMap3() {
  226. Map<Object,Object> map = new HashMap<Object,Object>();
  227. Object[] d = data.get(keys.get(10));
  228. map.put(d[1],d[2]);
  229. map.put(d[3],d[4]);
  230. assertEquals(map,propertyDeluxe.getMap(keys.get(10),namespace));
  231. }
  232. @Test
  233. public void testGetMap4() {
  234. Map<Object,Map<Object,List<Object>>> map = new HashMap<Object,Map<Object,List<Object>>>();
  235. Object[] d = data.get(keys.get(11));
  236. List<Object> list1 = new LinkedList<Object>();
  237. List<Object> list2 = new LinkedList<Object>();
  238. List<Object> list3 = new LinkedList<Object>();
  239. Map<Object,List<Object>> map1 = new HashMap<Object,List<Object>>();
  240. Map<Object,List<Object>> map2 = new HashMap<Object,List<Object>>();
  241. map.put(d[1],map1);
  242. map1.put(d[2],list1);
  243. list1.add(d[3]);
  244. list1.add(d[4]);
  245. map1.put(d[5],list2);
  246. list2.add(d[6]);
  247. map.put(d[7],map2);
  248. map2.put(d[8],list3);
  249. list3.add(d[9]);
  250. assertEquals(map,propertyDeluxe.getMap(keys.get(11),namespace));
  251. }
  252. }