PageRenderTime 3917ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/src/com/atlassian/uwc/converters/tikiwiki/TableConverterTest.java

https://bitbucket.org/appfusions/universal-wiki-converter
Java | 943 lines | 834 code | 94 blank | 15 comment | 0 complexity | 5f2fcea60fdf5e39d10643b2412472ee MD5 | raw file
  1. package com.atlassian.uwc.converters.tikiwiki;
  2. import java.util.Vector;
  3. import junit.framework.TestCase;
  4. import org.apache.log4j.Logger;
  5. import org.apache.log4j.PropertyConfigurator;
  6. public class TableConverterTest extends TestCase {
  7. Logger log = Logger.getLogger(this.getClass());
  8. TableConverter tester;
  9. protected void setUp() throws Exception {
  10. PropertyConfigurator.configure("log4j.properties");
  11. tester = new TableConverter();
  12. }
  13. public void testConvertTable() {
  14. String input = "|| __Header1__ | __Header2__ | __Header3__ || r1c1 | r1c2 | r1c3 || r2c1 | r2c2 | r2c3 ||";
  15. String expected = "|| Header1 || Header2 || Header3 ||\n" +
  16. "| r1c1 | r1c2 | r1c3 |\n" +
  17. "| r2c1 | r2c2 | r2c3 |\n" ;
  18. String actual = tester.convertTable(input);
  19. assertEquals(expected, actual);
  20. }
  21. public void testRowHeaders() {
  22. String input = "|| __Header1__ | __Header2__ | __Header3__ " +
  23. "|| __Row1 Header__ | r1c2 | r1c3 " +
  24. "|| __Row2 Header__ | r2c2 | r2c3 ||";
  25. String expected = "|| Header1 || Header2 || Header3 ||\n" +
  26. "|| Row1 Header | r1c2 | r1c3 |\n" +
  27. "|| Row2 Header | r2c2 | r2c3 |\n";
  28. String actual = tester.convertTable(input);
  29. assertEquals(expected, actual);
  30. }
  31. public void testAltSyntax() {
  32. String input = "||row1-column1|row1-column2\n" +
  33. "row2-column1|row2-column2||\n" ;
  34. String expected = "| row1-column1 | row1-column2 |\n" +
  35. "| row2-column1 | row2-column2 |\n";
  36. // String actual = tester.convertTable(input);
  37. // assertEquals(expected, actual);
  38. }
  39. public void testNoHeaders() {
  40. String input = "||r1c1|r1c2||r2c1|r2c2||";
  41. String expected = "| r1c1 | r1c2 |\n" +
  42. "| r2c1 | r2c2 |\n";
  43. String actual = tester.convertTable(input);
  44. assertEquals(expected, actual);
  45. }
  46. public void testRowColSpans() {
  47. String input = "||row1-column1|row1-column2|row1-column3||row2-columns123||row3-column1|row3-columns23||";
  48. String expected = "| row1-column1 | row1-column2 | row1-column3 |\n" +
  49. "| row2-columns123 | | |\n" +
  50. "| row3-column1 | row3-columns23 | |\n";
  51. String actual = tester.convertTable(input);
  52. assertEquals(expected, actual);
  53. }
  54. public void testConvertRow() {
  55. String input = "|| __Header1__ | __Header2__ | __Header3__ || r1c1 | r1c2 | r1c3 || r2c1 | r2c2 | r2c3 ||";
  56. String expected = "| __Header1__ | __Header2__ | __Header3__ |\n" +
  57. "| r1c1 | r1c2 | r1c3 |\n" +
  58. "| r2c1 | r2c2 | r2c3 |\n";
  59. String actual = tester.convertRows(input);
  60. assertEquals(expected, actual);
  61. input = "||row1-column1|row1-column2\n" +
  62. "row2-column1|row2-column2||\n" ;
  63. expected = "| row1-column1 | row1-column2 |\n" +
  64. "| row2-column1 | row2-column2 |\n" ;
  65. // actual = tester.convertRows(input);
  66. // assertEquals(expected, actual);
  67. }
  68. public void testConvertHeader() {
  69. String input = "| __Header1__ | __Header2__ | __Header3__ |\n" +
  70. "| r1c1 | r1c2 | r1c3 |\n" +
  71. "| r2c1 | r2c2 | r2c3 |";
  72. String expected = "|| Header1 || Header2 || Header3 ||\n" +
  73. "| r1c1 | r1c2 | r1c3 |\n" +
  74. "| r2c1 | r2c2 | r2c3 |";
  75. String actual = tester.convertHeaders(input);
  76. assertEquals(expected, actual);
  77. input = "|row1-column1|row1-column2|\n" +
  78. "|row2-column1|row2-column2|\n" ;
  79. expected = input;
  80. actual = tester.convertHeaders(input);
  81. assertEquals(expected, actual);
  82. input = "| __Header1__ | __Header2__ | __Header3__ |\n" +
  83. "| __Row1 Header__ | r1c2 | r1c3 |\n" +
  84. "| __Row2 Header__ | r2c2 | r2c3 |\n";
  85. expected = "|| Header1 || Header2 || Header3 ||\n" +
  86. "|| Row1 Header | r1c2 | r1c3 |\n" +
  87. "|| Row2 Header | r2c2 | r2c3 |\n";
  88. actual = tester.convertHeaders(input);
  89. assertEquals(expected, actual);
  90. }
  91. public void testConvertCells() {
  92. String input = "|row1-column1|row1-column2|\n" +
  93. "|row2-column1|row2-column2|\n" ;
  94. String expected = "| row1-column1 | row1-column2 |\n" +
  95. "| row2-column1 | row2-column2 |\n" ;
  96. String actual = tester.convertCells(input);
  97. assertEquals(expected, actual);
  98. }
  99. public void testRemoveLastDelim() {
  100. String input = "|abc|\n||";
  101. String expected = "|abc|\n";
  102. String actual = tester.removeFinalDelim(input);
  103. assertEquals(expected, actual);
  104. input = "|a|b|c|\n|d|e|f|\n||";
  105. expected = "|a|b|c|\n|d|e|f|\n";
  106. actual = tester.removeFinalDelim(input);
  107. assertEquals(expected, actual);
  108. }
  109. public void testRemoveLastDelimWindowsNewlines() {
  110. //and with windows newlines
  111. String input = "|abc|\r\n||";
  112. String expected = "|abc|\r\n";
  113. String actual = tester.removeFinalDelim(input);
  114. assertEquals(expected, actual);
  115. input = "|a|b|c|\r\n|d|e|f|\r\n||";
  116. expected = "|a|b|c|\r\n|d|e|f|\r\n";
  117. actual = tester.removeFinalDelim(input);
  118. assertEquals(expected, actual);
  119. }
  120. public void testNotATable() {
  121. String input = "Monospace\n" +
  122. "stuff\n";
  123. String expected = input;
  124. String actual = tester.convertTable(input);
  125. assertEquals(expected, actual);
  126. input += "((link|alias))\n";
  127. expected = input;
  128. actual = tester.convertTable(input);
  129. assertEquals(expected, actual);
  130. input = "Tables\n\n";
  131. expected = input;
  132. actual = tester.convertTable(input);
  133. assertEquals(expected, actual);
  134. String aTable = "|| __Header1__ | __Header2__ | __Header3__ || r1c1 | r1c2 | r1c3 || r2c1 | r2c2 | r2c3 ||\n";
  135. input += aTable;
  136. expected += tester.convertTable(aTable);
  137. actual = tester.convertTable(input);
  138. assertEquals(expected, actual);
  139. }
  140. public void testNoExtraWhitespace() {
  141. String input = "Tables\n" +
  142. "\n" +
  143. "|| __Header1__ | __Header2__ | __Header3__ || r1c1 | r1c2 | r1c3 || r2c1 | r2c2 | r2c3 ||\n" +
  144. "\n" +
  145. "|| __Header1__ | __Header2__ | __Header3__ || __Row1 Header__ | r1c2 | r1c3 || __Row2 Header__ | r2c2 | r2c3 ||\n" +
  146. "\n" +
  147. "\n" +
  148. "Alternate table syntax:\n";
  149. String expected = "Tables\n" +
  150. "\n" +
  151. "|| Header1 || Header2 || Header3 ||\n" +
  152. "| r1c1 | r1c2 | r1c3 |\n" +
  153. "| r2c1 | r2c2 | r2c3 |\n" +
  154. "\n" +
  155. "|| Header1 || Header2 || Header3 ||\n" +
  156. "|| Row1 Header | r1c2 | r1c3 |\n" +
  157. "|| Row2 Header | r2c2 | r2c3 |\n" +
  158. "\n" +
  159. "\n" +
  160. "Alternate table syntax:\n";
  161. String actual = tester.convertTable(input);
  162. assertEquals(expected, actual);
  163. input = "Alternate table syntax:\n" +
  164. "\n" +
  165. "||row1-column1|row1-column2\n" +
  166. "row2-column1|row2-column2||\n" +
  167. "\n" +
  168. "No headers:\n";
  169. expected = "Alternate table syntax:\n" +
  170. "\n" +
  171. "| row1-column1 | row1-column2 |\n" +
  172. "| row2-column1 | row2-column2 |\n" +
  173. "\n" +
  174. "No headers:\n";
  175. // actual = tester.convertTable(input);
  176. // assertEquals(expected, actual);
  177. }
  178. public void testAll() {
  179. String input = "Tables\n" +
  180. "\n" +
  181. "|| __Header1__ | __Header2__ | __Header3__ || r1c1 | r1c2 | r1c3 || r2c1 | r2c2 | r2c3 ||\n" +
  182. "\n" +
  183. "|| __Header1__ | __Header2__ | __Header3__ || __Row1 Header__ | r1c2 | r1c3 || __Row2 Header__ | r2c2 | r2c3 ||\n" +
  184. "\n" +
  185. "\n" +
  186. "No headers:\n" +
  187. "\n" +
  188. "||r1c1|r1c2||r2c1|r2c2||\n" +
  189. "\n" +
  190. "Row and Col spans:\n" +
  191. "\n" +
  192. "||row1-column1|row1-column2|row1-column3||row2-columns123||row3-column1|row3-columns23||\n" ;
  193. String expected = "Tables\n" +
  194. "\n" +
  195. "|| Header1 || Header2 || Header3 ||\n" +
  196. "| r1c1 | r1c2 | r1c3 |\n" +
  197. "| r2c1 | r2c2 | r2c3 |\n" +
  198. "\n" +
  199. "|| Header1 || Header2 || Header3 ||\n" +
  200. "|| Row1 Header | r1c2 | r1c3 |\n" +
  201. "|| Row2 Header | r2c2 | r2c3 |\n" +
  202. "\n" +
  203. "\n" +
  204. "No headers:\n" +
  205. "\n" +
  206. "| r1c1 | r1c2 |\n" +
  207. "| r2c1 | r2c2 |\n" +
  208. "\n" +
  209. "Row and Col spans:\n" +
  210. "\n" +
  211. "| row1-column1 | row1-column2 | row1-column3 |\n" +
  212. "| row2-columns123 | | |\n" +
  213. "| row3-column1 | row3-columns23 | |\n";
  214. String actual = tester.convertTable(input);
  215. assertEquals(expected, actual);
  216. }
  217. public void testTwoTablesWithNewlines() {
  218. String input = "\n|| __Header1__ | __Header2__ | __Header3__ || __Row1 Header__ | r1c2 | r1c3 || __Row2 Header__ | r2c2 | r2c3 ||\n" +
  219. "\n" +
  220. "\n" +
  221. "\n" +
  222. "|| __Header1__ | __Header2__ | __Header3__ || __Row1 Header__ | r1c2 | r1c3 || __Row2 Header__ | r2c2 | r2c3 ||\n" +
  223. "\n" +
  224. "\n" ;
  225. String expected = "\n|| Header1 || Header2 || Header3 ||\n" +
  226. "|| Row1 Header | r1c2 | r1c3 |\n" +
  227. "|| Row2 Header | r2c2 | r2c3 |\n" +
  228. "\n" +
  229. "\n" +
  230. "\n" +
  231. "|| Header1 || Header2 || Header3 ||\n" +
  232. "|| Row1 Header | r1c2 | r1c3 |\n" +
  233. "|| Row2 Header | r2c2 | r2c3 |\n" +
  234. "\n\n";
  235. String actual = tester.convertTable(input);
  236. assertEquals(expected, actual);
  237. }
  238. public void testTableWithSpaceEnder() {
  239. String input = "||row1-column1|row1-column2\n" +
  240. "row2-column1|row2-column2||\n" +
  241. " \n" +
  242. "Later\n" ;
  243. String expected = "| row1-column1 | row1-column2 |\n" +
  244. "| row2-column1 | row2-column2 |\n" +
  245. " \n" +
  246. "Later\n";
  247. // String actual = tester.convertTable(input);
  248. // assertEquals(expected, actual);
  249. input = "||row1-column1|row1-column2\n" +
  250. "row2-column1|row2-column2|| \n" +
  251. "\n" +
  252. "Later\n" ;
  253. expected = "| row1-column1 | row1-column2 |\n" +
  254. "| row2-column1 | row2-column2 |\n" +
  255. "\n" +
  256. "Later\n";
  257. // actual = tester.convertTable(input);
  258. // assertEquals(expected, actual);
  259. }
  260. public void testRemoveFinalWithinContext() {
  261. String input = "|| __Header1__ | __Header2__ | __Header3__ || r1c1 | r1c2 | r1c3 || r2c1 | r2c2 | r2c3 ||\n" +
  262. "After\n";
  263. String expected = "|| Header1 || Header2 || Header3 ||\n" +
  264. "| r1c1 | r1c2 | r1c3 |\n" +
  265. "| r2c1 | r2c2 | r2c3 |\n" +
  266. "After\n" ;
  267. String actual = tester.convertTable(input);
  268. assertEquals(expected, actual);
  269. }
  270. public void testEscapeDashes() {
  271. String input = "||-|row1-column2|" +
  272. "|row2-column1|row2-column2||\n";
  273. String expected = "| \\- | row1-column2 |\n" +
  274. "| row2-column1 | row2-column2 |\n" ;
  275. String actual = tester.convertTable(input);
  276. assertNotNull(actual);
  277. assertEquals(expected, actual);
  278. }
  279. public void testEscapeSpecialCharacter() {
  280. String input = "|-|";
  281. String expected = "| \\-|";
  282. String actual = tester.escapeSpecialCharacters(input);
  283. assertNotNull(actual);
  284. assertEquals(expected, actual);
  285. input = "| - |";
  286. expected = "| \\- |";
  287. actual = tester.escapeSpecialCharacters(input);
  288. assertNotNull(actual);
  289. assertEquals(expected, actual);
  290. }
  291. public void testNewlineDelimTables_Header() {
  292. String input = "Before\n" +
  293. "||\n" +
  294. "A|B|C|D|E\n" +
  295. "abc|def|ghi|jkl|mno\n" +
  296. "||\n" +
  297. "After\n";
  298. String expected = "Before\n" +
  299. "| A | B | C | D | E |\n" +
  300. "| abc | def | ghi | jkl | mno |\n" +
  301. "After\n";
  302. String actual = tester.convertTable(input);
  303. assertNotNull(actual);
  304. assertEquals(expected, actual);
  305. }
  306. public void testRemoveOpeningExtraPipes() {
  307. String input = "Before\n" +
  308. "||| A | B | C | D | E |\n" +
  309. "| abc | def | ghi | jkl | mno |\n" +
  310. "\n" +
  311. "||\n" +
  312. "After\n" ;
  313. String expected = "Before\n" +
  314. "| A | B | C | D | E |\n" +
  315. "| abc | def | ghi | jkl | mno |\n" +
  316. "\n" +
  317. "||\n" +
  318. "After\n" ;
  319. String actual = tester.removeOpeningExtraPipes(input);
  320. assertNotNull(actual);
  321. assertEquals(expected, actual);
  322. }
  323. public void testRemoveFinalDelim_NewlineDelimTables_Header() {
  324. String input = "Before\n" +
  325. "| A | B | C | D | E |\n" +
  326. "| abc | def | ghi | jkl | mno |\n" +
  327. "\n" +
  328. "||\n" +
  329. "After\n";
  330. String expected = "Before\n" +
  331. "| A | B | C | D | E |\n" +
  332. "| abc | def | ghi | jkl | mno |\n" +
  333. "After\n";
  334. String actual = tester.removeFinalDelim(input);
  335. assertNotNull(actual);
  336. assertEquals(expected, actual);
  337. }
  338. public void testRemoveFinalDelimNeedsNewlines() {
  339. String input = "| A | B | C |\n" +
  340. "| stuff | stuff | stuff |\n" +
  341. "\n" +
  342. "||\n" +
  343. "| Date: | a/2/b |\n" +
  344. "| stuff | stuff | stuff |\n" +
  345. "\n" +
  346. "||\n";
  347. String expected =
  348. "| A | B | C |\n" +
  349. "| stuff | stuff | stuff |\n" +
  350. "\n" +
  351. "| Date: | a/2/b |\n" +
  352. "| stuff | stuff | stuff |\n";
  353. Vector<Boolean> needsNewlines = new Vector<Boolean>(2);
  354. needsNewlines.add(new Boolean(false));
  355. needsNewlines.add(new Boolean(true));
  356. String actual = tester.removeFinalDelim(input, needsNewlines);
  357. assertNotNull(actual);
  358. assertEquals(expected, actual);
  359. }
  360. public void testNewlineDelimTables_EndWithDash() {
  361. String input = "Before\n" +
  362. "||\n" +
  363. "A|B|C|D|E\n" +
  364. "abc|def|ghi|jkl|-\n" +
  365. "||\n" +
  366. "After\n";
  367. String expected = "Before\n" +
  368. "| A | B | C | D | E |\n" +
  369. "| abc | def | ghi | jkl | \\- |\n" +
  370. "After\n";
  371. String actual = tester.convertTable(input);
  372. assertNotNull(actual);
  373. assertEquals(expected, actual);
  374. }
  375. public void testNewlineDelimTables_EndWithSpace() {
  376. String input = "Before\n" +
  377. "||\n" +
  378. "A|B|C|D|E\n" +
  379. "abc|def|ghi|jkl|\n" +
  380. "||\n" +
  381. "After\n";
  382. String expected = "Before\n" +
  383. "| A | B | C | D | E |\n" +
  384. "| abc | def | ghi | jkl | |\n" +
  385. "After\n";
  386. String actual = tester.convertTable(input);
  387. assertNotNull(actual);
  388. assertEquals(expected, actual);
  389. input = "Before\n" +
  390. "||\n" +
  391. "A|B|C|D|E\n" +
  392. "abc|def|ghi|jkl|\n" +
  393. "||\n" +
  394. "After\n";
  395. expected = "Before\n" +
  396. "| A | B | C | D | E |\n" +
  397. "| abc | def | ghi | jkl | |\n" +
  398. "After\n";
  399. actual = tester.convertTable(input);
  400. assertNotNull(actual);
  401. assertEquals(expected, actual);
  402. input = "Before\n" +
  403. "||\n" +
  404. "A|B|C|D|E\n" +
  405. "abc|def|ghi| |\n" +
  406. "||\n" +
  407. "After\n";
  408. expected = "Before\n" +
  409. "| A | B | C | D | E |\n" +
  410. "| abc | def | ghi | | |\n" +
  411. "After\n";
  412. actual = tester.convertTable(input);
  413. assertNotNull(actual);
  414. assertEquals(expected, actual);
  415. }
  416. public void testGetNumberOfColumns() {
  417. String input = "| A | B | C |";
  418. int expected = 3;
  419. int actual = tester.getNumberOfColumns(input);
  420. assertEquals(expected, actual);
  421. input = "|| A || B ||";
  422. expected = 2;
  423. actual = tester.getNumberOfColumns(input);
  424. assertEquals(expected, actual);
  425. }
  426. public void testEnforceColumnNumbering() {
  427. //no change needed
  428. String input = "| A | B | C |";
  429. int num = 3;
  430. String expected = input;
  431. String actual = tester.enforceColumnNumbering(num, input);
  432. assertNotNull(actual);
  433. assertEquals(expected, actual);
  434. //num is higher
  435. num = 4;
  436. expected = input + " |";
  437. actual = tester.enforceColumnNumbering(num, input);
  438. assertNotNull(actual);
  439. assertEquals(expected, actual);
  440. num = 5;
  441. expected = input + " | |";
  442. actual = tester.enforceColumnNumbering(num, input);
  443. assertNotNull(actual);
  444. assertEquals(expected, actual);
  445. //and with a newline
  446. input = "| A | B | C |\n";
  447. expected = "| A | B | C | | |\n";
  448. actual = tester.enforceColumnNumbering(num, input);
  449. assertNotNull(actual);
  450. assertEquals(expected, actual);
  451. }
  452. public void testConvertEmptyCells() {
  453. String input = "|abc|def|ghi| ||";
  454. String expected = "| abc | def | ghi | | |";
  455. String actual = tester.convertCells(input);
  456. assertNotNull(actual);
  457. assertEquals(expected, actual);
  458. }
  459. public void testExpandEmptyCells() {
  460. String input = "| A | B | C ||";
  461. String expected = "| A | B | C | |";
  462. String actual = tester.expandEmptyCells(input);
  463. assertNotNull(actual);
  464. assertEquals(expected, actual);
  465. //don't screw up headers
  466. input = "|| A || B || C ||";
  467. expected = input;
  468. actual = tester.expandEmptyCells(input);
  469. assertNotNull(actual);
  470. assertEquals(expected, actual);
  471. }
  472. public void testMultipleTablesNewlineDelim() {
  473. String input = "^\n" +
  474. "Pre text: ABC, DEFs.\n" +
  475. "||__ABC__|__DEF__|__GHI JKL__|__MNO PQR__\n" +
  476. "http://www.google.com/|Ac|11/29/2005|11/29/2005\n" +
  477. "http://www.google.com/|Ac|1/6/2006|1/6/2006\n" +
  478. "||\n" +
  479. "^\n" +
  480. "\n" +
  481. "\n" +
  482. "__header__\n" +
  483. "^\n" +
  484. "Home Site:[http://www.google-google.com/|http://www.google-google.com/]\n" +
  485. "Download Link:[http://www.google-google.com/download.shtml|http://www.google-google.com/download.shtml]\n" +
  486. "\n" +
  487. "||Date:|1/4/2006\n" +
  488. "Version:|1.0\n" +
  489. "Purchase URL:|http://www.google-google.com/buynow.shtml\n" +
  490. "Purchase Price:|$19.99\n" +
  491. "Functionality:|Time Limit (15 day trial version)\n" +
  492. "Rabc:|ABC\n" +
  493. "Common Components:|\n" +
  494. "To Adds:|installer\n" +
  495. "Notes:|\n" +
  496. "||\n" +
  497. "\n" +
  498. "^\n" ;
  499. String expected = "^\n" +
  500. "Pre text: ABC, DEFs.\n" +
  501. "|| ABC || DEF || GHI JKL || MNO PQR ||\n" +
  502. "| http://www.google.com/ | Ac | 11/29/2005 | 11/29/2005 |\n" +
  503. "| http://www.google.com/ | Ac | 1/6/2006 | 1/6/2006 |\n" +
  504. "^\n" +
  505. "\n" +
  506. "\n" +
  507. "__header__\n" +
  508. "^\n" +
  509. "Home Site:[http://www.google-google.com/|http://www.google-google.com/]\n" +
  510. "Download Link:[http://www.google-google.com/download.shtml|http://www.google-google.com/download.shtml]\n" +
  511. "\n" +
  512. "| Date: | 1/4/2006 |\n" +
  513. "| Version: | 1.0 |\n" +
  514. "| Purchase URL: | http://www.google-google.com/buynow.shtml |\n" +
  515. "| Purchase Price: | $19.99 |\n" +
  516. "| Functionality: | Time Limit (15 day trial version) |\n" +
  517. "| Rabc: | ABC |\n" +
  518. "| Common Components: | |\n" +
  519. "| To Adds: | installer |\n" +
  520. "| Notes: | |\n" +
  521. "\n" +
  522. "^\n";
  523. String actual = tester.convertTable(input);
  524. assertNotNull(actual);
  525. assertEquals(expected, actual);
  526. }
  527. public void testManyTablesInContextAndPanel() {
  528. String input = "^\n" +
  529. "Home Site:[http://www.e-spy-software.com/|http://www.e-spy-software.com/]\n" +
  530. "Download Link:[http://www.e-spy-software.com/download.shtml|http://www.e-spy-software.com/download.shtml]\n" +
  531. "\n" +
  532. "||Date|Researcher|Version|What was preexisting in the defs?|Where there any common components?|What did you add to a def or whitelist?|Notes\n" +
  533. "20061108|ED|3.873|UFP 007 Spy|MSComctl, vb, misc microsoft|Installer|None\n" +
  534. "20060907|ED|3.87|UFP 007 Spy|mscomctl, vb5.0 |Installer, running .exe source URL|None\n" +
  535. "03/29/2006|jack|3.85|folder trace - C:\\\\Program Files\\Common Files\\Microsoft Shared\\DAO\\ssdata|ijl11pro.DLL, MSINET.OCX, VB5STKIT.DLL|installer, svchost.exe|added screenies to the wiki page\n" +
  536. "030606|csb|3.81|-|mscomm |isntaller, help file | |\n" +
  537. "022406|DJP|3.83|-|MS Stuff, Intel Jpg Library|Nothing added - complete removal| |\n" +
  538. " | | | | | |\n" +
  539. "||\n" +
  540. "\n" +
  541. "||Date:|1/4/2006\n" +
  542. "Version:|3.8\n" +
  543. "Purchase URL:|http://www.e-spy-software.com/buynow.shtml\n" +
  544. "Purchase Price:|$39.95\n" +
  545. "Functionality:|Time Limit (15 day trial version)\n" +
  546. "Researcher:|CGR\n" +
  547. "Common Components:|\n" +
  548. "To Adds:|installer\n" +
  549. "Notes:|\n" +
  550. "||\n" +
  551. "||Date:|11/29/2005\n" +
  552. "Version:|3.8\n" +
  553. "Purchase URL:|https://www.plimus.com/jsp/buynow.jsp?contractId=1633080\n" +
  554. "Purchase Price:|$39.95\n" +
  555. "Functionality:|Time Limit\n" +
  556. "Researcher:|EHD\n" +
  557. "Common Components:|\n" +
  558. "To Adds:|installer, .lnk, svchost.exe\n" +
  559. "Notes:|\n" +
  560. "||\n" +
  561. "||Date:|10/25/2005\n" +
  562. "Version:|3.73\n" +
  563. "Purchase URL:|[https://www.plimus.com/jsp/buynow.jsp?contractId=1633080]\n" +
  564. "Purchase Price:|$39.95\n" +
  565. "Funcitonality|Trial\n" +
  566. "Researcher:|BJG\n" +
  567. "Common Components:|Microsoft, VB\n" +
  568. "To Adds:|-\n" +
  569. "Notes:|-\n" +
  570. "||\n" +
  571. "||Date:|08/22/2005\n" +
  572. "Version:|3.73\n" +
  573. "Purchase URL:|[https://www.plimus.com/jsp/buynow.jsp?contractId=1633080]\n" +
  574. "Purchase Price:|$39.95\n" +
  575. "Funcitonality|Trial\n" +
  576. "Researcher:|Scott\n" +
  577. "Common Components:|Microsoft, VB\n" +
  578. "To Adds:|Installer\n" +
  579. "Notes:|Folders did not detect correctly even with being in the definition.\n" +
  580. "||\n" +
  581. "^\n" ;
  582. String expected = "^\n" +
  583. "Home Site:[http://www.e-spy-software.com/|http://www.e-spy-software.com/]\n" +
  584. "Download Link:[http://www.e-spy-software.com/download.shtml|" +
  585. "http://www.e-spy-software.com/download.shtml]\n" +
  586. "\n" +
  587. "| Date | Researcher | Version | What was preexisting in the defs? | Where there any common components? | What did you add to a def or whitelist? | Notes |\n" +
  588. "| 20061108 | ED | 3.873 | UFP 007 Spy | MSComctl, vb, misc microsoft | Installer | None |\n" +
  589. "| 20060907 | ED | 3.87 | UFP 007 Spy | mscomctl, vb5.0 | Installer, running .exe source URL | None |\n" +
  590. "| 03/29/2006 | jack | 3.85 | folder trace - C:\\\\Program Files\\Common Files\\Microsoft Shared\\DAO\\ssdata | ijl11pro.DLL, MSINET.OCX, VB5STKIT.DLL | installer, svchost.exe | added screenies to the wiki page |\n" +
  591. "| 030606 | csb | 3.81 | \\- | mscomm | isntaller, help file | |\n" +
  592. "| 022406 | DJP | 3.83 | \\- | MS Stuff, Intel Jpg Library | Nothing added - complete removal | |\n" +
  593. "| | | | | | | |\n" +
  594. "\n" +
  595. "| Date: | 1/4/2006 |\n" +
  596. "| Version: | 3.8 |\n" +
  597. "| Purchase URL: | http://www.e-spy-software.com/buynow.shtml |\n" +
  598. "| Purchase Price: | $39.95 |\n" +
  599. "| Functionality: | Time Limit (15 day trial version) |\n" +
  600. "| Researcher: | CGR |\n" +
  601. "| Common Components: | |\n" +
  602. "| To Adds: | installer |\n" +
  603. "| Notes: | |\n" +
  604. "\n" +
  605. "| Date: | 11/29/2005 |\n" +
  606. "| Version: | 3.8 |\n" +
  607. "| Purchase URL: | https://www.plimus.com/jsp/buynow.jsp?contractId=1633080 |\n" +
  608. "| Purchase Price: | $39.95 |\n" +
  609. "| Functionality: | Time Limit |\n" +
  610. "| Researcher: | EHD |\n" +
  611. "| Common Components: | |\n" +
  612. "| To Adds: | installer, .lnk, svchost.exe |\n" +
  613. "| Notes: | |\n" +
  614. "\n" +
  615. "| Date: | 10/25/2005 |\n" +
  616. "| Version: | 3.73 |\n" +
  617. "| Purchase URL: | [https://www.plimus.com/jsp/buynow.jsp?contractId=1633080] |\n" +
  618. "| Purchase Price: | $39.95 |\n" +
  619. "| Funcitonality | Trial |\n" +
  620. "| Researcher: | BJG |\n" +
  621. "| Common Components: | Microsoft, VB |\n" +
  622. "| To Adds: | \\- |\n" +
  623. "| Notes: | \\- |\n" +
  624. "\n" +
  625. "| Date: | 08/22/2005 |\n" +
  626. "| Version: | 3.73 |\n" +
  627. "| Purchase URL: | [https://www.plimus.com/jsp/buynow.jsp?contractId=1633080] |\n" +
  628. "| Purchase Price: | $39.95 |\n" +
  629. "| Funcitonality | Trial |\n" +
  630. "| Researcher: | Scott |\n" +
  631. "| Common Components: | Microsoft, VB |\n" +
  632. "| To Adds: | Installer |\n" +
  633. "| Notes: | Folders did not detect correctly even with being in the definition. |\n" +
  634. "^\n";
  635. String actual = tester.convertTable(input);
  636. assertNotNull(actual);
  637. assertEquals(expected, actual);
  638. }
  639. public void testManyTablesInContextCondensed() {
  640. String input = "||A|B|C\n" +
  641. "stuff|stuff|stuff\n" +
  642. "||\n" +
  643. "||Date:|a/2/b\n" +
  644. "stuff|stuff|stuff\n" +
  645. "||\n" ;
  646. String expected = "| A | B | C |\n" +
  647. "| stuff | stuff | stuff |\n" +
  648. "\n" +
  649. "| Date: | a/2/b |\n" +
  650. "| stuff | stuff | stuff |\n";
  651. String actual = tester.convertTable(input);
  652. assertNotNull(actual);
  653. assertEquals(expected, actual);
  654. }
  655. public void testAddNL() {
  656. String input = "abc";
  657. Boolean bool = new Boolean(false);
  658. String expected = input;
  659. String actual = tester.addNewline(input, bool);
  660. assertNotNull(actual);
  661. assertEquals(expected, actual);
  662. bool = new Boolean (true);
  663. expected = "\nabc";
  664. actual = tester.addNewline(input, bool);
  665. assertNotNull(actual);
  666. assertEquals(expected, actual);
  667. }
  668. public void testColspanReduction() {
  669. String input = "||A|B|C\n" +
  670. "something| | |\n" +
  671. "||\n";
  672. String expected = "| A | B | C |\n" +
  673. "| something | | |\n";
  674. String actual = tester.convertTable(input);
  675. assertNotNull(actual);
  676. assertEquals(expected, actual);
  677. }
  678. public void testEnforceColumnNumbering_ColspanReduction() {
  679. String input = "| something | | | |";
  680. int num = 3;
  681. String expected = "| something | | |";
  682. String actual = tester.enforceColumnNumbering(num, input);
  683. assertNotNull(actual);
  684. assertEquals(expected, actual);
  685. }
  686. public void testReduceColspans() {
  687. String input = "| something | | | |";
  688. int difference = 1;
  689. String expected = "| something | | |";
  690. String actual = tester.reduceColspans(input, difference);
  691. assertNotNull(actual);
  692. assertEquals(expected, actual);
  693. input = "! something ! else !";
  694. difference = 1;
  695. expected = input;
  696. actual = tester.reduceColspans(input, difference);
  697. assertNotNull(actual);
  698. assertEquals(expected, actual);
  699. difference = 0;
  700. try {
  701. actual = tester.reduceColspans(input, difference);
  702. fail();
  703. } catch (IllegalArgumentException e) {}
  704. difference = -1;
  705. try {
  706. actual = tester.reduceColspans(input, difference);
  707. fail();
  708. } catch (IllegalArgumentException e) {}
  709. }
  710. public void testColspanPruningVerySimple() {
  711. String input = "||A|B\n" +
  712. "a|b||\n" +
  713. "||\n";
  714. String expected = "| A | B |\n" +
  715. "| a | b |\n";
  716. String actual = tester.convertTable(input);
  717. assertNotNull(actual);
  718. assertEquals(expected, actual);
  719. }
  720. public void testRemoveFinalDelims() {
  721. String input = "| A | B |\n" +
  722. "| a | b |\n" +
  723. "||";
  724. String expected = "| A | B |\n" +
  725. "| a | b |\n";
  726. String actual = tester.removeFinalDelims(input, null);
  727. assertNotNull(actual);
  728. assertEquals(expected, actual);
  729. input += "\n||\n";
  730. actual = tester.removeFinalDelims(input, null);
  731. assertNotNull(actual);
  732. assertEquals(expected, actual);
  733. }
  734. public void testRemoveFinalDelimManyNewlines() {
  735. String input = "| A | B |\n" +
  736. "| a | b |\n" +
  737. "||\n" +
  738. "||\n";
  739. String expected = "| A | B |\n" +
  740. "| a | b |\n" +
  741. "||\n";
  742. String actual = tester.removeFinalDelim(input);
  743. assertNotNull(actual);
  744. assertEquals(expected, actual);
  745. }
  746. public void testFirstCellIsEmpty() {
  747. String input = "||A|B\n" +
  748. "|b\n" +
  749. "||\n";
  750. String expected = "| A | B |\n" +
  751. "| | b |\n";
  752. String actual = tester.convertTable(input);
  753. assertNotNull(actual);
  754. assertEquals(expected, actual);
  755. }
  756. public void testColspanPruningPlusAfter() {
  757. String input = "Before(a-b)\n" +
  758. "||A|B\n" +
  759. "a|b||\n" +
  760. "||\n" +
  761. "\n" +
  762. "After(c-d)\n" ;
  763. String expected = "Before(a-b)\n" +
  764. "| A | B |\n" +
  765. "| a | b |\n" +
  766. "\n" +
  767. "After(c-d)\n" ;
  768. String actual = tester.convertTable(input);
  769. assertNotNull(actual);
  770. assertEquals(expected, actual);
  771. }
  772. public void testSomeExtraCasesFor115_118_133() {
  773. String input = "Tables Back to Back (uwc-115)\n" +
  774. "||A|B\n" +
  775. "a|b\n" +
  776. "||\n" +
  777. "||C|D\n" +
  778. "c|d\n" +
  779. "||\n" +
  780. "\n" +
  781. "Tables with Colspans that can be pruned (uwc-133)\n" +
  782. "||A|B\n" +
  783. "a|b| |\n" +
  784. "||\n" +
  785. "\n" +
  786. "Tables starting with an empty cell (uwc-118)\n" +
  787. "||A|B\n" +
  788. "|b\n" +
  789. "||\n" ;
  790. String expected = "Tables Back to Back (uwc-115)\n" +
  791. "| A | B |\n" +
  792. "| a | b |\n" +
  793. "\n" +
  794. "| C | D |\n" +
  795. "| c | d |\n" +
  796. "\n" +
  797. "Tables with Colspans that can be pruned (uwc-133)\n" +
  798. "| A | B |\n" +
  799. "| a | b |\n" +
  800. "\n" +
  801. "Tables starting with an empty cell (uwc-118)\n" +
  802. "| A | B |\n" +
  803. "| | b |\n";
  804. String actual = tester.convertTable(input);
  805. assertNotNull(actual);
  806. assertEquals(expected, actual);
  807. }
  808. public void testTwoBackToBackTables() {
  809. String input = "Tables Back to Back (uwc-115)\n" +
  810. "||A|B\n" +
  811. "a|b\n" +
  812. "||\n" +
  813. "||C|D\n" +
  814. "c|d\n" +
  815. "||\n" +
  816. "\n";
  817. String expected = "Tables Back to Back (uwc-115)\n" +
  818. "| A | B |\n" +
  819. "| a | b |\n" +
  820. "\n" +
  821. "| C | D |\n" +
  822. "| c | d |\n" +
  823. "\n";
  824. String actual = tester.convertTable(input);
  825. assertNotNull(actual);
  826. assertEquals(expected, actual);
  827. }
  828. public void testPruningEmptyColspansPlusExtra() {
  829. String input = "Tables with Colspans that can be pruned (uwc-133)\n" +
  830. "||A|B\n" +
  831. "a|b| |\n" +
  832. "||\n" +
  833. "\n" +
  834. "Tables starting with an empty cell (uwc-118)\n" +
  835. "||A|B\n" +
  836. "|b\n" +
  837. "||\n" ;
  838. String expected = "Tables with Colspans that can be pruned (uwc-133)\n" +
  839. "| A | B |\n" +
  840. "| a | b |\n" +
  841. "\n" +
  842. "Tables starting with an empty cell (uwc-118)\n" +
  843. "| A | B |\n" +
  844. "| | b |\n";
  845. String actual = tester.convertTable(input);
  846. assertNotNull(actual);
  847. assertEquals(expected, actual);
  848. }
  849. }