PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/test/test_parse.rb

https://github.com/lutzky/ttime
Ruby | 298 lines | 273 code | 20 blank | 5 comment | 0 complexity | cc51c82739095555f2cc841894057067 MD5 | raw file
  1. # encoding: utf-8
  2. require 'coveralls'
  3. Coveralls.wear!
  4. require 'ttime/parse/repy'
  5. require 'test/unit'
  6. require 'ttime/encoding'
  7. TTimeDays = {
  8. :sunday => 1,
  9. :monday => 2,
  10. :tuesday => 3,
  11. :wednesday => 4,
  12. :thursday => 5,
  13. :friday => 6,
  14. :saturday => 7
  15. }
  16. # For use with Date#wday
  17. WDays = {
  18. :sunday => 0,
  19. :monday => 1,
  20. :tuesday => 2,
  21. :wednesday => 3,
  22. :thursday => 4,
  23. :friday => 5,
  24. :saturday => 6
  25. }
  26. class TestParse < Test::Unit::TestCase
  27. def load_hash_from unicode_string
  28. encoded = unicode_string.encode(Encoding::IBM862)
  29. repy = TTime::Parse::Repy.new(encoded)
  30. repy.hash
  31. end
  32. @@simple_data = <<-eos
  33. +==========================================+
  34. | תיתביבסו תיחרזא הסדנה - תועש תכרעמ |
  35. | ד"עשת ףרוח רטסמס |
  36. +==========================================+
  37. +------------------------------------------+
  38. | הקיטסיטטס 014003 |
  39. |3.0 :קנ 2-ת 2-ה:עובשב הארוה תועש |
  40. +------------------------------------------+
  41. | ןייבשיפ.ב 13 : יארחא הרומ |
  42. | ----------- |
  43. | 03/02/14 'ב םוי: ןושאר דעומ |
  44. | ----------- |
  45. | 09/03/14 'א םוי: ינש דעומ |
  46. | ----------- |
  47. | םימ יבאשמל דעוימ.1 |
  48. | ++++++ .סמ|
  49. | םושיר|
  50. | 14.30-16.30'ג :האצרה |
  51. | ןייבשיפ.ב מ/פורפ : הצרמ |
  52. | ----- |
  53. | |
  54. | 10.30-12.30'ד :ליגרת 11 |
  55. | |
  56. | 10.30-12.30'ב :ליגרת 12 |
  57. | |
  58. | 14.30-16.30'א :ליגרת 13 |
  59. | |
  60. | 10.30-12.30'ד :ליגרת 14 |
  61. | |
  62. | 16.30-18.30'ב :ליגרת 15 |
  63. +------------------------------------------+
  64. eos
  65. def test_simple
  66. hash = load_hash_from(@@simple_data)
  67. faculty = hash[0]
  68. assert_equal "הנדסה אזרחית וסביבתית", faculty.name
  69. course = faculty.courses[0]
  70. assert_equal "014003", course.number
  71. assert_equal "סטטיסטיקה", course.name
  72. assert_equal 3.0, course.academic_points
  73. assert_equal "31 ב.פישביין", course.lecturer_in_charge
  74. assert_equal Date.new(2014,2,3), course.first_test_date
  75. assert_equal WDays[:monday], course.first_test_date.wday
  76. assert_equal Date.new(2014,3,9), course.second_test_date
  77. assert_equal WDays[:sunday], course.second_test_date.wday
  78. assert_equal :lecture, course.groups[0].type
  79. assert_equal "פרופ/מ ב.פישביין", course.groups[0].lecturer
  80. assert_equal TTimeDays[:tuesday], course.groups[0].events[0].day
  81. assert_equal 1430, course.groups[0].events[0].start
  82. assert_equal 1630, course.groups[0].events[0].end
  83. assert_equal :tutorial, course.groups[1].type
  84. assert_equal 11, course.groups[1].number
  85. assert_equal TTimeDays[:wednesday], course.groups[1].events[0].day
  86. assert_equal 1030, course.groups[1].events[0].start
  87. assert_equal 1230, course.groups[1].events[0].end
  88. assert_equal :tutorial, course.groups[2].type
  89. assert_equal 12, course.groups[2].number
  90. assert_equal TTimeDays[:monday], course.groups[2].events[0].day
  91. assert_equal 1030, course.groups[2].events[0].start
  92. assert_equal 1230, course.groups[2].events[0].end
  93. assert_equal :tutorial, course.groups[3].type
  94. assert_equal 13, course.groups[3].number
  95. assert_equal TTimeDays[:sunday], course.groups[3].events[0].day
  96. assert_equal 1430, course.groups[3].events[0].start
  97. assert_equal 1630, course.groups[3].events[0].end
  98. assert_equal :tutorial, course.groups[4].type
  99. assert_equal 14, course.groups[4].number
  100. assert_equal TTimeDays[:wednesday], course.groups[4].events[0].day
  101. assert_equal 1030, course.groups[4].events[0].start
  102. assert_equal 1230, course.groups[4].events[0].end
  103. assert_equal :tutorial, course.groups[5].type
  104. assert_equal 15, course.groups[5].number
  105. assert_equal TTimeDays[:monday], course.groups[5].events[0].day
  106. assert_equal 1630, course.groups[5].events[0].start
  107. assert_equal 1830, course.groups[5].events[0].end
  108. end
  109. # Side-note: Check out course 014841, group 91... isn't that strange? Doesn't
  110. # fit in with the rest of the course.
  111. @@data_with_labs = <<-eos
  112. +==========================================+
  113. | תיתביבסו תיחרזא הסדנה - תועש תכרעמ |
  114. | ד"עשת ףרוח רטסמס |
  115. +==========================================+
  116. +------------------------------------------+
  117. | 1 הדידמהו יופימה תודוסי 014841 |
  118. |3.5 :קנ 2-מ 2-ת 2-ה:עובשב הארוה תועש |
  119. +------------------------------------------+
  120. | תוילד.ש ר"ד : יארחא הרומ |
  121. | ----------- |
  122. | 18/02/14 'ג םוי: ןושאר דעומ |
  123. | ----------- |
  124. | 25/03/14 'ג םוי: ינש דעומ |
  125. | ----------- |
  126. | לולסממ םיטנדוטסל דעוימ אל סרוקה.1 |
  127. | היצמרופניא-ואיגו יופימ תסדנה |
  128. | 7 המוק ,הזילע לצא ליגרתל םשרהל שי.2 |
  129. | ++++++ .סמ|
  130. | םושיר|
  131. | 14.30-16.30'ב :האצרה |
  132. | תוילד.ש ר"ד : הצרמ |
  133. | ----- |
  134. | |
  135. | 16.30-18.30'ב :ליגרת 11 |
  136. | 12.30-14.30'ג :הדבעמ |
  137. | |
  138. | 16.30-18.30'ב :ליגרת 12 |
  139. | 12.30-14.30'ג :הדבעמ |
  140. | |
  141. | 16.30-18.30'ב :ליגרת 13 |
  142. | 9.30-11.30'א :הדבעמ |
  143. | |
  144. | 8.30-10.30'ג :ליגרת 14 |
  145. | 9.30-11.30'א :הדבעמ |
  146. | |
  147. | 8.30-10.30'ג :ליגרת 15 |
  148. | 10.30-12.30'ב :הדבעמ |
  149. | |
  150. | 8.30-10.30'ג :ליגרת 16 |
  151. | 10.30-12.30'ב :הדבעמ |
  152. | |
  153. | 14.30-16.30'ה :ליגרת 17 |
  154. | 12.30-14.30'ב :הדבעמ |
  155. | |
  156. | 14.30-16.30'ה :ליגרת 18 |
  157. | 12.30-14.30'ב :הדבעמ |
  158. | |
  159. | 14.30-16.30'ה :ליגרת 19 |
  160. | 10.30-12.30'ה :הדבעמ |
  161. | ++++++ .סמ|
  162. | םושיר|
  163. | - :האצרה |
  164. | |
  165. | - :ליגרת 91 |
  166. | 12.30-14.30'ג :הדבעמ |
  167. +------------------------------------------+
  168. | הקינכמואיג 014409 |
  169. |4.0 :קנ 1-מ 1-ת 3-ה:עובשב הארוה תועש |
  170. +------------------------------------------+
  171. | קינסלט.מ ח/פורפ : יארחא הרומ |
  172. | ----------- |
  173. | 02/02/14 'א םוי: ןושאר דעומ |
  174. | ----------- |
  175. | 07/03/14 'ו םוי: ינש דעומ |
  176. | ----------- |
  177. | :ליגרת.1 |
  178. | וא_10:30-11:30 ,'ה םוי |
  179. | 9:30-10:30 ,'א םוי |
  180. | ++++++ .סמ|
  181. | םושיר|
  182. | 11.30-12.30'ד :האצרה |
  183. | 8.30-10.30'ה |
  184. | קינסלט.מ ח/פורפ : הצרמ |
  185. | ----- |
  186. | |
  187. | - :ליגרת 11 |
  188. | 10.30-12.30'א :הדבעמ |
  189. | |
  190. | - :ליגרת 12 |
  191. | 10.30-12.30'א :הדבעמ |
  192. | |
  193. | - :ליגרת 13 |
  194. | 8.30-10.30'ג :הדבעמ |
  195. | |
  196. | - :ליגרת 14 |
  197. | 8.30-10.30'ג :הדבעמ |
  198. | |
  199. | - :ליגרת 15 |
  200. | 14.30-16.30'ב :הדבעמ |
  201. | |
  202. | - :ליגרת 16 |
  203. | 14.30-16.30'ב :הדבעמ |
  204. | |
  205. | - :ליגרת 17 |
  206. | 12.30-14.30'ה :הדבעמ |
  207. | |
  208. | - :ליגרת 18 |
  209. | 12.30-14.30'ה :הדבעמ |
  210. | |
  211. | - :ליגרת 19 |
  212. | 12.30-14.30'ג :הדבעמ |
  213. | ++++++ .סמ|
  214. | םושיר|
  215. | 11.30-12.30'ד :האצרה |
  216. | 8.30-10.30'ה |
  217. | |
  218. | - :ליגרת 21 |
  219. | 12.30-14.30'ג :הדבעמ |
  220. | |
  221. | - :ליגרת 22 |
  222. | 8.30-10.30'ד :הדבעמ |
  223. | |
  224. | - :ליגרת 23 |
  225. | 8.30-10.30'ד :הדבעמ |
  226. | |
  227. | - :ליגרת 24 |
  228. | 13.30-15.30'א :הדבעמ |
  229. +------------------------------------------+
  230. eos
  231. def test_with_labs_partial
  232. hash = load_hash_from @@data_with_labs
  233. faculty = hash[0]
  234. course = faculty.courses.find { |c| c.number == "014409" }
  235. assert_equal 11, course.groups[1].number
  236. assert_equal 1, course.groups[1].events.length
  237. assert_equal 1030, course.groups[1].events[0].start
  238. assert_equal 1230, course.groups[1].events[0].end
  239. assert_equal TTimeDays[:sunday], course.groups[1].events[0].day
  240. assert_equal 13, course.groups[3].number
  241. assert_equal 1, course.groups[3].events.length
  242. assert_equal 830, course.groups[3].events[0].start
  243. assert_equal 1030, course.groups[3].events[0].end
  244. assert_equal TTimeDays[:tuesday], course.groups[3].events[0].day
  245. end
  246. def test_with_labs_full
  247. hash = load_hash_from @@data_with_labs
  248. faculty = hash[0]
  249. course = faculty.courses.find { |c| c.number == "014841" }
  250. assert_equal "014841", course.number
  251. # This is actually problematic, as the group has both a tutorial and a lab.
  252. # Quite possibly a design bug... CS faculty didn't seem to have these, at
  253. # least when TTime was originally written.
  254. assert_equal :tutorial, course.groups[1].type
  255. assert_equal 11, course.groups[1].number
  256. assert_equal 1630, course.groups[1].events[0].start
  257. assert_equal 1830, course.groups[1].events[0].end
  258. assert_equal TTimeDays[:monday], course.groups[1].events[0].day
  259. assert_equal 11, course.groups[1].number
  260. assert_equal 1230, course.groups[1].events[1].start
  261. assert_equal 1430, course.groups[1].events[1].end
  262. assert_equal TTimeDays[:tuesday], course.groups[1].events[1].day
  263. assert_equal 13, course.groups[3].number
  264. assert_equal 930, course.groups[3].events[1].start
  265. assert_equal 1130, course.groups[3].events[1].end
  266. assert_equal TTimeDays[:sunday], course.groups[3].events[1].day
  267. end
  268. end