UnicodeTests.swift 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. //
  2. // UnicodeTests.swift
  3. //
  4. // Tests for assorted rendering capabilities
  5. //
  6. import Foundation
  7. import XCTest
  8. @testable import SwiftTerm
  9. final class SwiftTermUnicode: XCTestCase {
  10. func testCombiningCharacters ()
  11. {
  12. let h = HeadlessTerminal (queue: SwiftTermTests.queue) { exitCode in }
  13. let t = h.terminal!
  14. // Feed combining characters:
  15. // "Λ" and COMBINING RING ABOVE to produce the single character Λ̊
  16. // "v" and COMBINING DOT ABOVE
  17. // "r" and COMBINING DIAERESIS
  18. // "a" and COMBINING RIGHT HARPOON ABOVE
  19. //
  20. t.feed (text: "\u{39b}\u{30a}\r\nv\u{307}\r\nr\u{308}\r\na\u{20d1}\r\nb\u{20d1}")
  21. XCTAssertEqual(t.getCharacter (col:0, row: 0), "Λ̊")
  22. XCTAssertEqual(t.getCharacter (col:0, row: 1), "v̇")
  23. XCTAssertEqual(t.getCharacter (col:0, row: 2), "r̈")
  24. XCTAssertEqual(t.getCharacter (col:0, row: 3), "a⃑")
  25. XCTAssertEqual(t.getCharacter (col:0, row: 4), "b⃑")
  26. }
  27. func testEmoji ()
  28. {
  29. let h = HeadlessTerminal (queue: SwiftTermTests.queue) { exitCode in }
  30. let t = h.terminal!
  31. // This sends emoji, and emoji with skin colors:
  32. t.feed (text: "👦🏻\r\n👦🏿\r\n")
  33. XCTAssertEqual(t.getCharacter (col:0, row: 0), "👦")
  34. XCTAssertEqual(t.getCharacter (col:1, row: 0), "🏻")
  35. XCTAssertEqual(t.getCharacter (col:0, row: 1), "👦")
  36. XCTAssertEqual(t.getCharacter (col:1, row: 1), "🏿")
  37. }
  38. static var allTests = [
  39. ("testCombiningCharacters", testCombiningCharacters),
  40. ]
  41. }