facets 1.8.49 → 1.8.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. data/PROJECT +4 -1
  2. data/Rakefile +25 -48
  3. data/VERSION +1 -1
  4. data/doc/AUTHORS +1 -0
  5. data/doc/CHANGES +6 -0
  6. data/lib/facets/core/kernel/tap.rb +33 -3
  7. data/lib/facets/more/command.rb +507 -271
  8. metadata +2 -548
  9. data/test/lib/facets/core/array/test_at_rand.rb +0 -34
  10. data/test/lib/facets/core/array/test_delete_unless.rb +0 -28
  11. data/test/lib/facets/core/array/test_delete_values.rb +0 -28
  12. data/test/lib/facets/core/array/test_delete_values_at.rb +0 -31
  13. data/test/lib/facets/core/array/test_first.rb +0 -46
  14. data/test/lib/facets/core/array/test_head.rb +0 -42
  15. data/test/lib/facets/core/array/test_last_index.rb +0 -26
  16. data/test/lib/facets/core/array/test_merge.rb +0 -35
  17. data/test/lib/facets/core/array/test_mid.rb +0 -33
  18. data/test/lib/facets/core/array/test_middle.rb +0 -29
  19. data/test/lib/facets/core/array/test_op_div.rb +0 -27
  20. data/test/lib/facets/core/array/test_op_fetch.rb +0 -35
  21. data/test/lib/facets/core/array/test_pad.rb +0 -48
  22. data/test/lib/facets/core/array/test_pick.rb +0 -40
  23. data/test/lib/facets/core/array/test_pos.rb +0 -28
  24. data/test/lib/facets/core/array/test_pot.rb +0 -28
  25. data/test/lib/facets/core/array/test_pull.rb +0 -28
  26. data/test/lib/facets/core/array/test_rand_index.rb +0 -29
  27. data/test/lib/facets/core/array/test_rand_subset.rb +0 -29
  28. data/test/lib/facets/core/array/test_range.rb +0 -32
  29. data/test/lib/facets/core/array/test_rotate.rb +0 -36
  30. data/test/lib/facets/core/array/test_select.rb +0 -28
  31. data/test/lib/facets/core/array/test_shuffle.rb +0 -35
  32. data/test/lib/facets/core/array/test_thru.rb +0 -27
  33. data/test/lib/facets/core/array/test_to_b.rb +0 -27
  34. data/test/lib/facets/core/array/test_to_h.rb +0 -33
  35. data/test/lib/facets/core/array/test_to_hash.rb +0 -27
  36. data/test/lib/facets/core/binding/self/test_of_caller.rb +0 -35
  37. data/test/lib/facets/core/binding/test___LINE__.rb +0 -43
  38. data/test/lib/facets/core/binding/test_call_stack.rb +0 -34
  39. data/test/lib/facets/core/binding/test_called.rb +0 -30
  40. data/test/lib/facets/core/binding/test_caller.rb +0 -35
  41. data/test/lib/facets/core/binding/test_defined.rb +0 -34
  42. data/test/lib/facets/core/binding/test_eval.rb +0 -34
  43. data/test/lib/facets/core/binding/test_local_variables.rb +0 -34
  44. data/test/lib/facets/core/binding/test_method_name.rb +0 -34
  45. data/test/lib/facets/core/binding/test_op_fetch.rb +0 -34
  46. data/test/lib/facets/core/binding/test_op_store.rb +0 -35
  47. data/test/lib/facets/core/binding/test_self.rb +0 -34
  48. data/test/lib/facets/core/class/test_cattr.rb +0 -63
  49. data/test/lib/facets/core/class/test_descendents.rb +0 -30
  50. data/test/lib/facets/core/class/test_method_name.rb +0 -26
  51. data/test/lib/facets/core/class/test_remove_descendents.rb +0 -32
  52. data/test/lib/facets/core/class/test_unix_path.rb +0 -26
  53. data/test/lib/facets/core/comparable/test_at_least.rb +0 -34
  54. data/test/lib/facets/core/comparable/test_clip.rb +0 -44
  55. data/test/lib/facets/core/comparable/test_cmp.rb +0 -28
  56. data/test/lib/facets/core/continuation/self/test_create.rb +0 -26
  57. data/test/lib/facets/core/date/test_days_in_month.rb +0 -30
  58. data/test/lib/facets/core/date/test_days_of_month.rb +0 -30
  59. data/test/lib/facets/core/date/test_stamp.rb +0 -38
  60. data/test/lib/facets/core/date/test_to_date.rb +0 -30
  61. data/test/lib/facets/core/date/test_to_s.rb +0 -30
  62. data/test/lib/facets/core/date/test_to_time.rb +0 -30
  63. data/test/lib/facets/core/dir/self/test_ancestor.rb +0 -26
  64. data/test/lib/facets/core/dir/self/test_ascend.rb +0 -41
  65. data/test/lib/facets/core/enumerable/self/test_combinations.rb +0 -46
  66. data/test/lib/facets/core/enumerable/test_cart.rb +0 -49
  67. data/test/lib/facets/core/enumerable/test_collect_with_index.rb +0 -27
  68. data/test/lib/facets/core/enumerable/test_commonality.rb +0 -31
  69. data/test/lib/facets/core/enumerable/test_compact_collect.rb +0 -27
  70. data/test/lib/facets/core/enumerable/test_count.rb +0 -38
  71. data/test/lib/facets/core/enumerable/test_each_by.rb +0 -71
  72. data/test/lib/facets/core/enumerable/test_each_combination.rb +0 -29
  73. data/test/lib/facets/core/enumerable/test_each_pair.rb +0 -29
  74. data/test/lib/facets/core/enumerable/test_each_slice.rb +0 -57
  75. data/test/lib/facets/core/enumerable/test_each_unique_pair.rb +0 -29
  76. data/test/lib/facets/core/enumerable/test_eachn.rb +0 -34
  77. data/test/lib/facets/core/enumerable/test_elementwise.rb +0 -40
  78. data/test/lib/facets/core/enumerable/test_entropy.rb +0 -26
  79. data/test/lib/facets/core/enumerable/test_every.rb +0 -35
  80. data/test/lib/facets/core/enumerable/test_ew.rb +0 -31
  81. data/test/lib/facets/core/enumerable/test_filter_collect.rb +0 -31
  82. data/test/lib/facets/core/enumerable/test_find_collisions.rb +0 -30
  83. data/test/lib/facets/core/enumerable/test_frequency.rb +0 -27
  84. data/test/lib/facets/core/enumerable/test_graph.rb +0 -30
  85. data/test/lib/facets/core/enumerable/test_ideal_entropy.rb +0 -27
  86. data/test/lib/facets/core/enumerable/test_none.rb +0 -33
  87. data/test/lib/facets/core/enumerable/test_occur.rb +0 -30
  88. data/test/lib/facets/core/enumerable/test_one.rb +0 -35
  89. data/test/lib/facets/core/enumerable/test_op_pow.rb +0 -27
  90. data/test/lib/facets/core/enumerable/test_op_tilde_self.rb +0 -40
  91. data/test/lib/facets/core/enumerable/test_partition_by.rb +0 -31
  92. data/test/lib/facets/core/enumerable/test_permutation.rb +0 -29
  93. data/test/lib/facets/core/enumerable/test_probability.rb +0 -27
  94. data/test/lib/facets/core/enumerable/test_to_h.rb +0 -27
  95. data/test/lib/facets/core/enumerable/test_uniq_by.rb +0 -28
  96. data/test/lib/facets/core/file/self/test_create.rb +0 -44
  97. data/test/lib/facets/core/file/self/test_open_as_string.rb +0 -50
  98. data/test/lib/facets/core/file/self/test_read_list.rb +0 -40
  99. data/test/lib/facets/core/file/self/test_sanitize.rb +0 -46
  100. data/test/lib/facets/core/file/self/test_split_all.rb +0 -27
  101. data/test/lib/facets/core/float/test_round_at.rb +0 -46
  102. data/test/lib/facets/core/float/test_round_to.rb +0 -46
  103. data/test/lib/facets/core/hash/self/test_zipnew.rb +0 -28
  104. data/test/lib/facets/core/hash/test_alias.rb +0 -31
  105. data/test/lib/facets/core/hash/test_assert_has_keys.rb +0 -27
  106. data/test/lib/facets/core/hash/test_assert_has_only_keys.rb +0 -27
  107. data/test/lib/facets/core/hash/test_at.rb +0 -28
  108. data/test/lib/facets/core/hash/test_collate.rb +0 -35
  109. data/test/lib/facets/core/hash/test_each_with_index.rb +0 -29
  110. data/test/lib/facets/core/hash/test_each_with_key.rb +0 -29
  111. data/test/lib/facets/core/hash/test_graph.rb +0 -28
  112. data/test/lib/facets/core/hash/test_has_keys.rb +0 -27
  113. data/test/lib/facets/core/hash/test_has_only_keys.rb +0 -27
  114. data/test/lib/facets/core/hash/test_inverse.rb +0 -30
  115. data/test/lib/facets/core/hash/test_normalize_keys.rb +0 -34
  116. data/test/lib/facets/core/hash/test_op_fetch.rb +0 -111
  117. data/test/lib/facets/core/hash/test_op_lshift.rb +0 -29
  118. data/test/lib/facets/core/hash/test_rand_key.rb +0 -27
  119. data/test/lib/facets/core/hash/test_rand_pair.rb +0 -27
  120. data/test/lib/facets/core/hash/test_rand_value.rb +0 -27
  121. data/test/lib/facets/core/hash/test_rekey.rb +0 -52
  122. data/test/lib/facets/core/hash/test_replace_each.rb +0 -29
  123. data/test/lib/facets/core/hash/test_shuffle.rb +0 -32
  124. data/test/lib/facets/core/hash/test_slice.rb +0 -27
  125. data/test/lib/facets/core/hash/test_stringify_keys.rb +0 -34
  126. data/test/lib/facets/core/hash/test_swap.rb +0 -27
  127. data/test/lib/facets/core/hash/test_swapkey.rb +0 -29
  128. data/test/lib/facets/core/hash/test_symbolize_keys.rb +0 -34
  129. data/test/lib/facets/core/hash/test_to_h.rb +0 -27
  130. data/test/lib/facets/core/hash/test_to_ostruct.rb +0 -30
  131. data/test/lib/facets/core/hash/test_to_ostruct_recurse.rb +0 -44
  132. data/test/lib/facets/core/hash/test_traverse.rb +0 -37
  133. data/test/lib/facets/core/hash/test_update_each.rb +0 -29
  134. data/test/lib/facets/core/hash/test_update_keys.rb +0 -28
  135. data/test/lib/facets/core/hash/test_update_values.rb +0 -28
  136. data/test/lib/facets/core/hash/test_weave.rb +0 -29
  137. data/test/lib/facets/core/integer/test_factorial.rb +0 -30
  138. data/test/lib/facets/core/integer/test_multiple.rb +0 -43
  139. data/test/lib/facets/core/integer/test_of.rb +0 -28
  140. data/test/lib/facets/core/integer/test_ordinal.rb +0 -29
  141. data/test/lib/facets/core/integer/test_times_collect.rb +0 -28
  142. data/test/lib/facets/core/kernel/test___class__.rb +0 -26
  143. data/test/lib/facets/core/kernel/test_as.rb +0 -42
  144. data/test/lib/facets/core/kernel/test_assign_from.rb +0 -31
  145. data/test/lib/facets/core/kernel/test_assign_with.rb +0 -31
  146. data/test/lib/facets/core/kernel/test_bool.rb +0 -41
  147. data/test/lib/facets/core/kernel/test_bug.rb +0 -26
  148. data/test/lib/facets/core/kernel/test_call_stack.rb +0 -26
  149. data/test/lib/facets/core/kernel/test_called.rb +0 -26
  150. data/test/lib/facets/core/kernel/test_callee.rb +0 -26
  151. data/test/lib/facets/core/kernel/test_constant.rb +0 -33
  152. data/test/lib/facets/core/kernel/test_copy.rb +0 -40
  153. data/test/lib/facets/core/kernel/test_deep_copy.rb +0 -40
  154. data/test/lib/facets/core/kernel/test_demo.rb +0 -28
  155. data/test/lib/facets/core/kernel/test_fn.rb +0 -26
  156. data/test/lib/facets/core/kernel/test_get_by_id.rb +0 -28
  157. data/test/lib/facets/core/kernel/test_here.rb +0 -26
  158. data/test/lib/facets/core/kernel/test_in.rb +0 -27
  159. data/test/lib/facets/core/kernel/test_instance_class.rb +0 -27
  160. data/test/lib/facets/core/kernel/test_instance_exec.rb +0 -58
  161. data/test/lib/facets/core/kernel/test_maybe.rb +0 -26
  162. data/test/lib/facets/core/kernel/test_meta_class.rb +0 -27
  163. data/test/lib/facets/core/kernel/test_metaclass.rb +0 -27
  164. data/test/lib/facets/core/kernel/test_method.rb +0 -32
  165. data/test/lib/facets/core/kernel/test_methods.rb +0 -50
  166. data/test/lib/facets/core/kernel/test_new.rb +0 -30
  167. data/test/lib/facets/core/kernel/test_object_class.rb +0 -26
  168. data/test/lib/facets/core/kernel/test_object_hexid.rb +0 -27
  169. data/test/lib/facets/core/kernel/test_qua_class.rb +0 -27
  170. data/test/lib/facets/core/kernel/test_require_all.rb +0 -26
  171. data/test/lib/facets/core/kernel/test_require_esc.rb +0 -27
  172. data/test/lib/facets/core/kernel/test_resc.rb +0 -27
  173. data/test/lib/facets/core/kernel/test_send_as.rb +0 -26
  174. data/test/lib/facets/core/kernel/test_set_from.rb +0 -33
  175. data/test/lib/facets/core/kernel/test_set_with.rb +0 -42
  176. data/test/lib/facets/core/kernel/test_silently.rb +0 -28
  177. data/test/lib/facets/core/kernel/test_singleton.rb +0 -40
  178. data/test/lib/facets/core/kernel/test_singleton_class.rb +0 -27
  179. data/test/lib/facets/core/kernel/test_super_at.rb +0 -30
  180. data/test/lib/facets/core/kernel/test_supermethod.rb +0 -33
  181. data/test/lib/facets/core/kernel/test_this.rb +0 -26
  182. data/test/lib/facets/core/kernel/test_to_b.rb +0 -28
  183. data/test/lib/facets/core/kernel/test_to_bool.rb +0 -28
  184. data/test/lib/facets/core/kernel/test_to_data.rb +0 -61
  185. data/test/lib/facets/core/kernel/test_uri.rb +0 -30
  186. data/test/lib/facets/core/kernel/test_val.rb +0 -43
  187. data/test/lib/facets/core/kernel/test_with.rb +0 -30
  188. data/test/lib/facets/core/kernel/test_with_accessor.rb +0 -51
  189. data/test/lib/facets/core/matchdata/test_match.rb +0 -29
  190. data/test/lib/facets/core/matchdata/test_matchtree.rb +0 -37
  191. data/test/lib/facets/core/module/self/test_op_add.rb +0 -50
  192. data/test/lib/facets/core/module/test_abstract.rb +0 -36
  193. data/test/lib/facets/core/module/test_alias_method_chain.rb +0 -46
  194. data/test/lib/facets/core/module/test_alias_module_function.rb +0 -34
  195. data/test/lib/facets/core/module/test_ancestor.rb +0 -26
  196. data/test/lib/facets/core/module/test_attr_tester.rb +0 -39
  197. data/test/lib/facets/core/module/test_basename.rb +0 -26
  198. data/test/lib/facets/core/module/test_by_name.rb +0 -29
  199. data/test/lib/facets/core/module/test_class_extension.rb +0 -70
  200. data/test/lib/facets/core/module/test_clone_using.rb +0 -55
  201. data/test/lib/facets/core/module/test_dirname.rb +0 -26
  202. data/test/lib/facets/core/module/test_equate_on.rb +0 -37
  203. data/test/lib/facets/core/module/test_include_as.rb +0 -45
  204. data/test/lib/facets/core/module/test_initializer.rb +0 -32
  205. data/test/lib/facets/core/module/test_instance_methods.rb +0 -59
  206. data/test/lib/facets/core/module/test_integrate.rb +0 -35
  207. data/test/lib/facets/core/module/test_memoize.rb +0 -50
  208. data/test/lib/facets/core/module/test_modspace.rb +0 -27
  209. data/test/lib/facets/core/module/test_namespace.rb +0 -66
  210. data/test/lib/facets/core/module/test_nesting.rb +0 -36
  211. data/test/lib/facets/core/module/test_new.rb +0 -34
  212. data/test/lib/facets/core/module/test_nodef.rb +0 -30
  213. data/test/lib/facets/core/module/test_on_included.rb +0 -36
  214. data/test/lib/facets/core/module/test_redef.rb +0 -30
  215. data/test/lib/facets/core/module/test_redefine_method.rb +0 -30
  216. data/test/lib/facets/core/module/test_redirect.rb +0 -30
  217. data/test/lib/facets/core/module/test_redirect_method.rb +0 -30
  218. data/test/lib/facets/core/module/test_remove.rb +0 -30
  219. data/test/lib/facets/core/module/test_rename.rb +0 -31
  220. data/test/lib/facets/core/module/test_rename_method.rb +0 -31
  221. data/test/lib/facets/core/module/test_revisal.rb +0 -35
  222. data/test/lib/facets/core/module/test_shadow_method.rb +0 -30
  223. data/test/lib/facets/core/module/test_sort_on.rb +0 -42
  224. data/test/lib/facets/core/module/test_this.rb +0 -31
  225. data/test/lib/facets/core/module/test_wrap.rb +0 -30
  226. data/test/lib/facets/core/module/test_wrap_method.rb +0 -30
  227. data/test/lib/facets/core/nilclass/test_blank.rb +0 -26
  228. data/test/lib/facets/core/nilclass/test_empty.rb +0 -26
  229. data/test/lib/facets/core/nilclass/test_include.rb +0 -26
  230. data/test/lib/facets/core/nilclass/test_op_fetch.rb +0 -28
  231. data/test/lib/facets/core/nilclass/test_size.rb +0 -30
  232. data/test/lib/facets/core/nilclass/test_to_h.rb +0 -26
  233. data/test/lib/facets/core/numeric/test_approx.rb +0 -29
  234. data/test/lib/facets/core/numeric/test_ceil_multiple.rb +0 -31
  235. data/test/lib/facets/core/numeric/test_distance.rb +0 -28
  236. data/test/lib/facets/core/numeric/test_succ.rb +0 -40
  237. data/test/lib/facets/core/numeric/test_to_b.rb +0 -27
  238. data/test/lib/facets/core/ostruct/test___update__.rb +0 -45
  239. data/test/lib/facets/core/ostruct/test_instance_delegate.rb +0 -36
  240. data/test/lib/facets/core/ostruct/test_op_fetch.rb +0 -33
  241. data/test/lib/facets/core/proc/test_compose.rb +0 -29
  242. data/test/lib/facets/core/proc/test_op_mul.rb +0 -34
  243. data/test/lib/facets/core/proc/test_to_method.rb +0 -44
  244. data/test/lib/facets/core/range/test_to_r.rb +0 -27
  245. data/test/lib/facets/core/range/test_to_range.rb +0 -27
  246. data/test/lib/facets/core/range/test_umbrella.rb +0 -34
  247. data/test/lib/facets/core/range/test_within.rb +0 -29
  248. data/test/lib/facets/core/regexp/test_arity.rb +0 -33
  249. data/test/lib/facets/core/regexp/test_to_re.rb +0 -27
  250. data/test/lib/facets/core/regexp/test_to_regexp.rb +0 -27
  251. data/test/lib/facets/core/string/self/test_interpolate.rb +0 -27
  252. data/test/lib/facets/core/string/self/test_patterns.rb +0 -28
  253. data/test/lib/facets/core/string/self/test_rand_letter.rb +0 -26
  254. data/test/lib/facets/core/string/test_align_center.rb +0 -34
  255. data/test/lib/facets/core/string/test_at_rand.rb +0 -35
  256. data/test/lib/facets/core/string/test_basename.rb +0 -41
  257. data/test/lib/facets/core/string/test_blank.rb +0 -27
  258. data/test/lib/facets/core/string/test_bracket.rb +0 -49
  259. data/test/lib/facets/core/string/test_bytes.rb +0 -25
  260. data/test/lib/facets/core/string/test_camelcase.rb +0 -39
  261. data/test/lib/facets/core/string/test_camelize.rb +0 -26
  262. data/test/lib/facets/core/string/test_capitalize_all.rb +0 -26
  263. data/test/lib/facets/core/string/test_capitalized.rb +0 -26
  264. data/test/lib/facets/core/string/test_chars.rb +0 -27
  265. data/test/lib/facets/core/string/test_cleave.rb +0 -43
  266. data/test/lib/facets/core/string/test_cmp.rb +0 -30
  267. data/test/lib/facets/core/string/test_demodulize.rb +0 -38
  268. data/test/lib/facets/core/string/test_divide.rb +0 -29
  269. data/test/lib/facets/core/string/test_downcase.rb +0 -26
  270. data/test/lib/facets/core/string/test_dresner.rb +0 -32
  271. data/test/lib/facets/core/string/test_each_char.rb +0 -29
  272. data/test/lib/facets/core/string/test_each_word.rb +0 -29
  273. data/test/lib/facets/core/string/test_first.rb +0 -43
  274. data/test/lib/facets/core/string/test_fold.rb +0 -34
  275. data/test/lib/facets/core/string/test_humanize.rb +0 -26
  276. data/test/lib/facets/core/string/test_indent.rb +0 -40
  277. data/test/lib/facets/core/string/test_index_all.rb +0 -26
  278. data/test/lib/facets/core/string/test_last.rb +0 -46
  279. data/test/lib/facets/core/string/test_line_wrap.rb +0 -27
  280. data/test/lib/facets/core/string/test_lines.rb +0 -26
  281. data/test/lib/facets/core/string/test_lowercase.rb +0 -26
  282. data/test/lib/facets/core/string/test_margin.rb +0 -117
  283. data/test/lib/facets/core/string/test_methodize.rb +0 -27
  284. data/test/lib/facets/core/string/test_modulize.rb +0 -29
  285. data/test/lib/facets/core/string/test_mscan.rb +0 -30
  286. data/test/lib/facets/core/string/test_natcmp.rb +0 -30
  287. data/test/lib/facets/core/string/test_nchar.rb +0 -29
  288. data/test/lib/facets/core/string/test_pathize.rb +0 -29
  289. data/test/lib/facets/core/string/test_pop.rb +0 -47
  290. data/test/lib/facets/core/string/test_pot.rb +0 -39
  291. data/test/lib/facets/core/string/test_push.rb +0 -40
  292. data/test/lib/facets/core/string/test_quote.rb +0 -49
  293. data/test/lib/facets/core/string/test_rand_byte.rb +0 -35
  294. data/test/lib/facets/core/string/test_rand_index.rb +0 -26
  295. data/test/lib/facets/core/string/test_range.rb +0 -27
  296. data/test/lib/facets/core/string/test_range_all.rb +0 -27
  297. data/test/lib/facets/core/string/test_range_of_line.rb +0 -28
  298. data/test/lib/facets/core/string/test_regesc.rb +0 -28
  299. data/test/lib/facets/core/string/test_shatter.rb +0 -29
  300. data/test/lib/facets/core/string/test_shift.rb +0 -40
  301. data/test/lib/facets/core/string/test_shuffle.rb +0 -27
  302. data/test/lib/facets/core/string/test_similarity.rb +0 -26
  303. data/test/lib/facets/core/string/test_singular.rb +0 -86
  304. data/test/lib/facets/core/string/test_soundex.rb +0 -41
  305. data/test/lib/facets/core/string/test_succ.rb +0 -29
  306. data/test/lib/facets/core/string/test_to_a.rb +0 -27
  307. data/test/lib/facets/core/string/test_to_b.rb +0 -41
  308. data/test/lib/facets/core/string/test_to_const.rb +0 -28
  309. data/test/lib/facets/core/string/test_to_date.rb +0 -30
  310. data/test/lib/facets/core/string/test_to_proc.rb +0 -33
  311. data/test/lib/facets/core/string/test_to_re.rb +0 -28
  312. data/test/lib/facets/core/string/test_to_time.rb +0 -30
  313. data/test/lib/facets/core/string/test_unix_crypt.rb +0 -30
  314. data/test/lib/facets/core/string/test_unpack.rb +0 -34
  315. data/test/lib/facets/core/string/test_unshift.rb +0 -39
  316. data/test/lib/facets/core/string/test_upcase.rb +0 -30
  317. data/test/lib/facets/core/string/test_whitespace.rb +0 -27
  318. data/test/lib/facets/core/string/test_word_filter.rb +0 -34
  319. data/test/lib/facets/core/string/test_word_wrap.rb +0 -51
  320. data/test/lib/facets/core/string/test_words.rb +0 -37
  321. data/test/lib/facets/core/symbol/test_camelcase.rb +0 -26
  322. data/test/lib/facets/core/symbol/test_camelize.rb +0 -27
  323. data/test/lib/facets/core/symbol/test_capitalize.rb +0 -26
  324. data/test/lib/facets/core/symbol/test_capitalized.rb +0 -27
  325. data/test/lib/facets/core/symbol/test_downcase.rb +0 -27
  326. data/test/lib/facets/core/symbol/test_not.rb +0 -29
  327. data/test/lib/facets/core/symbol/test_pad.rb +0 -27
  328. data/test/lib/facets/core/symbol/test_succ.rb +0 -28
  329. data/test/lib/facets/core/symbol/test_to_const.rb +0 -28
  330. data/test/lib/facets/core/symbol/test_to_proc.rb +0 -33
  331. data/test/lib/facets/core/symbol/test_to_str.rb +0 -28
  332. data/test/lib/facets/core/symbol/test_underscore.rb +0 -26
  333. data/test/lib/facets/core/symbol/test_upcase.rb +0 -27
  334. data/test/lib/facets/core/time/test_change.rb +0 -33
  335. data/test/lib/facets/core/time/test_elapse.rb +0 -27
  336. data/test/lib/facets/core/time/test_stamp.rb +0 -39
  337. data/test/lib/facets/core/time/test_to_date.rb +0 -31
  338. data/test/lib/facets/core/time/test_to_s.rb +0 -31
  339. data/test/lib/facets/core/time/test_to_time.rb +0 -31
  340. data/test/lib/facets/more/test_ann.rb +0 -112
  341. data/test/lib/facets/more/test_ann_attr.rb +0 -39
  342. data/test/lib/facets/more/test_ansicode.rb +0 -36
  343. data/test/lib/facets/more/test_arguments.rb +0 -83
  344. data/test/lib/facets/more/test_association.rb +0 -51
  345. data/test/lib/facets/more/test_autoarray.rb +0 -32
  346. data/test/lib/facets/more/test_basicobject.rb +0 -67
  347. data/test/lib/facets/more/test_bbcode.rb +0 -34
  348. data/test/lib/facets/more/test_binaryreader.rb +0 -64
  349. data/test/lib/facets/more/test_bitmask.rb +0 -47
  350. data/test/lib/facets/more/test_buildingblock.rb +0 -48
  351. data/test/lib/facets/more/test_bytes.rb +0 -84
  352. data/test/lib/facets/more/test_classmethods.rb +0 -69
  353. data/test/lib/facets/more/test_command.rb +0 -69
  354. data/test/lib/facets/more/test_coroutine.rb +0 -60
  355. data/test/lib/facets/more/test_crypt.rb +0 -46
  356. data/test/lib/facets/more/test_cut.rb +0 -198
  357. data/test/lib/facets/more/test_dependency.rb +0 -82
  358. data/test/lib/facets/more/test_dictionary.rb +0 -107
  359. data/test/lib/facets/more/test_elementor.rb +0 -52
  360. data/test/lib/facets/more/test_enumerablepass.rb +0 -86
  361. data/test/lib/facets/more/test_floatstring.rb +0 -36
  362. data/test/lib/facets/more/test_functor.rb +0 -39
  363. data/test/lib/facets/more/test_htmlbuilder.rb +0 -38
  364. data/test/lib/facets/more/test_htmlfilter.rb +0 -86
  365. data/test/lib/facets/more/test_infinity.rb +0 -50
  366. data/test/lib/facets/more/test_inheritor.rb +0 -155
  367. data/test/lib/facets/more/test_instance_intercept.rb +0 -50
  368. data/test/lib/facets/more/test_interval.rb +0 -119
  369. data/test/lib/facets/more/test_json.rb +0 -232
  370. data/test/lib/facets/more/test_linkedlist.rb +0 -53
  371. data/test/lib/facets/more/test_lisp.rb +0 -47
  372. data/test/lib/facets/more/test_lisp_format.rb +0 -37
  373. data/test/lib/facets/more/test_lrucache.rb +0 -25
  374. data/test/lib/facets/more/test_mathconstants.rb +0 -18
  375. data/test/lib/facets/more/test_methodfilter.rb +0 -45
  376. data/test/lib/facets/more/test_methodprobe.rb +0 -53
  377. data/test/lib/facets/more/test_multipliers.rb +0 -114
  378. data/test/lib/facets/more/test_multiton.rb +0 -199
  379. data/test/lib/facets/more/test_nackclass.rb +0 -45
  380. data/test/lib/facets/more/test_nilcomparable.rb +0 -47
  381. data/test/lib/facets/more/test_opencascade.rb +0 -75
  382. data/test/lib/facets/more/test_openobject.rb +0 -126
  383. data/test/lib/facets/more/test_overload.rb +0 -54
  384. data/test/lib/facets/more/test_paramix.rb +0 -100
  385. data/test/lib/facets/more/test_pqueue.rb +0 -39
  386. data/test/lib/facets/more/test_preinitialize.rb +0 -49
  387. data/test/lib/facets/more/test_promoteself.rb +0 -45
  388. data/test/lib/facets/more/test_recorder.rb +0 -44
  389. data/test/lib/facets/more/test_snapshot.rb +0 -34
  390. data/test/lib/facets/more/test_statichash.rb +0 -31
  391. data/test/lib/facets/more/test_syncarray.rb +0 -28
  392. data/test/lib/facets/more/test_synchash.rb +0 -28
  393. data/test/lib/facets/more/test_tagiterator.rb +0 -93
  394. data/test/lib/facets/more/test_timer.rb +0 -66
  395. data/test/lib/facets/more/test_times.rb +0 -103
  396. data/test/lib/facets/more/test_tuple.rb +0 -64
  397. data/test/lib/facets/more/test_typecast.rb +0 -68
  398. data/test/lib/facets/more/test_uninheritable.rb +0 -42
  399. data/test/lib/facets/more/test_units.rb +0 -111
  400. data/test/lib/facets/more/test_xmlbuilder.rb +0 -54
  401. data/test/lib/facets/more/test_xmlhelper.rb +0 -40
  402. data/test/lib/facets/more/test_xoxo.rb +0 -288
  403. data/test/lib/facets/more/test_yamlstruct.rb +0 -37
  404. data/test/lib/facets/yore/enumerable/test_cross.rb +0 -44
  405. data/test/lib/facets/yore/kernel/test_require_facet.rb +0 -27
  406. data/test/lib/facets/yore/module/test_namespace.rb +0 -33
  407. data/test/lib/facets/yore/test_annattr.rb +0 -39
  408. data/test/lib/facets/yore/test_annotation.rb +0 -318
  409. data/work/README +0 -42
  410. data/work/TODO +0 -73
  411. data/work/bin/minitar +0 -3
  412. data/work/bin/minitar.rb +0 -814
  413. data/work/core/array/at_rand.rb +0 -95
  414. data/work/core/array/each_slice.rb +0 -23
  415. data/work/core/array/pick_values.rb +0 -32
  416. data/work/core/array/rand_indexes.rb +0 -33
  417. data/work/core/binding/class.rb +0 -11
  418. data/work/core/binding/delegate-binding.rb +0 -19
  419. data/work/core/binding/delegate.rb +0 -15
  420. data/work/core/binding/proc.rb +0 -6
  421. data/work/core/class/to_module.rb +0 -3
  422. data/work/core/enumerable/op_fetch.rb +0 -30
  423. data/work/core/fileutils/cptouch.rb +0 -20
  424. data/work/core/fileutils/nl_convert.rb +0 -133
  425. data/work/core/io/expect.rb +0 -127
  426. data/work/core/join_with.rb +0 -13
  427. data/work/core/kernel/call_line.rb +0 -15
  428. data/work/core/kernel/does.rb +0 -7
  429. data/work/core/kernel/message.rb +0 -6
  430. data/work/core/kernel/query.rb +0 -15
  431. data/work/core/kernel/taint.rb +0 -10
  432. data/work/core/logger/clean_logger.rb +0 -10
  433. data/work/core/module/attr-old.rb +0 -308
  434. data/work/core/module/attr.rb +0 -98
  435. data/work/core/module/attr_xxx.rb +0 -22
  436. data/work/core/module/by_regexp.rb +0 -21
  437. data/work/core/module/cast.rb +0 -64
  438. data/work/core/module/class_attribute_accessors.rb +0 -57
  439. data/work/core/module/inherit.rb +0 -99
  440. data/work/core/module/inherit0.rb +0 -59
  441. data/work/core/module/let.rb +0 -51
  442. data/work/core/module/meta_attr.rb +0 -60
  443. data/work/core/module/module_attribute_accessors.rb +0 -57
  444. data/work/core/module/permissions.rb +0 -32
  445. data/work/core/module/preserved.rb +0 -108
  446. data/work/core/module/sattr_accessor.rb +0 -1
  447. data/work/core/module/sattr_reader.rb +0 -1
  448. data/work/core/module/sattr_setter.rb +0 -1
  449. data/work/core/module/sattr_tester.rb +0 -1
  450. data/work/core/module/sattr_writer.rb +0 -1
  451. data/work/core/module/tc_attr.rb +0 -107
  452. data/work/core/module/to_module.rb +0 -37
  453. data/work/core/module/version.rb +0 -23
  454. data/work/core/string/frequency.rb +0 -40
  455. data/work/core/string/op_add.rb +0 -24
  456. data/work/core/string/op_div.rb +0 -15
  457. data/work/core/string/pred.rb +0 -217
  458. data/work/core/string/probability.rb +0 -35
  459. data/work/core/string/succ_distance.rb +0 -112
  460. data/work/core/string/to_arr.rb +0 -57
  461. data/work/core/string/to_ary.rb +0 -12
  462. data/work/core/string/word_wrap.rb +0 -62
  463. data/work/hash_open.rb +0 -23
  464. data/work/misc/calibre/ProjectInfo.annotation +0 -46
  465. data/work/misc/calibre/ProjectInfo.ansicode +0 -33
  466. data/work/misc/calibre/ProjectInfo.association +0 -34
  467. data/work/misc/calibre/ProjectInfo.basicobject +0 -36
  468. data/work/misc/calibre/ProjectInfo.bbcode +0 -34
  469. data/work/misc/calibre/ProjectInfo.binaryreader +0 -35
  470. data/work/misc/calibre/ProjectInfo.bitmask +0 -33
  471. data/work/misc/calibre/ProjectInfo.classinherit +0 -36
  472. data/work/misc/calibre/ProjectInfo.classmethods +0 -36
  473. data/work/misc/calibre/ProjectInfo.cloneable +0 -33
  474. data/work/misc/calibre/ProjectInfo.consoleapp +0 -35
  475. data/work/misc/calibre/ProjectInfo.coroutine +0 -37
  476. data/work/misc/calibre/ProjectInfo.crypt +0 -33
  477. data/work/misc/calibre/ProjectInfo.dictionary +0 -40
  478. data/work/misc/calibre/ProjectInfo.downloader +0 -39
  479. data/work/misc/calibre/ProjectInfo.enumerablepass +0 -35
  480. data/work/misc/calibre/ProjectInfo.expirable +0 -37
  481. data/work/misc/calibre/ProjectInfo.floatstring +0 -35
  482. data/work/misc/calibre/ProjectInfo.functor +0 -40
  483. data/work/misc/calibre/ProjectInfo.heap +0 -33
  484. data/work/misc/calibre/ProjectInfo.inheritor +0 -36
  485. data/work/misc/calibre/ProjectInfo.interval +0 -36
  486. data/work/misc/calibre/ProjectInfo.lisp +0 -38
  487. data/work/misc/calibre/ProjectInfo.lrucache +0 -34
  488. data/work/misc/calibre/ProjectInfo.mathconstants +0 -41
  489. data/work/misc/calibre/ProjectInfo.methodprobe +0 -38
  490. data/work/misc/calibre/ProjectInfo.mock +0 -34
  491. data/work/misc/calibre/ProjectInfo.multiton +0 -36
  492. data/work/misc/calibre/ProjectInfo.nackclass +0 -33
  493. data/work/misc/calibre/ProjectInfo.nilcomparable +0 -35
  494. data/work/misc/calibre/ProjectInfo.nullclass +0 -35
  495. data/work/misc/calibre/ProjectInfo.one +0 -37
  496. data/work/misc/calibre/ProjectInfo.openobject +0 -39
  497. data/work/misc/calibre/ProjectInfo.paramix +0 -38
  498. data/work/misc/calibre/ProjectInfo.pool +0 -33
  499. data/work/misc/calibre/ProjectInfo.progressbar +0 -37
  500. data/work/misc/calibre/ProjectInfo.reference +0 -36
  501. data/work/misc/calibre/ProjectInfo.semaphore +0 -36
  502. data/work/misc/calibre/ProjectInfo.stateparser +0 -39
  503. data/work/misc/calibre/ProjectInfo.statichash +0 -33
  504. data/work/misc/calibre/ProjectInfo.system +0 -34
  505. data/work/misc/calibre/ProjectInfo.tagiterator +0 -36
  506. data/work/misc/calibre/ProjectInfo.timer +0 -35
  507. data/work/misc/calibre/ProjectInfo.tracepoint +0 -37
  508. data/work/misc/calibre/ProjectInfo.tuple +0 -36
  509. data/work/misc/calibre/ProjectInfo.uniheritable +0 -34
  510. data/work/misc/calibre/ProjectInfo.units +0 -34
  511. data/work/misc/calibre/ProjectInfo.yamlstruct +0 -34
  512. data/work/more/annotation-rw.rb +0 -217
  513. data/work/more/aobject.rb +0 -132
  514. data/work/more/autohash.rb +0 -67
  515. data/work/more/cache.rb +0 -189
  516. data/work/more/class_inheritable_attributes.rb +0 -120
  517. data/work/more/commandrunner.rb +0 -101
  518. data/work/more/daemon.rb +0 -70
  519. data/work/more/debugger.rb +0 -167
  520. data/work/more/detach.rb +0 -423
  521. data/work/more/enumtype.rb +0 -115
  522. data/work/more/ioreactor.rb +0 -671
  523. data/work/more/logger_sing.rb +0 -207
  524. data/work/more/must.rb +0 -37
  525. data/work/more/old-tkxml.rb +0 -189
  526. data/work/more/pairhash.rb +0 -55
  527. data/work/more/password.rb +0 -80
  528. data/work/more/print_exception.rb +0 -35
  529. data/work/more/rand.rb +0 -412
  530. data/work/more/range.rb +0 -383
  531. data/work/more/sanitize.rb +0 -48
  532. data/work/more/superstruct.rb +0 -735
  533. data/work/more/tag.rb +0 -31
  534. data/work/more/timer.rb +0 -164
  535. data/work/op_rshift.rb +0 -87
  536. data/work/openobject-temp.rb +0 -45
  537. data/work/pore/autorequire.rb +0 -83
  538. data/work/pore/basefactory.rb +0 -40
  539. data/work/pore/hash/each.rb +0 -76
  540. data/work/pore/merge3.rb +0 -765
  541. data/work/pore/superann.rb +0 -134
  542. data/work/pore/sys.rb +0 -186
  543. data/work/pore/utils.rb +0 -518
  544. data/work/yore/HashAquisition.rb +0 -36
  545. data/work/yore/Rakefile.old +0 -181
  546. data/work/yore/Reapfile +0 -63
  547. data/work/yore/annotation.rb +0 -489
  548. data/work/yore/annotation2.rb +0 -466
  549. data/work/yore/commandutils.rb +0 -379
  550. data/work/yore/openobject.rb +0 -298
  551. data/work/yore/reap.rb +0 -184
  552. data/work/yore/reap.yml +0 -47
  553. data/work/yore/taskable-old.rb +0 -519
  554. data/work/yore/taskable.rb +0 -482
@@ -1,383 +0,0 @@
1
- =begin rdoc
2
-
3
- = Descrete Range Class
4
-
5
- This is the Range class slightly modified to be truly desecrete in nature.
6
- Use the Interval class (see interval.rb) for a truly continuious range class.
7
-
8
- == Synopsis
9
-
10
- The following code uses class +Xs+, which is defined in the
11
- class-level documentation.
12
-
13
- require 'trix/range'
14
-
15
- range = Xs.new(1)..Xs.new(10)
16
- range.step(2) {|x| puts x}
17
- range.step(3) {|x| puts x}
18
-
19
- _produces:_
20
-
21
- 1 x
22
- 3 xxx
23
- 5 xxxxx
24
- 7 xxxxxxx
25
- 9 xxxxxxxxx
26
- 1 x
27
- 4 xxxx
28
- 7 xxxxxxx
29
- 10 xxxxxxxxxx
30
-
31
- == Notes
32
-
33
- Range is not quite have descrete behavior becasue it also performs
34
- double-duty as a continious interval class. Its just a bit too overloaded
35
- and this limits its full potential. To remedy, a separate Interval class
36
- has been created to handle true interval functionality. And here we
37
- adjust Range to be truely discrete.
38
-
39
- Range originally dependened on two methods: #succ and #<=>. If numeric
40
- ranges were the only concern, those could just as well be #+ and #<=>,
41
- but esoteric forms make that unfeasible --the obvious example being a
42
- String range. To properly handle this, Range fully seperates and extends
43
- the parallel methods: #succ for #+, #cmp for #<=> ( in the future we may
44
- add #pred for #- ). It also adds the option of #distance to properly
45
- calculate the difference between the sentinals. This is neccessary
46
- to ensure congruent bahavior. For instance, presently String Range's
47
- can give bad results because #<=> does not measure order in the same
48
- manner that #succ generates order.
49
-
50
- == Todo List
51
-
52
- * Add skip parameter, to allow skip-ranges, i.e. skipping successive iterations.
53
-
54
- == Author
55
-
56
- * Thomas Sawyer
57
-
58
- =end
59
-
60
- require 'carat/infinity'
61
- require 'carat/interval'
62
-
63
-
64
- class Range
65
-
66
- alias_method :initialize_simple, :initialize
67
- private :initialize_simple
68
-
69
- def initialize( first, halt, exclude_last=false, &succ )
70
- @first = first
71
- @last = halt.kind_of?(Proc) ? nil : halt
72
- @halt = @last ? nil : halt
73
- #@exclude_first = exclude_first
74
- @exclude_last = exclude_last
75
- @direction = (@last <=> @first)
76
- #@direction = 1 if @direction == 0
77
- @succ = succ || nil #@first.method(:succ).to_proc
78
- #@halt = nil #exclude_last? ? proc{ |x| x.cmp(@last) != -1 } : proc{ |x| x.cmp(@last) == 1 }
79
- initialize_simple(@first, @last, @exclude_last)
80
- end
81
-
82
- def succ ; @succ ; end
83
-
84
- def succ!(s)
85
- if @succ
86
- @succ.call(s)
87
- else
88
- s.succ
89
- end
90
- end
91
-
92
- def succ=(succ_proc)
93
- raise ArgumentError unless Proc === succ_proc
94
- @succ = succ_proc
95
- end
96
-
97
- def halt ; @halt ; end
98
-
99
- def halt?(s)
100
- if @halt
101
- @halt.call(s)
102
- else
103
- if @exclude_last
104
- s.cmp(@last) != -1
105
- else
106
- s.cmp(@last) == 1
107
- end
108
- end
109
- end
110
-
111
- def halt=(halt_proc)
112
- raise ArgumentError unless Proc === halt_proc
113
- @halt = halt_proc
114
- end
115
-
116
- #def first ; @first ; end
117
- #def last ; @last ; end
118
- #def exclude_first? ; @exclude_first ; end
119
- #def exclude_last? ; @exclude_last ; end
120
- alias exclude_last? exclude_end?
121
-
122
- def direction
123
- @direction ||= (@last <=> @first)
124
- end
125
-
126
- # poor names
127
- #undef_method :begin
128
- #undef_method :end
129
- #undef_method :exclude_end?
130
-
131
- def -@ ; Range.new( @first, @last, true, &@succ ) ; end
132
-
133
- def distance
134
- return @last.distance(@first) if @last and @last.respond_to?(:distance)
135
- self.to_a.length # should it just be nil instead?
136
- end
137
- alias_method( :length, :distance )
138
- alias_method( :size, :distance )
139
-
140
- def min
141
- (@first.cmp(@last) == -1) ? @first : @last
142
- end
143
-
144
- def max
145
- (@first.cmp(@last) == 1) ? @first : @last
146
- end
147
-
148
- # +between?+ simply tests whether the given value falls
149
- # between the sentinels by comparison. It does not
150
- # verify that the value is acutally in the range's sequence.
151
- def between?(x)
152
- #tf = exclude_first? ? 1 : 0
153
- tl = exclude_last? ? -1 : 0
154
- # if other classes handled Infinity in their <=> method
155
- # (which probably they should) this clause would not be required
156
- if first.kind_of?(InfinityClass)
157
- ft = ((first <=> x) <= tf)
158
- else
159
- ft = (x <=> first) >= tf
160
- end
161
- if last.kind_of?(InfinityClass)
162
- fl = ((last <=> x) >= tl)
163
- else
164
- fl = (x <=> last) <= tl
165
- end
166
- ft && fl
167
- end
168
-
169
- # Is this proper alias of +===+?
170
- alias_method( :===, :between? )
171
-
172
- # +include?+ is an alias for +member?+. It is like between
173
- # but makes sure that the value is in the range sequence.
174
- alias_method( :include?, :member? )
175
-
176
- # Compares two ranges to see if they are equal
177
- def eql?(other)
178
- return false unless @first == other.first
179
- other_last = other.exclude_last? ? other.last : other.last
180
- if self.exclude_last? and not other.exclude_last?
181
- return false unless self.last == other.last.succ
182
- elsif other.exclude_last? and not self.exclude_last?
183
- return false unless self.last.succ == other.last
184
- else
185
- return false unless @last == other.last
186
- end
187
- true
188
- end
189
-
190
- alias each_succ each
191
- def each( &blk )
192
- return each_succ( &blk ) unless @succ or @halt
193
- if @halt
194
- halt_proc = @halt
195
- else
196
- halt_proc = exclude_last? ? proc{ |x| x.cmp(@last) != -1 } : proc{ |x| x.cmp(@last) == 1 }
197
- end
198
- #t = exclude_last? ? -1 : 0
199
- s = @first
200
- if @succ
201
- #while (s <=> @last) == -1 or (s <=> @last) == t
202
- until halt_proc.call(s)
203
- yield(s)
204
- @succ.call(s)
205
- end
206
- else
207
- #while (s <=> @last) == -1 or (s <=> @last) == t
208
- until halt_proc.call(s)
209
- yield(s)
210
- s.succ
211
- end
212
- end
213
- end
214
-
215
- # # each(n) where n is steps, if n is negative it is nth
216
- # # I know, it's a neg num trick :( but I think it's
217
- # # better then having another method like #each_nth,
218
- # # cause then you'd need #to_a_nth, too, etc.
219
- # def each(n=1) # :yield:
220
- # n = (length / n.abs) if n < 0
221
- # n = n * direction
222
- # i = first; i.succ(n) if exclude_first?
223
- # t = exclude_last? ? -1 : 0
224
- # while (i <=> last) == -1 or (i <=> last) == t
225
- # yield(i)
226
- # i.succ(n)
227
- # end
228
- # end
229
-
230
- # # each(n) where n is steps, if n is negative it is nth
231
- # # I know, it's a neg num trick :( but I think it's
232
- # # better then having another method like #each_nth,
233
- # # cause then you'd need #to_a_nth, too, etc.
234
- # def reverse_each(n=1) # :yield:
235
- # n = (length / n.abs) if n < 0
236
- # n = n * direction
237
- # i = last; i -= n if exclude_first?
238
- # t = exclude_first? ? 1 : 0
239
- # while (i <=> first) == 1 or (i <=> first) == t
240
- # yield(i)
241
- # i += n
242
- # end
243
- # end
244
-
245
- # def to_a(n=1)
246
- # a=[]; each(n){|e| a << e}
247
- # a
248
- # end
249
-
250
- # Is this even desirable at this point?
251
- # Sequences depend on #succ rather then #+
252
- # so don't expect the same results from each!
253
- # def to_seq
254
- # seed = exclude_first? ? first.succ : first
255
- # halt = exclude_last? ? proc{|x| (x <=> last) >= 0} : proc{|x| (x <=> last) > 0}
256
- # Sequence.new( seed, &halt )
257
- # end
258
-
259
- end
260
-
261
-
262
-
263
- =begin test
264
-
265
-
266
- require 'test/unit'
267
-
268
- class GeneralTest < Test::Unit::TestCase
269
-
270
- def test_include_001
271
- a = Range.new(1,10)
272
- assert_equal(false, a.include?(0))
273
- assert_equal(true, a.include?(1))
274
- assert_equal(true, a.include?(2))
275
- assert_equal(true, a.include?(9))
276
- assert_equal(true, a.include?(10))
277
- assert_equal(false, a.include?(11))
278
- end
279
-
280
- def test_include_002
281
- a = Range.new(1,10,false,true)
282
- assert_equal(false, a.include?(0))
283
- assert_equal(true, a.include?(1))
284
- assert_equal(true, a.include?(2))
285
- assert_equal(true, a.include?(9))
286
- assert_equal(false, a.include?(10))
287
- assert_equal(false, a.include?(11))
288
- end
289
-
290
- def test_include_003
291
- a = Range.new(1,10,true,false)
292
- assert_equal(false, a.include?(0))
293
- assert_equal(false, a.include?(1))
294
- assert_equal(true, a.include?(2))
295
- assert_equal(true, a.include?(9))
296
- assert_equal(true, a.include?(10))
297
- assert_equal(false, a.include?(11))
298
- end
299
-
300
- def test_include_004
301
- a = Range.new(1,10,true,true)
302
- assert_equal(false, a.include?(0))
303
- assert_equal(false, a.include?(1))
304
- assert_equal(true, a.include?(2))
305
- assert_equal(true, a.include?(9))
306
- assert_equal(false, a.include?(10))
307
- assert_equal(false, a.include?(11))
308
- end
309
-
310
- end
311
-
312
- class LrgNumericTest < Test::Unit::TestCase
313
- def test_include
314
- a = Range.new(0,100000000)
315
- assert_equal(true, a.include?(0))
316
- assert_equal(true, a.include?(1000))
317
- assert_equal(true, a.include?(1000000))
318
- assert_equal(true, a.include?(100000000))
319
- assert_equal(false, a.include?(INFINITY))
320
- end
321
- def test_include_with_step
322
- a = Range.new(0,100000000)
323
- assert_equal(true, a.include?(0))
324
- assert_equal(true, a.include?(5))
325
- assert_equal(true, a.include?(70007))
326
- assert_equal(true, a.include?(5000005))
327
- assert_equal(false, a.include?(INFINITY))
328
- end
329
- end
330
-
331
- class InfTest < Test::Unit::TestCase
332
- def test_include?
333
- a = Range.new(-INFINITY,-3)
334
- assert_equal(true, a.include?(-INFINITY))
335
- assert_equal(true, a.include?(-4))
336
- assert_equal(true, a.include?(-3))
337
- assert_equal(false, a.include?(-2))
338
- assert_equal(false, a.include?(INFINITY))
339
- a = Range.new(-INFINITY,-3,false,true)
340
- assert_equal(true, a.include?(-INFINITY))
341
- assert_equal(true, a.include?(-4))
342
- assert_equal(false, a.include?(-3))
343
- assert_equal(false, a.include?(-2))
344
- assert_equal(false, a.include?(INFINITY))
345
- a = Range.new(-3,INFINITY)
346
- assert_equal(false, a.include?(-INFINITY))
347
- assert_equal(false, a.include?(-4))
348
- assert_equal(true, a.include?(-3))
349
- assert_equal(true, a.include?(-2))
350
- assert_equal(true, a.include?(INFINITY))
351
- a = Range.new(-INFINITY,INFINITY)
352
- assert_equal(true, a.include?(-INFINITY))
353
- assert_equal(true, a.include?(-4))
354
- assert_equal(true, a.include?(-3))
355
- assert_equal(true, a.include?(-2))
356
- assert_equal(true, a.include?(INFINITY))
357
- a = Range.new(-3,-2)
358
- assert_equal(false, a.include?(-INFINITY))
359
- assert_equal(false, a.include?(-4))
360
- assert_equal(true, a.include?(-3))
361
- assert_equal(true, a.include?(-2))
362
- assert_equal(false, a.include?(INFINITY))
363
- end
364
- end
365
-
366
- class OrdinalTest < Test::Unit::TestCase
367
- def test_include
368
- a = Range.new('a','g')
369
- #assert_equal(false, a.include?(-INFINITY))
370
- assert_equal(true, a.include?('a'))
371
- assert_equal(true, a.include?('c'))
372
- assert_equal(false, a.include?('z'))
373
- #assert_equal(false, a.include?(INFINITY))
374
- end
375
- #def test_error
376
- # assert_raises(ArgumentError) {
377
- # a = (-INFINITY..'z')
378
- # }
379
- #end
380
- end
381
-
382
- =end
383
-
@@ -1,48 +0,0 @@
1
- # Code from rubyonrails project (http://www.rubyonrails.com)
2
- # Temporarily here.
3
-
4
- require 'html/tokenizer'
5
- require 'html/node'
6
-
7
- VERBOTEN_TAGS = %w(form script) unless defined?(VERBOTEN_TAGS)
8
- VERBOTEN_ATTRS = /^on/i unless defined?(VERBOTEN_ATTRS)
9
-
10
- class String
11
- # Sanitizes the given HTML by making form and script tags into regular
12
- # text, and removing all "onxxx" attributes (so that arbitrary Javascript
13
- # cannot be executed). Also removes href attributes that start with
14
- # "javascript:".
15
- #
16
- # Returns the sanitized text.
17
- def self.sanitize(html)
18
- # only do this if absolutely necessary
19
- if html.index("<")
20
- tokenizer = HTML::Tokenizer.new(html)
21
- new_text = ""
22
-
23
- while token = tokenizer.next
24
- node = HTML::Node.parse(nil, 0, 0, token, false)
25
- new_text << case node
26
- when HTML::Tag
27
- if VERBOTEN_TAGS.include?(node.name)
28
- node.to_s.gsub(/</, "&lt;")
29
- else
30
- if node.closing != :close
31
- node.attributes.delete_if { |attr,v| attr =~ VERBOTEN_ATTRS }
32
- if node.attributes["href"] =~ /^javascript:/i
33
- node.attributes.delete "href"
34
- end
35
- end
36
- node.to_s
37
- end
38
- else
39
- node.to_s.gsub(/</, "&lt;")
40
- end
41
- end
42
-
43
- html = new_text
44
- end
45
-
46
- html
47
- end
48
- end
@@ -1,735 +0,0 @@
1
- #--
2
- # SuperStruct
3
- # Copyright (c) 2005 Hal Fulton
4
- #
5
- # Ruby License
6
- #
7
- # This module is free software. You may use, modify, and/or redistribute this
8
- # software under the same terms as Ruby.
9
- #
10
- # This program is distributed in the hope that it will be useful, but WITHOUT
11
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
- # FOR A PARTICULAR PURPOSE.
13
- #++
14
-
15
- # = SuperStruct
16
- #
17
- # This is an easy way to create Struct-like classes; it converts easily
18
- # between hashes and arrays, and it allows OpenStruct-like dynamic naming
19
- # of members.
20
- #
21
- # Unlike Struct, it creates a "real" class, and it has real instance variables
22
- # with predictable names.
23
- #
24
- # A basic limitation is that the hash keys must be legal method names (unless
25
- # used with send()).
26
- #
27
- # Basically, ss["alpha"], ss[:alpha], ss[0], and ss.alpha all mean the same.
28
- #
29
- # == What It's Like
30
- #
31
- # It's like a Struct...
32
- # - you can pass in a list of symbols for accessors
33
- # - it will create a class for you
34
- # but...
35
- # - you don't have to pass in the class name
36
- # - it returns a "real" class
37
- # . instance variables have the expected names
38
- # . you can reopen and add methods
39
- # - it doesn't go into the Struct:: namespace
40
- # - it preserves the order of the fields
41
- # - you can use Strings instead of Symbols for the names
42
- #
43
- # It's like an Array...
44
- # - you can access the items by [number] and [number]=
45
- # but...
46
- # - you can also access the items by ["name"] and ["name"]=
47
- # - you can access the items by accessors
48
- #
49
- # It's like an OpenStruct...
50
- # - (if you use .open instead of .new) you can add fields
51
- # automatically with x.field or x.field=val
52
- # but...
53
- # - you can initialize it like a Struct
54
- # - it preserves the order of the fields
55
- #
56
- # It's like a Hash...
57
- # - data can be accessed by ["name"]
58
- # but...
59
- # - order (of entry or creation) is preserved
60
- # - arbitrary objects are not allowed (it does obj.to_str or obj.to_s)
61
- # - strings must be valid method names
62
- #
63
- # It's like Ara Howard's Named Array...
64
- # - we can access elements by ["name"] or ["name"]=
65
- # but...
66
- # - you can access the items by accessors
67
- # - strings must be valid method names
68
- #
69
- # It's like Florian Gross's Keyed List...
70
- # (to be done)
71
- # but...
72
- # - it preserves the order of the fields
73
- #
74
- # == Usage
75
- #
76
- # # Need not assign to existing fields (default to nil)
77
- # myStruct = SuperStruct.new(:alpha)
78
- # x = myStruct.new
79
- # x.alpha # nil
80
- #
81
- # # A value assigned at construction may be retrieved
82
- # myStruct = SuperStruct.new(:alpha)
83
- # x = myStruct.new(234)
84
- # x.alpha # 234
85
- #
86
- # # Unassigned fields are nil
87
- # myStruct = SuperStruct.new(:alpha,:beta)
88
- # x = myStruct.new(234)
89
- # x.beta # nil
90
- #
91
- # # An open structure may not construct with nonexistent fields
92
- # myStruct = SuperStruct.open
93
- # x = myStruct.new(234) # error
94
- #
95
- # # An open structure may assign fields not previously existing
96
- # myStruct = SuperStruct.open
97
- # x = myStruct.new
98
- # x.foo = 123
99
- # x.bar = 456
100
- #
101
- # # The act of retrieving a nonexistent field from an open struct will
102
- # # create that field
103
- # myStruct = SuperStruct.open
104
- # x = myStruct.new
105
- # x.foo # nil
106
- #
107
- # # A field (in an open struct) that is unassigned will be nil
108
- # myStruct = SuperStruct.open
109
- # x = myStruct.new
110
- # y = x.foobar
111
- #
112
- # # A struct created with new rather than open cannot reference nonexistent
113
- # # fields
114
- # myStruct = SuperStruct.new
115
- # x = myStruct.new
116
- # x.foo # error
117
- #
118
- # # Adding a field to a struct will create a writer and reader for that field
119
- #
120
- # # An open struct will also create a writer and a reader together
121
- #
122
- # # A field has a real writer and reader corresponding to it
123
- #
124
- # # A string will work as well as a symbol
125
- # myStruct = SuperStruct.new("alpha")
126
- #
127
- # # to_a will return an array of values
128
- # myStruct = SuperStruct.new("alpha","beta","gamma")
129
- # x = myStruct.new(7,8,9)
130
- # assert(x.to_a == [7,8,9])
131
- #
132
- # # Instance method 'members' will return a list of members (as strings)
133
- # myStruct = SuperStruct.new(:alpha,"beta")
134
- # x = myStruct.new
135
- # assert_equal(["alpha","beta"],x.members)
136
- #
137
- # # Class method 'members' will return a list of members (as strings)
138
- # myStruct = SuperStruct.new(:alpha,"beta")
139
- # assert_equal(["alpha","beta"],myStruct.members)
140
- #
141
- # # to_ary will allow a struct to be treated like an array in
142
- # # multiple assignment
143
- # myStruct = SuperStruct.new("alpha","beta","gamma")
144
- # x = myStruct.new(7,8,9)
145
- # a,b,c = x
146
- # assert(b == 8)
147
- #
148
- # # to_ary will allow a struct to be treated like an array in
149
- # # passed parameters
150
- # myStruct = SuperStruct.new("alpha","beta","gamma")
151
- # x = myStruct.new(7,8,9)
152
- # b = meth(*x)
153
- #
154
- # # to_hash will return a hash with fields as keys
155
- # myStruct = SuperStruct.new("alpha","beta","gamma")
156
- # x = myStruct.new(7,8,9)
157
- # h = x.to_hash
158
- # assert_equal({"alpha"=>7,"beta"=>8,"gamma"=>9},h)
159
- #
160
- # # A field name (String) may be used in a hash-like notation
161
- # myStruct = SuperStruct.new("alpha","beta","gamma")
162
- # x = myStruct.new(7,8,9)
163
- # y = x["beta"]
164
- #
165
- # # A field name (Symbol) may be used in a hash-like notation
166
- # myStruct = SuperStruct.new("alpha","beta","gamma")
167
- # x = myStruct.new(7,8,9)
168
- # y = x[:beta]
169
- #
170
- # # [offset,length] may be used as for arrays
171
- # myStruct = SuperStruct.new("alpha","beta","gamma")
172
- # x = myStruct.new(7,8,9)
173
- # y = x[0,2]
174
- #
175
- # # Ranges may be used as for arrays
176
- # myStruct = SuperStruct.new("alpha","beta","gamma")
177
- # x = myStruct.new(7,8,9)
178
- # y = x[1..2]
179
- #
180
- # # Adding a field to an open struct adds it to the instance
181
- # myStruct = SuperStruct.open(:alpha)
182
- # x = myStruct.new
183
- # x.beta = 5
184
- #
185
- # # Adding a field to an open struct adds it to the class also
186
- # myStruct = SuperStruct.open(:alpha)
187
- # x = myStruct.new
188
- # x.beta = 5
189
- #
190
- # # An array passed to SuperStruct.new need not be starred
191
- # myStruct = SuperStruct.new(%w[alpha beta gamma])
192
- # x = myStruct.new
193
- #
194
- # # A hash passed to #set will set multiple values at once
195
- # myStruct = SuperStruct.new(%w[alpha beta gamma])
196
- # x = myStruct.new
197
- # hash = {"alpha"=>234,"beta"=>345,"gamma"=>456}
198
- # x.set(hash)
199
- #
200
- # # ||= works properly
201
- # x = SuperStruct.open.new
202
- # x.foo ||= 333
203
- # x.bar = x.bar || 444
204
- #
205
- # # attr_tester will create a ?-method
206
- # myStruct = SuperStruct.new(:alive)
207
- # myStruct.attr_tester :alive
208
- # x = myStruct.new(true)
209
- # x.alive? # true
210
- #
211
- #
212
- # == Author(s)
213
- #
214
- # * Hal Fulton
215
- #
216
-
217
- class SuperStruct
218
-
219
- def SuperStruct.new(*args)
220
- @table = []
221
- @setsyms = [] # Setter symbols
222
- klass = Class.new
223
- if (args.size == 1) && (args[0].is_a? Array)
224
- args = args[0]
225
- end
226
- strs = args.map {|x| x.to_s }
227
- args.each_with_index do |k,i|
228
- case
229
- when (! [String,Symbol].include? k.class)
230
- raise ArgumentError, "Need a String or Symbol"
231
- when (strs[i] !~ /[_a-zA-Z][_a-zA-Z0-9]*/)
232
- raise ArgumentError, "Illegal character"
233
- end
234
- k = k.intern if k.is_a? String
235
- @table << k
236
- @setsyms << (k.to_s + "=").intern
237
- klass.instance_eval { attr_accessor k }
238
- end
239
-
240
- setsyms = @setsyms
241
- table = @table
242
- vals = @vals
243
- klass.class_eval do
244
- attr_reader :singleton
245
- define_method(:initialize) do |*vals|
246
- n = vals.size
247
- m = table.size
248
- case
249
- when n < m
250
- # raise ArgumentError, "Too few arguments (#{n} for #{m})"
251
- # Never mind... extra variables will just be nil
252
- when n > m
253
- raise ArgumentError, "Too many arguments (#{n} for #{m})"
254
- end
255
- setsyms.each_with_index do |var,i|
256
- self.send(var,vals[i])
257
- end
258
- end
259
- define_method(:pretty_print) do |q| # pp.rb support
260
- q.object_group(self) do
261
- q.seplist(self.members, proc { q.text "," }) do |member|
262
- # self.members.each do |member|
263
- # q.text "," # unless q.first?
264
- q.breakable
265
- q.text member.to_s
266
- q.text '='
267
- q.group(1) do
268
- q.breakable ''
269
- q.pp self[member]
270
- end
271
- end
272
- end
273
- end
274
- define_method(:inspect) do
275
- str = "#<#{self.class}:"
276
- table.each {|item| str << " #{item}=#{self.send(item)}" }
277
- str + ">"
278
- end
279
- define_method(:[]) do |*index|
280
- case index.map {|x| x.class }
281
- when [Fixnum]
282
- self.send(table[*index])
283
- when [Fixnum,Fixnum], [Range]
284
- table[*index].map {|x| self.send(x)}
285
- when [String]
286
- self.send(index[0].intern)
287
- when [Symbol]
288
- self.send(index[0])
289
- else
290
- raise ArgumentError,"Illegal index"
291
- end
292
- end
293
- define_method(:[]=) do |*index|
294
- value = index[-1]
295
- index = index[0..-2]
296
- case index.map {|x| x.class }
297
- when [Fixnum]
298
- self.send(table[*index])
299
- when [Fixnum,Fixnum], [Range]
300
- setsyms[*index].map {|x| self.send(x,value) }
301
- when [String]
302
- self.send(index[0].intern,value)
303
- when [Symbol]
304
- self.send(index[0],value)
305
- else
306
- raise ArgumentError,"Illegal index"
307
- end
308
- end
309
- define_method(:to_a) { table.map {|x| eval("@"+x.to_s) } }
310
- define_method(:to_ary) { to_a }
311
- define_method(:members) { table.map {|x| x.to_s } }
312
- define_method(:to_struct) do
313
- mems = table
314
- Struct.new("TEMP",*mems)
315
- # Struct::TEMP.new(*vals) # Why doesn't this work??
316
- data = mems.map {|x| self.send(x) }
317
- Struct::TEMP.new(*data)
318
- end
319
- define_method(:to_hash) do
320
- hash = {}
321
- table.each do |mem|
322
- mem = mem.to_s
323
- hash.update(mem => self.send(mem))
324
- end
325
- hash
326
- end
327
- define_method(:set) {|h| h.each_pair {|k,v| send(k.to_s+"=",v) } }
328
-
329
- # Class methods...
330
-
331
- @singleton = class << self
332
- self
333
- end
334
-
335
- @singleton.instance_eval do
336
- define_method(:members) do
337
- table.map {|x| x.to_s }
338
- end
339
- me = self
340
- define_method(:attr_tester) do |*syms|
341
- syms.each {|sym| alias_method(sym.to_s+"?",sym) }
342
- end
343
- end
344
-
345
- end
346
- klass
347
- end
348
-
349
-
350
- def SuperStruct.open(*args)
351
- klass = SuperStruct.new(*args)
352
- table = @table
353
- setsyms = @setsyms
354
- table = @table
355
- klass.class_eval do
356
- define_method(:method_missing) do |meth, *args|
357
- mname = meth.id2name
358
- if mname =~ /=$/
359
- getter = mname.chop
360
- setter = mname
361
- elsif mname =~ /\?$/
362
- raise NoMethodError # ?-methods are not created automatically
363
- else
364
- getter = mname
365
- setter = mname + "="
366
- end
367
- gsym = getter.intern
368
- ssym = setter.intern
369
- ivar = "@" + getter
370
- setsyms << setter
371
- table << getter
372
- len = args.length
373
- if mname == getter
374
- klass.class_eval do # getter
375
- define_method(getter) do
376
- instance_variable_get(ivar)
377
- end
378
- end
379
- else
380
- klass.class_eval do # setter
381
- define_method(setter) do |*args|
382
- if len != 1
383
- raise ArgumentError, "Wrong # of arguments (#{len} for 1)", caller(1)
384
- end
385
- instance_variable_set(ivar,args[0])
386
- instance_variable_get(ivar)
387
- end
388
- end
389
- end
390
- if mname == setter
391
- self.send(setter,*args)
392
- else
393
- if len == 0
394
- self.send(getter)
395
- else
396
- raise NoMethodError, "Undefined method '#{mname}' for #{self}", caller(1)
397
- end
398
- end
399
- end
400
- end
401
- klass
402
- end
403
-
404
- end
405
-
406
-
407
-
408
- # _____ _
409
- # |_ _|__ ___| |_
410
- # | |/ _ \/ __| __|
411
- # | | __/\__ \ |_
412
- # |_|\___||___/\__|
413
- #
414
-
415
- =begin testing
416
-
417
- #
418
- # SuperStruct test code
419
- # Hal Fulton
420
- # Version 1.0.1 (in sync with library code)
421
- # License: The Ruby License
422
- #
423
-
424
- require "test/unit"
425
-
426
- class Tester < Test::Unit::TestCase
427
-
428
- def test001
429
- # Must pass in String or Symbol
430
- assert_raises(ArgumentError) { SuperStruct.new(0) }
431
- end
432
-
433
- def test002
434
- # Must pass in valid name(s)
435
- assert_raises(ArgumentError) { SuperStruct.new("###") }
436
- end
437
-
438
- def test003
439
- # Can't assign to nonexistent fields
440
- myStruct = SuperStruct.new
441
- assert_raises(ArgumentError) { myStruct.new(345) }
442
- end
443
-
444
- def test004
445
- # Need not assign to existing fields (default to nil)
446
- myStruct = SuperStruct.new(:alpha)
447
- assert_nothing_raised(ArgumentError) { myStruct.new }
448
- end
449
-
450
- def test005
451
- # A value assigned at construction may be retrieved
452
- myStruct = SuperStruct.new(:alpha)
453
- x = myStruct.new(234)
454
- assert(x.alpha == 234)
455
- end
456
-
457
- def test006
458
- # Unassigned fields are nil
459
- myStruct = SuperStruct.new(:alpha,:beta)
460
- x = myStruct.new(234)
461
- assert(x.beta == nil)
462
- end
463
-
464
- def test007
465
- # An open structure still may not construct with nonexistent fields
466
- myStruct = SuperStruct.open
467
- assert_raises(ArgumentError) { x = myStruct.new(234) }
468
- end
469
-
470
- def test008
471
- # An open structure may assign fields not previously existing
472
- myStruct = SuperStruct.open
473
- x = myStruct.new
474
- assert_nothing_raised { x.foobar = 123 }
475
- end
476
-
477
- def test009
478
- # A field assigned to an open struct after its construction may be retrieved
479
- myStruct = SuperStruct.open
480
- x = myStruct.new
481
- x.foobar = 123
482
- assert(x.foobar == 123)
483
- end
484
-
485
- def test010
486
- # The act of retrieving a nonexistent field from an open struct will
487
- # create that field
488
- myStruct = SuperStruct.open
489
- x = myStruct.new
490
- assert_nothing_raised { y = x.foobar }
491
- end
492
-
493
- def test011
494
- # A field (in an open struct) that is unassigned will be nil
495
- myStruct = SuperStruct.open
496
- x = myStruct.new
497
- y = x.foobar
498
- assert(y == nil)
499
- end
500
-
501
- def test012
502
- # A struct created with new rather than open cannot reference nonexistent
503
- # fields
504
- myStruct = SuperStruct.new
505
- x = myStruct.new
506
- assert_raises(NoMethodError) { y = x.foobar }
507
- end
508
-
509
- def test013
510
- # Adding a field to a struct will create a writer and reader for that field
511
- myStruct = SuperStruct.new(:alpha)
512
- x = myStruct.new
513
- x.send(:alpha=,1)
514
- assert(x.alpha == 1)
515
- end
516
-
517
- def test014
518
- # Only a single value may be passed to a writer (for code coverage)
519
- myStruct = SuperStruct.new(:alpha)
520
- x = myStruct.new
521
- assert_raises(ArgumentError) { x.send(:alpha=,1,2) }
522
- end
523
-
524
- def test015
525
- # An open struct will also create a writer and a reader together
526
- myStruct = SuperStruct.open
527
- x = myStruct.new
528
- x.send(:alpha=,1)
529
- assert(x.alpha == 1)
530
- end
531
-
532
- def test016
533
- # Only a single value may be passed to a writer (for code coverage)
534
- myStruct = SuperStruct.open
535
- x = myStruct.new
536
- assert_raises(ArgumentError) { x.send(:alpha=,1,2) }
537
- end
538
-
539
- def test017
540
- # A field has a real writer and reader corresponding to it
541
- myStruct = SuperStruct.new(:alpha)
542
- x = myStruct.new
543
- assert(myStruct.instance_methods.include?("alpha"))
544
- assert(myStruct.instance_methods.include?("alpha="))
545
- end
546
-
547
- def test018
548
- # Creating a field by retrieval in an open struct will NOT create a writer
549
- # (This behavior has changed!)
550
- myStruct = SuperStruct.open
551
- x = myStruct.new
552
- y = x.alpha
553
- assert(myStruct.instance_methods.include?("alpha"))
554
- assert(!myStruct.instance_methods.include?("alpha="))
555
- end
556
-
557
- def test019
558
- # Creating a field by writing in an open struct will NOT create a reader
559
- # (This behavior has changed!)
560
- myStruct = SuperStruct.open
561
- x = myStruct.new
562
- x.alpha = 5
563
- assert(myStruct.instance_methods.include?("alpha="))
564
- assert(!myStruct.instance_methods.include?("alpha"))
565
- end
566
-
567
- def test020
568
- # A string will work as well as a symbol
569
- myStruct = SuperStruct.new("alpha")
570
- x = myStruct.new
571
- assert(myStruct.instance_methods.include?("alpha"))
572
- assert(myStruct.instance_methods.include?("alpha="))
573
- end
574
-
575
- def test021
576
- # to_a will return an array of values
577
- myStruct = SuperStruct.new("alpha","beta","gamma")
578
- x = myStruct.new(7,8,9)
579
- assert(x.to_a == [7,8,9])
580
- end
581
-
582
- def test022
583
- # Instance method 'members' will return a list of members (as strings)
584
- myStruct = SuperStruct.new(:alpha,"beta")
585
- x = myStruct.new
586
- assert_equal(["alpha","beta"],x.members)
587
- end
588
-
589
- def test023
590
- # Class method 'members' will return a list of members (as strings)
591
- myStruct = SuperStruct.new(:alpha,"beta")
592
- assert_equal(["alpha","beta"],myStruct.members)
593
- end
594
-
595
- def test024
596
- # to_ary will allow a struct to be treated like an array in
597
- # multiple assignment
598
- myStruct = SuperStruct.new("alpha","beta","gamma")
599
- x = myStruct.new(7,8,9)
600
- a,b,c = x
601
- assert(b == 8)
602
- end
603
-
604
- def aux025(*arr) # Just used in test 25
605
- arr[1]
606
- end
607
-
608
- def test025
609
- # to_ary will allow a struct to be treated like an array in
610
- # passed parameters
611
- myStruct = SuperStruct.new("alpha","beta","gamma")
612
- x = myStruct.new(7,8,9)
613
- b = aux025(*x)
614
- assert(b == 8)
615
- end
616
-
617
- def test026
618
- # to_hash will return a hash with fields as keys
619
- myStruct = SuperStruct.new("alpha","beta","gamma")
620
- x = myStruct.new(7,8,9)
621
- h = x.to_hash
622
- assert_equal({"alpha"=>7,"beta"=>8,"gamma"=>9},h)
623
- end
624
-
625
- def test027
626
- # A field name (String) may be used in a hash-like notation
627
- myStruct = SuperStruct.new("alpha","beta","gamma")
628
- x = myStruct.new(7,8,9)
629
- y = x["beta"]
630
- assert(8,y)
631
- end
632
-
633
- def test028
634
- # A field name (Symbol) may be used in a hash-like notation
635
- myStruct = SuperStruct.new("alpha","beta","gamma")
636
- x = myStruct.new(7,8,9)
637
- y = x[:beta]
638
- assert(8,y)
639
- end
640
-
641
- def test029
642
- # [offset,length] may be used as for arrays
643
- myStruct = SuperStruct.new("alpha","beta","gamma")
644
- x = myStruct.new(7,8,9)
645
- y = x[0,2]
646
- assert([7,8],y)
647
- end
648
-
649
- def test030
650
- # Ranges may be used as for arrays
651
- myStruct = SuperStruct.new("alpha","beta","gamma")
652
- x = myStruct.new(7,8,9)
653
- y = x[1..2]
654
- assert([8,9],y)
655
- end
656
-
657
- def test031
658
- # Adding a field to an open struct adds it to the instance
659
- myStruct = SuperStruct.open(:alpha)
660
- x = myStruct.new
661
- x.beta = 5
662
- assert_equal(["alpha","beta"],x.members)
663
- end
664
-
665
- def test032
666
- # Adding a field to an open struct adds it to the class also
667
- myStruct = SuperStruct.open(:alpha)
668
- x = myStruct.new
669
- x.beta = 5
670
- assert_equal(["alpha","beta"],myStruct.members)
671
- end
672
-
673
- def test033
674
- # An array passed to SuperStruct.new need not be starred
675
- myStruct = SuperStruct.new(%w[alpha beta gamma])
676
- x = myStruct.new
677
- assert_equal(%w[alpha beta gamma],x.members)
678
- end
679
-
680
- def xtest034
681
- # A hash passed to SuperStruct.new will initialize the values
682
- # (but order will not be predictable!)
683
- assert false, "Not implemented yet."
684
- end
685
-
686
- def test035
687
- # A hash passed to #set will set multiple values at once
688
- myStruct = SuperStruct.new(%w[alpha beta gamma])
689
- x = myStruct.new
690
- hash = {"alpha"=>234,"beta"=>345,"gamma"=>456}
691
- x.set(hash)
692
- assert_equal([234,345,456], x.to_a)
693
- end
694
-
695
- def test036
696
- # Make sure ||= works properly
697
- x = SuperStruct.open.new
698
- x.foo ||= 333
699
- x.bar = x.bar || 444
700
- assert_equal(333,x.foo)
701
- assert_equal(444,x.bar)
702
- end
703
-
704
- def test037
705
- # A simple array index works ok
706
- myStruct = SuperStruct.new("alpha","beta","gamma")
707
- x = myStruct.new(7,8,9)
708
- assert_equal(7,x[0])
709
- assert_equal(8,x[1])
710
- assert_equal(9,x[2])
711
- end
712
-
713
- def test038
714
- # attr_tester will create a ?-method
715
- klass = SuperStruct.new(:alpha,:beta,:gamma)
716
- klass.attr_tester :alpha, :gamma
717
- x = klass.new(22,33,nil)
718
- assert(x.alpha?)
719
- assert_raises(NoMethodError) { x.beta? }
720
- assert(! x.gamma?)
721
- end
722
-
723
- def test039
724
- # attr_tester works with open() (?-methods not created)
725
- klass = SuperStruct.open(:alpha,:beta,:gamma)
726
- klass.attr_tester :alpha, :gamma
727
- x = klass.new(22,33,nil)
728
- assert(x.alpha?)
729
- assert_raises(NoMethodError) { x.beta? } # ?-methods are not automatic
730
- assert(! x.gamma?)
731
- end
732
-
733
- end
734
-
735
- =end