NetNewsWire/Frameworks/RSParser/RSParserTests/RSSParserTests.swift

114 lines
2.9 KiB
Swift
Raw Normal View History

//
// RSSParserTests.swift
// RSParser
//
// Created by Brent Simmons on 6/26/17.
// Copyright © 2017 Ranchero Software, LLC. All rights reserved.
//
import XCTest
import RSParser
class RSSParserTests: XCTestCase {
func testScriptingNewsPerformance() {
// 0.004 sec on my 2012 iMac.
let d = parserData("scriptingNews", "rss", "http://scripting.com/")
self.measure {
let _ = try! FeedParser.parse(d)
}
}
2017-06-27 15:56:03 +02:00
func testKatieFloydPerformance() {
// 0.004 sec on my 2012 iMac.
let d = parserData("KatieFloyd", "rss", "http://katiefloyd.com/")
self.measure {
let _ = try! FeedParser.parse(d)
}
}
func testEMarleyPerformance() {
// 0.001 sec on my 2012 iMac.
let d = parserData("EMarley", "rss", "https://medium.com/@emarley")
self.measure {
let _ = try! FeedParser.parse(d)
}
}
func testMantonPerformance() {
// 0.002 sec on my 2012 iMac.
let d = parserData("manton", "rss", "http://manton.org/")
self.measure {
let _ = try! FeedParser.parse(d)
}
}
func testNatashaTheRobot() {
let d = parserData("natasha", "xml", "https://www.natashatherobot.com/")
let parsedFeed = try! FeedParser.parse(d)!
XCTAssertEqual(parsedFeed.items.count, 10)
}
2017-12-19 00:35:50 +01:00
func testTheOmniShowAttachments() {
let d = parserData("theomnishow", "rss", "https://theomnishow.omnigroup.com/")
let parsedFeed = try! FeedParser.parse(d)!
for article in parsedFeed.items {
XCTAssertNotNil(article.attachments)
XCTAssertEqual(article.attachments!.count, 1)
let attachment = Array(article.attachments!).first!
XCTAssertNotNil(attachment.mimeType)
XCTAssertNotNil(attachment.sizeInBytes)
XCTAssert(attachment.url.contains("cloudfront"))
XCTAssertGreaterThanOrEqual(attachment.sizeInBytes!, 22275279)
XCTAssertEqual(attachment.mimeType, "audio/mpeg")
}
}
func testTheOmniShowUniqueIDs() {
let d = parserData("theomnishow", "rss", "https://theomnishow.omnigroup.com/")
let parsedFeed = try! FeedParser.parse(d)!
for article in parsedFeed.items {
XCTAssertNotNil(article.uniqueID)
XCTAssertTrue(article.uniqueID.hasPrefix("https://theomnishow.omnigroup.com/episode/"))
}
}
func testMacworldUniqueIDs() {
// Macworlds feed doesnt have guids, so they should be calculated unique IDs.
let d = parserData("macworld", "rss", "https://www.macworld.com/")
let parsedFeed = try! FeedParser.parse(d)!
for article in parsedFeed.items {
XCTAssertNotNil(article.uniqueID)
XCTAssertEqual(article.uniqueID.count, 32) // calculated unique IDs are MD5 hashes
}
}
func testMacworldAuthors() {
// Macworld uses names instead of email addresses (despite the RSS spec saying they should be email addresses).
let d = parserData("macworld", "rss", "https://www.macworld.com/")
let parsedFeed = try! FeedParser.parse(d)!
for article in parsedFeed.items {
let author = article.authors!.first!
XCTAssertNil(author.emailAddress)
XCTAssertNil(author.url)
XCTAssertNotNil(author.name)
}
}
}