CMParserSpec.m 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. @import Quick;
  2. @import Nimble;
  3. #import <CocoaMarkdown/CocoaMarkdown.h>
  4. #import "CMParserTestObject.h"
  5. QuickSpecBegin(CMParserSpec)
  6. __block CMParserTestObject *results = nil;
  7. __block CMDocument *document = nil;
  8. beforeSuite(^{
  9. NSString *path = [[NSBundle bundleForClass:self.class] pathForResource:@"test" ofType:@"md"];
  10. document = [[CMDocument alloc] initWithContentsOfFile:path options:0];
  11. });
  12. beforeEach(^{
  13. results = [[CMParserTestObject alloc] initWithDocument:document];
  14. });
  15. it(@"should parse a document", ^{
  16. [results parse];
  17. expect(@(results.didEndDocument)).to(equal(@1));
  18. expect(@(results.didStartDocument)).to(equal(@1));
  19. expect(@(results.didAbort)).to(equal(@0));
  20. expect(@(results.foundText.count)).to(equal(@27));
  21. expect(@(results.foundHRule)).to(equal(@1));
  22. expect(results.didStartHeader).to(equal(@[@1, @3]));
  23. expect(results.didEndHeader).to(equal(@[@1, @3]));
  24. expect(@(results.didStartParagraph)).to(equal(@15));
  25. expect(@(results.didEndParagraph)).to(equal(@15));
  26. expect(@(results.didStartEmphasis)).to(equal(@2));
  27. expect(@(results.didEndEmphasis)).to(equal(@2));
  28. expect(@(results.didStartStrong)).to(equal(@2));
  29. expect(@(results.didEndStrong)).to(equal(@2));
  30. NSArray *links = @[@[[NSURL URLWithString:@"http://indragie.com"], @"Indragie"]];
  31. expect(results.didStartLink).to(equal(links));
  32. expect(results.didEndLink).to(equal(links));
  33. NSArray *images = @[@[[NSURL URLWithString:@"https://raw.githubusercontent.com/sonoramac/Sonora/master/screenshot.png"], @"screenshot"]];
  34. expect(results.didStartImage).to(equal(images));
  35. expect(results.didEndImage).to(equal(images));
  36. expect(@(results.foundHTML.count)).to(equal(@1));
  37. expect(@([results.foundHTML[0] hasPrefix:@"<table>"])).to(beTruthy());
  38. expect(@([results.foundHTML[0] hasSuffix:@"</table>\n"])).to(beTruthy());
  39. expect(results.foundInlineHTML).to(equal(@[@"<s>", @"</s>", @"<sup>", @"</sup>", @"<u>", @"</u>"]));
  40. expect(@(results.foundCodeBlock.count)).to(equal(@1));
  41. expect(results.foundCodeBlock[0][0]).toNot(beNil());
  42. expect(results.foundCodeBlock[0][1]).to(equal(@"c"));
  43. expect(results.foundInlineCode).to(equal(@[@"inline code"]));
  44. expect(@(results.foundSoftBreak)).to(equal(@1));
  45. expect(@(results.foundLineBreak)).to(equal(@1));
  46. expect(@(results.didStartBlockQuote)).to(equal(@1));
  47. expect(@(results.didEndBlockQuote)).to(equal(@1));
  48. expect(results.didStartUnorderedList).to(equal(@[@YES, @YES, @YES]));
  49. expect(results.didEndUnorderedList).to(equal(@[@YES, @YES, @YES]));
  50. expect(results.didStartOrderedList).to(equal(@[@[@2, @YES]]));
  51. expect(results.didEndOrderedList).to(equal(@[@[@2, @YES]]));
  52. expect(@(results.didStartListItem)).to(equal(@9));
  53. expect(@(results.didEndListItem)).to(equal(@9));
  54. });
  55. it(@"should abort parsing", ^{
  56. results.abortOnStart = YES;
  57. [results parse];
  58. expect(@(results.didAbort)).to(equal(@1));
  59. expect(@(results.didEndDocument)).to(equal(@0));
  60. });
  61. QuickSpecEnd