198 lines
8.9 KiB
Swift
198 lines
8.9 KiB
Swift
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
import XCTest
|
|
|
|
class ThemeTest: XCTestCase {
|
|
override func setUp() {
|
|
super.setUp()
|
|
// Put setup code here. This method is called before the invocation of each test method in the class.
|
|
}
|
|
|
|
override func tearDown() {
|
|
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
|
super.tearDown()
|
|
}
|
|
|
|
func testParsingFile() {
|
|
let string =
|
|
"version: 1\n" +
|
|
"colors:\n" +
|
|
" first: \"AABBCC\"\n" +
|
|
" second: \"55667788\"\n" +
|
|
"values:\n" +
|
|
" login-background: second\n" +
|
|
" login-gradient: first\n" +
|
|
" login-tox-logo: second\n" +
|
|
" login-button-text: first\n" +
|
|
" login-button-background: second\n" +
|
|
" login-description-label: first\n" +
|
|
" login-form-background: second\n" +
|
|
" login-form-text: first\n" +
|
|
" login-link-color: second\n" +
|
|
|
|
" translucent-background: first\n" +
|
|
|
|
" normal-background: second\n" +
|
|
" normal-text: first\n" +
|
|
" link-text: second\n" +
|
|
" connecting-background: first\n" +
|
|
" connecting-text: second\n" +
|
|
" separators-and-borders: first\n" +
|
|
" offline-status: second\n" +
|
|
" online-status: first\n" +
|
|
" away-status: second\n" +
|
|
" busy-status: first\n" +
|
|
" status-background: second\n" +
|
|
" friend-cell-status: first\n" +
|
|
" chat-list-cell-message: second\n" +
|
|
" chat-list-cell-unread-background: first\n" +
|
|
" chat-input-background: second\n" +
|
|
" chat-incoming-bubble: first\n" +
|
|
" chat-outgoing-bubble: second\n" +
|
|
" chat-information-text: second\n" +
|
|
" tab-badge-background: first\n" +
|
|
" tab-badge-text: second\n" +
|
|
" tab-item-active: first\n" +
|
|
" tab-item-inactive: second\n" +
|
|
" notification-background: first\n" +
|
|
" notification-text: second\n" +
|
|
" settings-background: first\n" +
|
|
" call-text-color: second\n" +
|
|
" call-decline-button-background: first\n" +
|
|
" call-answer-button-background: second\n" +
|
|
" call-control-background: first\n" +
|
|
" call-control-selected-background: second\n" +
|
|
" call-button-icon-color: first\n" +
|
|
" call-button-selected-icon-color: second\n" +
|
|
" call-video-preview-background: first\n" +
|
|
" rounded-button-text: second\n" +
|
|
" rounded-positive-button-background: first\n" +
|
|
" rounded-negative-button-background: second\n" +
|
|
" empty-screen-placeholder-text: first\n" +
|
|
" file-image-background-active: second\n" +
|
|
" file-image-cancelled-text: first\n" +
|
|
" file-image-accept-button-tint: second\n" +
|
|
" file-image-cancel-button-tint: first\n" +
|
|
" lock-gradient-top: second\n" +
|
|
" lock-gradient-bottom: first\n" +
|
|
""
|
|
|
|
let first = UIColor(red: 170.0 / 255.0, green: 187.0 / 255.0, blue: 204.0 / 255.0, alpha: 1.0)
|
|
let second = UIColor(red: 85.0 / 255.0, green: 102.0 / 255.0, blue: 119.0 / 255.0, alpha: 136.0 / 255.0)
|
|
|
|
do {
|
|
let theme = try Theme(yamlString: string)
|
|
|
|
XCTAssertEqual(second, theme.colorForType(.LoginBackground))
|
|
XCTAssertEqual(first, theme.colorForType(.LoginGradient))
|
|
XCTAssertEqual(second, theme.colorForType(.LoginToxLogo))
|
|
XCTAssertEqual(first, theme.colorForType(.LoginButtonText))
|
|
XCTAssertEqual(second, theme.colorForType(.LoginButtonBackground))
|
|
XCTAssertEqual(first, theme.colorForType(.LoginDescriptionLabel))
|
|
XCTAssertEqual(second, theme.colorForType(.LoginFormBackground))
|
|
XCTAssertEqual(first, theme.colorForType(.LoginFormText))
|
|
XCTAssertEqual(second, theme.colorForType(.LoginLinkColor))
|
|
|
|
XCTAssertEqual(first, theme.colorForType(.TranslucentBackground))
|
|
|
|
XCTAssertEqual(second, theme.colorForType(.NormalBackground))
|
|
XCTAssertEqual(first, theme.colorForType(.NormalText))
|
|
XCTAssertEqual(second, theme.colorForType(.LinkText))
|
|
XCTAssertEqual(first, theme.colorForType(.ConnectingBackground))
|
|
XCTAssertEqual(second, theme.colorForType(.ConnectingText))
|
|
XCTAssertEqual(first, theme.colorForType(.SeparatorsAndBorders))
|
|
XCTAssertEqual(second, theme.colorForType(.OfflineStatus))
|
|
XCTAssertEqual(first, theme.colorForType(.OnlineStatus))
|
|
XCTAssertEqual(second, theme.colorForType(.AwayStatus))
|
|
XCTAssertEqual(first, theme.colorForType(.BusyStatus))
|
|
XCTAssertEqual(second, theme.colorForType(.StatusBackground))
|
|
XCTAssertEqual(first, theme.colorForType(.FriendCellStatus))
|
|
XCTAssertEqual(second, theme.colorForType(.ChatListCellMessage))
|
|
XCTAssertEqual(first, theme.colorForType(.ChatListCellUnreadBackground))
|
|
XCTAssertEqual(second, theme.colorForType(.ChatInputBackground))
|
|
XCTAssertEqual(first, theme.colorForType(.ChatIncomingBubble))
|
|
XCTAssertEqual(second, theme.colorForType(.ChatOutgoingBubble))
|
|
XCTAssertEqual(second, theme.colorForType(.ChatInformationText))
|
|
XCTAssertEqual(first, theme.colorForType(.TabBadgeBackground))
|
|
XCTAssertEqual(second, theme.colorForType(.TabBadgeText))
|
|
XCTAssertEqual(first, theme.colorForType(.TabItemActive))
|
|
XCTAssertEqual(second, theme.colorForType(.TabItemInactive))
|
|
XCTAssertEqual(first, theme.colorForType(.NotificationBackground))
|
|
XCTAssertEqual(second, theme.colorForType(.NotificationText))
|
|
XCTAssertEqual(first, theme.colorForType(.SettingsBackground))
|
|
XCTAssertEqual(second, theme.colorForType(.CallTextColor))
|
|
XCTAssertEqual(first, theme.colorForType(.CallDeclineButtonBackground))
|
|
XCTAssertEqual(second, theme.colorForType(.CallAnswerButtonBackground))
|
|
XCTAssertEqual(first, theme.colorForType(.CallControlBackground))
|
|
XCTAssertEqual(second, theme.colorForType(.CallControlSelectedBackground))
|
|
XCTAssertEqual(first, theme.colorForType(.CallButtonIconColor))
|
|
XCTAssertEqual(second, theme.colorForType(.CallButtonSelectedIconColor))
|
|
XCTAssertEqual(first, theme.colorForType(.CallVideoPreviewBackground))
|
|
XCTAssertEqual(second, theme.colorForType(.RoundedButtonText))
|
|
XCTAssertEqual(first, theme.colorForType(.RoundedPositiveButtonBackground))
|
|
XCTAssertEqual(second, theme.colorForType(.RoundedNegativeButtonBackground))
|
|
XCTAssertEqual(first, theme.colorForType(.EmptyScreenPlaceholderText))
|
|
XCTAssertEqual(second, theme.colorForType(.FileImageBackgroundActive))
|
|
XCTAssertEqual(first, theme.colorForType(.FileImageCancelledText))
|
|
XCTAssertEqual(second, theme.colorForType(.FileImageAcceptButtonTint))
|
|
XCTAssertEqual(first, theme.colorForType(.FileImageCancelButtonTint))
|
|
XCTAssertEqual(second, theme.colorForType(.LockGradientTop))
|
|
XCTAssertEqual(first, theme.colorForType(.LockGradientBottom))
|
|
}
|
|
catch let error as ErrorTheme {
|
|
XCTFail(error.debugDescription())
|
|
}
|
|
catch {
|
|
XCTFail("Theme init failed for unknown reason")
|
|
}
|
|
}
|
|
|
|
func testVersionToHight() {
|
|
let string =
|
|
"version: 2\n" +
|
|
"colors:\n" +
|
|
" first: \"AABBCC\"\n" +
|
|
"values:\n" +
|
|
" login-background: first\n"
|
|
|
|
var didThrow = false
|
|
|
|
do {
|
|
let _ = try Theme(yamlString: string)
|
|
}
|
|
catch ErrorTheme.wrongVersion(let description) {
|
|
didThrow = description == String(localized: "theme_error_cannot_open")
|
|
}
|
|
catch {
|
|
didThrow = false
|
|
}
|
|
|
|
XCTAssertTrue(didThrow)
|
|
}
|
|
|
|
func testVersionToLow() {
|
|
let string =
|
|
"version: 0\n" +
|
|
"colors:\n" +
|
|
" first: \"AABBCC\"\n" +
|
|
"values:\n" +
|
|
" login-background: first\n"
|
|
|
|
var didThrow = false
|
|
|
|
do {
|
|
let _ = try Theme(yamlString: string)
|
|
}
|
|
catch ErrorTheme.wrongVersion(let description) {
|
|
didThrow = description == String(localized: "theme_error_cannot_open")
|
|
}
|
|
catch {
|
|
didThrow = false
|
|
}
|
|
|
|
XCTAssertTrue(didThrow)
|
|
}
|
|
}
|