NetNewsWire/Frameworks/RSParser/RSParserTests/FeedParserTypeTests.swift

174 lines
3.7 KiB
Swift
Raw Normal View History

2017-06-26 02:15:47 +02:00
//
// FeedParserTypeTests.swift
// RSParser
//
// Created by Brent Simmons on 6/25/17.
// Copyright © 2017 Ranchero Software, LLC. All rights reserved.
//
import XCTest
import RSParser
class FeedParserTypeTests: XCTestCase {
// MARK: HTML
func testDaringFireballHTMLType() {
let d = parserData("DaringFireball", "html", "http://daringfireball.net/")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .notAFeed)
}
func testFurboHTMLType() {
let d = parserData("furbo", "html", "http://furbo.org/")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .notAFeed)
}
func testInessentialHTMLType() {
let d = parserData("inessential", "html", "http://inessential.com/")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .notAFeed)
}
func testSixColorsHTMLType() {
let d = parserData("sixcolors", "html", "https://sixcolors.com/")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .notAFeed)
}
// MARK: RSS
func testEMarleyRSSType() {
let d = parserData("EMarley", "rss", "https://medium.com/@emarley")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .rss)
}
func testScriptingNewsRSSType() {
let d = parserData("scriptingNews", "rss", "http://scripting.com/")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .rss)
}
func testKatieFloydRSSType() {
let d = parserData("KatieFloyd", "rss", "https://katiefloyd.com/")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .rss)
}
func testMantonRSSType() {
let d = parserData("manton", "rss", "http://manton.org/")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .rss)
}
func testDCRainmakerRSSType() {
let d = parserData("dcrainmaker", "xml", "https://www.dcrainmaker.com/")
let type = feedType(d)
XCTAssertTrue(type == .rss)
}
func testMacworldRSSType() {
let d = parserData("macworld", "rss", "https://www.macworld.com/")
let type = feedType(d)
XCTAssertTrue(type == .rss)
}
2017-06-26 02:15:47 +02:00
// MARK: Atom
func testDaringFireballAtomType() {
// File extension is .rss, but its really an Atom feed.
let d = parserData("DaringFireball", "rss", "http://daringfireball.net/")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .atom)
}
func testOneFootTsunamiAtomType() {
let d = parserData("OneFootTsunami", "atom", "http://onefoottsunami.com/")
let type = feedType(d)
2017-06-26 02:15:47 +02:00
XCTAssertTrue(type == .atom)
}
// MARK: RSS-in-JSON
func testScriptingNewsJSONType() {
let d = parserData("ScriptingNews", "json", "http://scripting.com/")
let type = feedType(d)
XCTAssertTrue(type == .rssInJSON)
}
// MARK: JSON Feed
func testInessentialJSONFeedType() {
let d = parserData("inessential", "json", "http://inessential.com/")
let type = feedType(d)
XCTAssertTrue(type == .jsonFeed)
}
2017-06-26 02:15:47 +02:00
// MARK: Performance
func testFeedTypePerformance() {
// 0.000 on my 2012 iMac.
2017-06-26 02:15:47 +02:00
let d = parserData("EMarley", "rss", "https://medium.com/@emarley")
self.measure {
let _ = feedType(d)
2017-06-26 02:15:47 +02:00
}
}
func testFeedTypePerformance2() {
// 0.000 on my 2012 iMac.
let d = parserData("inessential", "json", "http://inessential.com/")
self.measure {
let _ = feedType(d)
}
}
func testFeedTypePerformance3() {
// 0.000 on my 2012 iMac.
let d = parserData("DaringFireball", "html", "http://daringfireball.net/")
self.measure {
let _ = feedType(d)
}
}
func testFeedTypePerformance4() {
// 0.001 on my 2012 iMac.
let d = parserData("DaringFireball", "rss", "http://daringfireball.net/")
self.measure {
let _ = feedType(d)
}
}
2017-06-26 02:15:47 +02:00
}
func parserData(_ filename: String, _ fileExtension: String, _ url: String) -> ParserData {
let bundle = Bundle(for: FeedParserTypeTests.self)
let path = bundle.path(forResource: filename, ofType: fileExtension)!
let data = try! Data(contentsOf: URL(fileURLWithPath: path))
return ParserData(url: url, data: data)
}