//
//  CharacterCounterTests.swift
//  ComposeUITests
//
//  Created by Shadowfacts on 9/29/18.
//  Copyright © 2018 Shadowfacts. All rights reserved.
//

import XCTest
@testable import ComposeUI
import InstanceFeatures

class CharacterCounterTests: XCTestCase {

    override func setUp() {
    }

    override func tearDown() {
    }
    
    let features = InstanceFeatures()

    func testCountEmpty() {
        XCTAssertEqual(CharacterCounter.count(text: "", for: features), 0)
    }
    
    func testCountPlainText() {
        XCTAssertEqual(CharacterCounter.count(text: "This is an example message", for: features), 26)
        XCTAssertEqual(CharacterCounter.count(text: "This is an example message with an Emoji: 😄", for: features), 43)
        XCTAssertEqual(CharacterCounter.count(text: "😄😄😄😄😄😄😄", for: features), 7)
    }
    
    func testCountLinks() {
        XCTAssertEqual(CharacterCounter.count(text: "This is an example with a link: https://example.com", for: features), 55)
        XCTAssertEqual(CharacterCounter.count(text: "This is an example with a link 😄: https://example.com", for: features), 57)
        XCTAssertEqual(CharacterCounter.count(text: "😄😄😄😄😄😄😄: https://example.com", for: features), 32)
        XCTAssertEqual(CharacterCounter.count(text: "This is an example with a link: https://a.much.longer.example.com/link?foo=bar#baz", for: features), 55)
    }
    
    func testCountLocalMentions() {
        XCTAssertEqual(CharacterCounter.count(text: "hello @example", for: features), 14)
        XCTAssertEqual(CharacterCounter.count(text: "@some_really_long_name", for: features), 22)
    }
    
    func testCountRemoteMentions() {
        XCTAssertEqual(CharacterCounter.count(text: "hello @example@some.remote.social", for: features), 14)
        XCTAssertEqual(CharacterCounter.count(text: "hello @some_really_long_name@some-long.remote-instance.social", for: features), 28)
    }

}