88 lines
2.8 KiB
Swift
88 lines
2.8 KiB
Swift
//
|
|
// TokenQueueTest.swift
|
|
// SwiftSoup
|
|
//
|
|
// Created by Nabil Chatbi on 13/10/16.
|
|
// Copyright © 2016 Nabil Chatbi.. All rights reserved.
|
|
//
|
|
|
|
import XCTest
|
|
import SwiftSoup
|
|
|
|
class TokenQueueTest: XCTestCase {
|
|
|
|
func testLinuxTestSuiteIncludesAllTests() {
|
|
#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS)
|
|
let thisClass = type(of: self)
|
|
let linuxCount = thisClass.allTests.count
|
|
let darwinCount = Int(thisClass.defaultTestSuite.testCaseCount)
|
|
XCTAssertEqual(linuxCount, darwinCount, "\(darwinCount - linuxCount) tests are missing from allTests")
|
|
#endif
|
|
}
|
|
|
|
func testChompBalanced() {
|
|
let tq = TokenQueue(":contains(one (two) three) four")
|
|
let pre = tq.consumeTo("(")
|
|
let guts = tq.chompBalanced("(", ")")
|
|
let remainder = tq.remainder()
|
|
|
|
XCTAssertEqual(":contains", pre)
|
|
XCTAssertEqual("one (two) three", guts)
|
|
XCTAssertEqual(" four", remainder)
|
|
}
|
|
|
|
func testChompEscapedBalanced() {
|
|
let tq = TokenQueue(":contains(one (two) \\( \\) \\) three) four")
|
|
let pre = tq.consumeTo("(")
|
|
let guts = tq.chompBalanced("(", ")")
|
|
let remainder = tq.remainder()
|
|
|
|
XCTAssertEqual(":contains", pre)
|
|
XCTAssertEqual("one (two) \\( \\) \\) three", guts)
|
|
XCTAssertEqual("one (two) ( ) ) three", TokenQueue.unescape(guts))
|
|
XCTAssertEqual(" four", remainder)
|
|
}
|
|
|
|
func testChompBalancedMatchesAsMuchAsPossible() {
|
|
let tq = TokenQueue("unbalanced(something(or another")
|
|
tq.consumeTo("(")
|
|
let match = tq.chompBalanced("(", ")")
|
|
XCTAssertEqual("something(or another", match)
|
|
}
|
|
|
|
func testUnescape() {
|
|
XCTAssertEqual("one ( ) \\", TokenQueue.unescape("one \\( \\) \\\\"))
|
|
}
|
|
|
|
func testChompToIgnoreCase() {
|
|
let t = "<textarea>one < two </TEXTarea>"
|
|
var tq = TokenQueue(t)
|
|
var data = tq.chompToIgnoreCase("</textarea")
|
|
XCTAssertEqual("<textarea>one < two ", data)
|
|
|
|
tq = TokenQueue("<textarea> one two < three </oops>")
|
|
data = tq.chompToIgnoreCase("</textarea")
|
|
XCTAssertEqual("<textarea> one two < three </oops>", data)
|
|
}
|
|
|
|
func testAddFirst() {
|
|
let tq = TokenQueue("One Two")
|
|
tq.consumeWord()
|
|
tq.addFirst("Three")
|
|
XCTAssertEqual("Three Two", tq.remainder())
|
|
}
|
|
|
|
static var allTests = {
|
|
return [
|
|
("testLinuxTestSuiteIncludesAllTests", testLinuxTestSuiteIncludesAllTests),
|
|
("testChompBalanced", testChompBalanced),
|
|
("testChompEscapedBalanced", testChompEscapedBalanced),
|
|
("testChompBalancedMatchesAsMuchAsPossible", testChompBalancedMatchesAsMuchAsPossible),
|
|
("testUnescape", testUnescape),
|
|
("testChompToIgnoreCase", testChompToIgnoreCase),
|
|
("testAddFirst", testAddFirst)
|
|
]
|
|
}()
|
|
|
|
}
|