Skip to content

Commit 5f400c2

Browse files
authored
Adding more tests (#1155)
1 parent 35abf90 commit 5f400c2

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

Tests/FoundationEssentialsTests/DataTests.swift

+104
Original file line numberDiff line numberDiff line change
@@ -1798,6 +1798,110 @@ extension DataTests {
17981798
// MARK: - Base64 Encode/Decode Tests
17991799

18001800
extension DataTests {
1801+
1802+
func test_base64Encode_emptyData() {
1803+
XCTAssertEqual(Data().base64EncodedString(), "")
1804+
XCTAssertEqual(Data().base64EncodedData(), Data())
1805+
}
1806+
1807+
func test_base64Encode_arrayOfNulls() {
1808+
let input = Data(repeating: 0, count: 10)
1809+
XCTAssertEqual(input.base64EncodedString(), "AAAAAAAAAAAAAA==")
1810+
XCTAssertEqual(input.base64EncodedData(), Data("AAAAAAAAAAAAAA==".utf8))
1811+
}
1812+
1813+
func test_base64Encode_differentPaddingNeeds() {
1814+
XCTAssertEqual(Data([1, 2, 3, 4]).base64EncodedString(), "AQIDBA==")
1815+
XCTAssertEqual(Data([1, 2, 3, 4, 5]).base64EncodedString(), "AQIDBAU=")
1816+
XCTAssertEqual(Data([1, 2, 3, 4, 5, 6]).base64EncodedString(), "AQIDBAUG")
1817+
1818+
XCTAssertEqual(Data([1, 2, 3, 4]).base64EncodedString(options: [.lineLength64Characters]), "AQIDBA==")
1819+
XCTAssertEqual(Data([1, 2, 3, 4, 5]).base64EncodedString(options: [.lineLength64Characters]), "AQIDBAU=")
1820+
XCTAssertEqual(Data([1, 2, 3, 4, 5, 6]).base64EncodedString(options: [.lineLength64Characters]), "AQIDBAUG")
1821+
}
1822+
1823+
func test_base64Encode_addingLinebreaks() {
1824+
let input = """
1825+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut at tincidunt arcu. Suspendisse nec sodales erat, sit amet imperdiet ipsum. Etiam sed ornare felis.
1826+
"""
1827+
1828+
// using .endLineWithLineFeed
1829+
XCTAssertEqual(
1830+
Data(input.utf8).base64EncodedString(options: [.lineLength64Characters, .endLineWithLineFeed]),
1831+
"""
1832+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Np\n\
1833+
bmcgZWxpdC4gVXQgYXQgdGluY2lkdW50IGFyY3UuIFN1c3BlbmRpc3NlIG5lYyBz\n\
1834+
b2RhbGVzIGVyYXQsIHNpdCBhbWV0IGltcGVyZGlldCBpcHN1bS4gRXRpYW0gc2Vk\n\
1835+
IG9ybmFyZSBmZWxpcy4=
1836+
"""
1837+
)
1838+
XCTAssertEqual(
1839+
Data(input.utf8).base64EncodedString(options: [.lineLength76Characters, .endLineWithLineFeed]),
1840+
"""
1841+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4g\n\
1842+
VXQgYXQgdGluY2lkdW50IGFyY3UuIFN1c3BlbmRpc3NlIG5lYyBzb2RhbGVzIGVyYXQsIHNpdCBh\n\
1843+
bWV0IGltcGVyZGlldCBpcHN1bS4gRXRpYW0gc2VkIG9ybmFyZSBmZWxpcy4=
1844+
"""
1845+
)
1846+
1847+
// using .endLineWithCarriageReturn
1848+
XCTAssertEqual(
1849+
Data(input.utf8).base64EncodedString(options: [.lineLength64Characters, .endLineWithCarriageReturn]),
1850+
"""
1851+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Np\r\
1852+
bmcgZWxpdC4gVXQgYXQgdGluY2lkdW50IGFyY3UuIFN1c3BlbmRpc3NlIG5lYyBz\r\
1853+
b2RhbGVzIGVyYXQsIHNpdCBhbWV0IGltcGVyZGlldCBpcHN1bS4gRXRpYW0gc2Vk\r\
1854+
IG9ybmFyZSBmZWxpcy4=
1855+
"""
1856+
)
1857+
XCTAssertEqual(
1858+
Data(input.utf8).base64EncodedString(options: [.lineLength76Characters, .endLineWithCarriageReturn]),
1859+
"""
1860+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4g\r\
1861+
VXQgYXQgdGluY2lkdW50IGFyY3UuIFN1c3BlbmRpc3NlIG5lYyBzb2RhbGVzIGVyYXQsIHNpdCBh\r\
1862+
bWV0IGltcGVyZGlldCBpcHN1bS4gRXRpYW0gc2VkIG9ybmFyZSBmZWxpcy4=
1863+
"""
1864+
)
1865+
1866+
// using .endLineWithLineFeed, .endLineWithCarriageReturn
1867+
XCTAssertEqual(
1868+
Data(input.utf8).base64EncodedString(options: [.lineLength64Characters, .endLineWithLineFeed, .endLineWithCarriageReturn]),
1869+
"""
1870+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Np\r\n\
1871+
bmcgZWxpdC4gVXQgYXQgdGluY2lkdW50IGFyY3UuIFN1c3BlbmRpc3NlIG5lYyBz\r\n\
1872+
b2RhbGVzIGVyYXQsIHNpdCBhbWV0IGltcGVyZGlldCBpcHN1bS4gRXRpYW0gc2Vk\r\n\
1873+
IG9ybmFyZSBmZWxpcy4=
1874+
"""
1875+
)
1876+
XCTAssertEqual(
1877+
Data(input.utf8).base64EncodedString(options: [.lineLength76Characters, .endLineWithLineFeed, .endLineWithCarriageReturn]),
1878+
"""
1879+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4g\r\n\
1880+
VXQgYXQgdGluY2lkdW50IGFyY3UuIFN1c3BlbmRpc3NlIG5lYyBzb2RhbGVzIGVyYXQsIHNpdCBh\r\n\
1881+
bWV0IGltcGVyZGlldCBpcHN1bS4gRXRpYW0gc2VkIG9ybmFyZSBmZWxpcy4=
1882+
"""
1883+
)
1884+
1885+
// using no explicit endLine option
1886+
XCTAssertEqual(
1887+
Data(input.utf8).base64EncodedString(options: [.lineLength64Characters]),
1888+
"""
1889+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Np\r\n\
1890+
bmcgZWxpdC4gVXQgYXQgdGluY2lkdW50IGFyY3UuIFN1c3BlbmRpc3NlIG5lYyBz\r\n\
1891+
b2RhbGVzIGVyYXQsIHNpdCBhbWV0IGltcGVyZGlldCBpcHN1bS4gRXRpYW0gc2Vk\r\n\
1892+
IG9ybmFyZSBmZWxpcy4=
1893+
"""
1894+
)
1895+
XCTAssertEqual(
1896+
Data(input.utf8).base64EncodedString(options: [.lineLength76Characters]),
1897+
"""
1898+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4g\r\n\
1899+
VXQgYXQgdGluY2lkdW50IGFyY3UuIFN1c3BlbmRpc3NlIG5lYyBzb2RhbGVzIGVyYXQsIHNpdCBh\r\n\
1900+
bWV0IGltcGVyZGlldCBpcHN1bS4gRXRpYW0gc2VkIG9ybmFyZSBmZWxpcy4=
1901+
"""
1902+
)
1903+
}
1904+
18011905
func test_base64Data_small() {
18021906
let data = Data("Hello World".utf8)
18031907
let base64 = data.base64EncodedString()

0 commit comments

Comments
 (0)