-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathCodeFileTests.swift
More file actions
63 lines (55 loc) · 2.02 KB
/
CodeFileTests.swift
File metadata and controls
63 lines (55 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//
// UnitTests.swift
// CodeEditModules/CodeFileTests
//
// Created by Marco Carnevali on 18/03/22.
//
import Foundation
import SwiftUI
import XCTest
@testable import CodeEdit
final class CodeFileUnitTests: XCTestCase {
var fileURL: URL!
override func setUp() async throws {
let directory = try FileManager.default.url(
for: .developerApplicationDirectory,
in: .userDomainMask,
appropriateFor: nil,
create: true
)
.appending(path: "CodeEdit", directoryHint: .isDirectory)
.appending(path: "WorkspaceClientTests", directoryHint: .isDirectory)
try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true)
fileURL = directory.appending(path: "fakeFile.swift")
}
func testLoadUTF8Encoding() throws {
let fileContent = "func test(){}"
try fileContent.data(using: .utf8)?.write(to: fileURL)
let codeFile = try CodeFileDocument(
for: fileURL,
withContentsOf: fileURL,
ofType: "public.source-code"
)
XCTAssertEqual(codeFile.content?.string, fileContent)
XCTAssertEqual(codeFile.sourceEncoding, .utf8)
}
func testWriteUTF8Encoding() throws {
let codeFile = CodeFileDocument()
codeFile.content = NSTextStorage(string: "func test(){}")
codeFile.sourceEncoding = .utf8
try codeFile.write(to: fileURL, ofType: "public.source-code")
let data = try Data(contentsOf: fileURL)
var nsString: NSString?
let fileEncoding = NSString.stringEncoding(
for: data,
encodingOptions: [
.suggestedEncodingsKey: FileEncoding.allCases.map { $0.nsValue },
.useOnlySuggestedEncodingsKey: true
],
convertedString: &nsString,
usedLossyConversion: nil
)
XCTAssertEqual(codeFile.content?.string as NSString?, nsString)
XCTAssertEqual(fileEncoding, NSUTF8StringEncoding)
}
}