From d66055819548276bf4f02fec37e19cbbe837d0a7 Mon Sep 17 00:00:00 2001 From: Abhishek Banthia <8280282+n0shake@users.noreply.github.com> Date: Tue, 29 Mar 2022 19:05:51 -0400 Subject: [PATCH] Refactoring.. --- Clocker/ClockerUnitTests/ThemerTests.swift | 531 +++++++++------------ 1 file changed, 224 insertions(+), 307 deletions(-) diff --git a/Clocker/ClockerUnitTests/ThemerTests.swift b/Clocker/ClockerUnitTests/ThemerTests.swift index 8b1a734..81c1d65 100644 --- a/Clocker/ClockerUnitTests/ThemerTests.swift +++ b/Clocker/ClockerUnitTests/ThemerTests.swift @@ -5,346 +5,263 @@ import XCTest @testable import Clocker class ThemerTests: XCTestCase { + private struct ThemeExpectations { + // Colors + let expectedSliderKnobColor: NSColor + let expectedSliderRightColor: NSColor + let expectedBackgroundColor: NSColor + let expectedTextColor: NSColor + let expectedTextBackgroundColor: NSColor + // Popover Appearance + let expectedPopoverApperarance: NSAppearance + // Images + let expectedShutdownImageName: String + let expectedPreferenceImageName: String + let expectedPinImageName: String + let expectedSunriseImageName: String + let expectedSunsetImageName: String + let expectedRemoveImageName: String + let expectedExtraOptionsImage: String + let expectedMenubarOnboardingImage: String + let expectedExtraOptionsHighlightedImage: String + let expectedSharingImage: String + let expectedCurrentLocationImage: String + let expectedAddImage: String + let expectedAddImageHighlighted: String + let expectedPrivacyTabImage: String + let expectedAppearanceTabImage: String + let expectedCalendarTabImage: String + let expectedGeneralTabImage: String + let expectedAboutTabImage: String + let expectedVideoCallImage: String + let expectedFilledTrashImage: String + let expectedBackwardsImage: String + let expectedForwardsImage: String + let expectedResetSliderImage: String + } + @available(macOS 10.14, *) func testSettingTheme() { // Set to some random number should set to 0 let subject = Themer(index: 124) XCTAssertEqual(NSAppearance(named: .aqua), NSAppearance(named: .aqua)) - + // Set the same theme; this should return early subject.set(theme: 0) - + // Set the theme to dark theme subject.set(theme: 1) let expectedApperance = NSAppearance(named: .darkAqua) XCTAssertEqual(expectedApperance, NSApp.appearance) } - + func testLightTheme() throws { let subject = Themer(index: 0) // 0 is for light theme - let expectedSliderKnobColor = NSColor(deviceRed: 255.0, green: 255.0, blue: 255, alpha: 0.9) - let expectedSliderRightColor = NSColor.gray - let expectedBackgroundColor = NSColor.white - let expectedTextColor = NSColor.black - let expectedTextBackgroundColor = NSColor(deviceRed: 241.0 / 255.0, green: 241.0 / 255.0, blue: 241.0 / 255.0, alpha: 1.0) - - let expectedShutdownImageName = "ellipsis.circle" - let expectedPreferenceImageName = "plus" - let expectedPinImageName = "macwindow.on.rectangle" - let expectedSunriseImageName = "sunrise.fill" - let expectedSunsetImageName = "sunset.fill" - let expectedRemoveImageName = "xmark" - let expectedExtraOptionsImage = "Extra" - let expectedMenubarOnboardingImage = "Light Menubar" - let expectedExtraOptionsHighlightedImage = "ExtraHighlighted" - let expectedSharingImage = "square.and.arrow.up.on.square.fill" - let expectedCurrentLocationImage = "location.fill" - let expectedPopoverApperarance = NSAppearance(named: NSAppearance.Name.vibrantLight)! - let expectedAddImage = "plus" - let expectedAddImageHighlighted = "Add Highlighted" - let expectedPrivacyTabImage = "lock" - let expectedAppearanceTabImage = "eye" - let expectedCalendarTabImage = "calendar" - let expectedGeneralTabImage = "gearshape" - let expectedAboutTabImage = "info.circle" - let expectedVideoCallImage = "video.circle.fill" - let expectedFilledTrashImage = "trash.fill" - let expectedBackwardsImage = "gobackward.15" - let expectedForwardsImage = "goforward.15" - let expectedResetSliderImage = "xmark.circle.fill" - - XCTAssertEqual(subject.sliderKnobColor(), expectedSliderKnobColor) - XCTAssertEqual(subject.sliderRightColor(), expectedSliderRightColor) - XCTAssertEqual(subject.mainBackgroundColor(), expectedBackgroundColor) - XCTAssertEqual(subject.mainTextColor(), expectedTextColor) - XCTAssertEqual(subject.textBackgroundColor(), expectedTextBackgroundColor) - - XCTAssertEqual(subject.shutdownImage().accessibilityDescription, expectedShutdownImageName) - XCTAssertEqual(subject.preferenceImage().accessibilityDescription, expectedPreferenceImageName) - XCTAssertEqual(subject.pinImage().accessibilityDescription, expectedPinImageName) - XCTAssertEqual(subject.sunriseImage().accessibilityDescription, expectedSunriseImageName) - XCTAssertEqual(subject.sunsetImage().accessibilityDescription, expectedSunsetImageName) - XCTAssertEqual(subject.removeImage().accessibilityDescription, expectedRemoveImageName) - XCTAssertEqual(subject.extraOptionsImage().name(), expectedExtraOptionsImage) - XCTAssertEqual(subject.menubarOnboardingImage().name(), expectedMenubarOnboardingImage) - XCTAssertEqual(subject.extraOptionsHighlightedImage().name(), expectedExtraOptionsHighlightedImage) - XCTAssertEqual(subject.sharingImage().accessibilityDescription, expectedSharingImage) - XCTAssertEqual(subject.currentLocationImage().accessibilityDescription, expectedCurrentLocationImage) - XCTAssertEqual(subject.popoverAppearance(), expectedPopoverApperarance) - - XCTAssertEqual(subject.addImage().accessibilityDescription, expectedAddImage) - XCTAssertEqual(subject.addImageHighlighted().name(), expectedAddImageHighlighted) - XCTAssertEqual(subject.privacyTabImage().accessibilityDescription, expectedPrivacyTabImage) - XCTAssertEqual(subject.appearanceTabImage().accessibilityDescription, expectedAppearanceTabImage) - XCTAssertEqual(subject.calendarTabImage().accessibilityDescription, expectedCalendarTabImage) - XCTAssertEqual(subject.generalTabImage()?.accessibilityDescription, expectedGeneralTabImage) - XCTAssertEqual(subject.aboutTabImage()?.accessibilityDescription, expectedAboutTabImage) - XCTAssertEqual(subject.videoCallImage()?.accessibilityDescription, expectedVideoCallImage) - XCTAssertEqual(subject.filledTrashImage()?.accessibilityDescription, expectedFilledTrashImage) - XCTAssertEqual(subject.goBackwardsImage()?.accessibilityDescription, expectedBackwardsImage) - XCTAssertEqual(subject.goForwardsImage()?.accessibilityDescription, expectedForwardsImage) - XCTAssertEqual(subject.resetModernSliderImage()?.accessibilityDescription, expectedResetSliderImage) + let expectedThemeElements = ThemeExpectations(expectedSliderKnobColor: NSColor(deviceRed: 255.0, green: 255.0, blue: 255, alpha: 0.9), + expectedSliderRightColor: NSColor.gray, expectedBackgroundColor: NSColor.white, + expectedTextColor: NSColor.black, + expectedTextBackgroundColor: NSColor(deviceRed: 241.0 / 255.0, green: 241.0 / 255.0, blue: 241.0 / 255.0, alpha: 1.0), + expectedPopoverApperarance: NSAppearance(named: NSAppearance.Name.vibrantLight)!, + expectedShutdownImageName: "ellipsis.circle", + expectedPreferenceImageName: "plus", + expectedPinImageName: "macwindow.on.rectangle", + expectedSunriseImageName: "sunrise.fill", + expectedSunsetImageName: "sunset.fill", + expectedRemoveImageName: "xmark", + expectedExtraOptionsImage: "Extra", + expectedMenubarOnboardingImage: "Light Menubar", + expectedExtraOptionsHighlightedImage: "ExtraHighlighted", + expectedSharingImage: "square.and.arrow.up.on.square.fill", + expectedCurrentLocationImage: "location.fill", + expectedAddImage: "plus", + expectedAddImageHighlighted: "Add Highlighted", + expectedPrivacyTabImage: "lock", + expectedAppearanceTabImage: "eye", + expectedCalendarTabImage: "calendar", + expectedGeneralTabImage: "gearshape", + expectedAboutTabImage: "info.circle", + expectedVideoCallImage: "video.circle.fill", + expectedFilledTrashImage: "trash.fill", + expectedBackwardsImage: "gobackward.15", + expectedForwardsImage: "goforward.15", + expectedResetSliderImage: "xmark.circle.fill") + testSubject(subject: subject, withExpectatations: expectedThemeElements) } - + func testDarkTheme() throws { let subject = Themer(index: 1) // 1 is for dark theme - let expectedSliderKnobColor = NSColor(deviceRed: 0.0, green: 0.0, blue: 0, alpha: 0.9) - let expectedSliderRightColor = NSColor.white - let expectedBackgroundColor = NSColor(deviceRed: 42.0 / 255.0, green: 42.0 / 255.0, blue: 42.0 / 255.0, alpha: 1.0) - let expectedTextColor = NSColor.white - let expectedTextBackgroundColor = NSColor(deviceRed: 42.0 / 255.0, green: 55.0 / 255.0, blue: 62.0 / 255.0, alpha: 1.0) - - let expectedShutdownImageName = "ellipsis.circle" - let expectedPreferenceImageName = "plus" - let expectedPinImageName = "macwindow.on.rectangle" - let expectedSunriseImageName = "sunrise.fill" - let expectedSunsetImageName = "sunset.fill" - let expectedRemoveImageName = "xmark" - let expectedExtraOptionsImage = "ExtraWhite" - let expectedMenubarOnboardingImage = "Dark Menubar" - let expectedExtraOptionsHighlightedImage = "ExtraWhiteHighlighted" - let expectedSharingImage = "square.and.arrow.up.on.square.fill" - let expectedCurrentLocationImage = "location.fill" - let expectedPopoverApperarance = NSAppearance(named: NSAppearance.Name.vibrantDark)! - let expectedAddImage = "plus" - let expectedAddImageHighlighted = "Add White" - let expectedPrivacyTabImage = "lock" - let expectedAppearanceTabImage = "eye" - let expectedCalendarTabImage = "calendar" - let expectedGeneralTabImage = "gearshape" - let expectedAboutTabImage = "info.circle" - let expectedVideoCallImage = "video.circle.fill" - let expectedFilledTrashImage = "trash.fill" - let expectedBackwardsImage = "gobackward.15" - let expectedForwardsImage = "goforward.15" - let expectedResetSliderImage = "xmark.circle.fill" - - XCTAssertEqual(subject.sliderKnobColor(), expectedSliderKnobColor) - XCTAssertEqual(subject.sliderRightColor(), expectedSliderRightColor) - XCTAssertEqual(subject.mainBackgroundColor(), expectedBackgroundColor) - XCTAssertEqual(subject.mainTextColor(), expectedTextColor) - XCTAssertEqual(subject.textBackgroundColor(), expectedTextBackgroundColor) - XCTAssertEqual(subject.shutdownImage().accessibilityDescription, expectedShutdownImageName) - XCTAssertEqual(subject.preferenceImage().accessibilityDescription, expectedPreferenceImageName) - XCTAssertEqual(subject.pinImage().accessibilityDescription, expectedPinImageName) - XCTAssertEqual(subject.sunriseImage().accessibilityDescription, expectedSunriseImageName) - XCTAssertEqual(subject.sunsetImage().accessibilityDescription, expectedSunsetImageName) - XCTAssertEqual(subject.removeImage().accessibilityDescription, expectedRemoveImageName) - XCTAssertEqual(subject.extraOptionsImage().name(), expectedExtraOptionsImage) - XCTAssertEqual(subject.menubarOnboardingImage().name(), expectedMenubarOnboardingImage) - XCTAssertEqual(subject.extraOptionsHighlightedImage().name(), expectedExtraOptionsHighlightedImage) - XCTAssertEqual(subject.sharingImage().accessibilityDescription, expectedSharingImage) - XCTAssertEqual(subject.currentLocationImage().accessibilityDescription, expectedCurrentLocationImage) - XCTAssertEqual(subject.popoverAppearance(), expectedPopoverApperarance) - XCTAssertEqual(subject.addImage().accessibilityDescription, expectedAddImage) - XCTAssertEqual(subject.addImageHighlighted().name(), expectedAddImageHighlighted) - XCTAssertEqual(subject.privacyTabImage().accessibilityDescription, expectedPrivacyTabImage) - XCTAssertEqual(subject.appearanceTabImage().accessibilityDescription, expectedAppearanceTabImage) - XCTAssertEqual(subject.calendarTabImage().accessibilityDescription, expectedCalendarTabImage) - XCTAssertEqual(subject.generalTabImage()?.accessibilityDescription, expectedGeneralTabImage) - XCTAssertEqual(subject.aboutTabImage()?.accessibilityDescription, expectedAboutTabImage) - XCTAssertEqual(subject.videoCallImage()?.accessibilityDescription, expectedVideoCallImage) - XCTAssertEqual(subject.filledTrashImage()?.accessibilityDescription, expectedFilledTrashImage) - XCTAssertEqual(subject.goBackwardsImage()?.accessibilityDescription, expectedBackwardsImage) - XCTAssertEqual(subject.goForwardsImage()?.accessibilityDescription, expectedForwardsImage) - XCTAssertEqual(subject.resetModernSliderImage()?.accessibilityDescription, expectedResetSliderImage) + let expectedThemeElements = ThemeExpectations(expectedSliderKnobColor: NSColor(deviceRed: 0.0, green: 0.0, blue: 0, alpha: 0.9), + expectedSliderRightColor: NSColor.white, + expectedBackgroundColor: NSColor(deviceRed: 42.0 / 255.0, green: 42.0 / 255.0, blue: 42.0 / 255.0, alpha: 1.0), + expectedTextColor: NSColor.white, + expectedTextBackgroundColor: NSColor(deviceRed: 42.0 / 255.0, green: 55.0 / 255.0, blue: 62.0 / 255.0, alpha: 1.0), + expectedPopoverApperarance: NSAppearance(named: NSAppearance.Name.vibrantDark)!, + expectedShutdownImageName: "ellipsis.circle", + expectedPreferenceImageName: "plus", + expectedPinImageName: "macwindow.on.rectangle", + expectedSunriseImageName: "sunrise.fill", + expectedSunsetImageName: "sunset.fill", + expectedRemoveImageName: "xmark", + expectedExtraOptionsImage: "ExtraWhite", + expectedMenubarOnboardingImage: "Dark Menubar", + expectedExtraOptionsHighlightedImage: "ExtraWhiteHighlighted", + expectedSharingImage: "square.and.arrow.up.on.square.fill", + expectedCurrentLocationImage: "location.fill", + expectedAddImage: "plus", + expectedAddImageHighlighted: "Add White", + expectedPrivacyTabImage: "lock", + expectedAppearanceTabImage: "eye", + expectedCalendarTabImage: "calendar", + expectedGeneralTabImage: "gearshape", + expectedAboutTabImage: "info.circle", + expectedVideoCallImage: "video.circle.fill", + expectedFilledTrashImage: "trash.fill", + expectedBackwardsImage: "gobackward.15", + expectedForwardsImage: "goforward.15", + expectedResetSliderImage: "xmark.circle.fill") + testSubject(subject: subject, withExpectatations: expectedThemeElements) XCTAssertEqual(subject.description, "Current Theme is \(Themer.Theme.dark)") } - + func testSystemTheme() throws { let currentSystemTheme = - UserDefaults.standard.string(forKey: "AppleInterfaceStyle")?.lowercased().contains("dark") ?? false ? Themer.Theme.dark : Themer.Theme.light + UserDefaults.standard.string(forKey: "AppleInterfaceStyle")?.lowercased().contains("dark") ?? false ? Themer.Theme.dark : Themer.Theme.light let subject = Themer(index: 2) // 2 is for system theme let expectedSliderKnobColor = currentSystemTheme == .light ? NSColor(deviceRed: 255.0, green: 255.0, blue: 255, alpha: 0.9) : NSColor(deviceRed: 0.0, green: 0.0, blue: 0, alpha: 0.9) let expectedSliderRightColor = currentSystemTheme == .dark ? NSColor.white : NSColor.gray let expectedBackgroundColor = currentSystemTheme == .dark ? NSColor.windowBackgroundColor : NSColor.white let expectedTextColor = NSColor.textColor let expectedTextBackgroundColor = currentSystemTheme == .light ? NSColor(deviceRed: 241.0 / 255.0, green: 241.0 / 255.0, blue: 241.0 / 255.0, alpha: 1.0) : NSColor.controlBackgroundColor - - let expectedShutdownImageName = "ellipsis.circle" - let expectedPreferenceImageName = "plus" - let expectedPinImageName = "macwindow.on.rectangle" - let expectedSunriseImageName = "sunrise.fill" - let expectedSunsetImageName = "sunset.fill" - let expectedRemoveImageName = "xmark" - let expectedExtraOptionsImage = "Extra Dynamic" - let expectedMenubarOnboardingImage = "Dynamic Menubar" - let expectedExtraOptionsHighlightedImage = "ExtraHighlighted Dynamic" - let expectedSharingImage = "square.and.arrow.up.on.square.fill" - let expectedCurrentLocationImage = "location.fill" - let expectedPopoverApperarance = NSAppearance.current - let expectedAddImage = "plus" - let expectedAddImageHighlighted = "Add White" - let expectedPrivacyTabImage = "lock" - let expectedAppearanceTabImage = "eye" - let expectedCalendarTabImage = "calendar" - let expectedGeneralTabImage = "gearshape" - let expectedAboutTabImage = "info.circle" - let expectedVideoCallImage = "video.circle.fill" - let expectedFilledTrashImage = "trash.fill" - let expectedBackwardsImage = "gobackward.15" - let expectedForwardsImage = "goforward.15" - let expectedResetSliderImage = "xmark.circle.fill" - - XCTAssertEqual(subject.sliderKnobColor(), expectedSliderKnobColor) - XCTAssertEqual(subject.sliderRightColor(), expectedSliderRightColor) - XCTAssertEqual(subject.mainBackgroundColor(), expectedBackgroundColor) - XCTAssertEqual(subject.mainTextColor(), expectedTextColor) - XCTAssertEqual(subject.textBackgroundColor(), expectedTextBackgroundColor) - XCTAssertEqual(subject.shutdownImage().accessibilityDescription, expectedShutdownImageName) - XCTAssertEqual(subject.preferenceImage().accessibilityDescription, expectedPreferenceImageName) - XCTAssertEqual(subject.pinImage().accessibilityDescription, expectedPinImageName) - XCTAssertEqual(subject.sunriseImage().accessibilityDescription, expectedSunriseImageName) - XCTAssertEqual(subject.sunsetImage().accessibilityDescription, expectedSunsetImageName) - XCTAssertEqual(subject.removeImage().accessibilityDescription, expectedRemoveImageName) - XCTAssertEqual(subject.extraOptionsImage().name(), expectedExtraOptionsImage) - XCTAssertEqual(subject.menubarOnboardingImage().name(), expectedMenubarOnboardingImage) - XCTAssertEqual(subject.extraOptionsHighlightedImage().name(), expectedExtraOptionsHighlightedImage) - XCTAssertEqual(subject.sharingImage().accessibilityDescription, expectedSharingImage) - XCTAssertEqual(subject.currentLocationImage().accessibilityDescription, expectedCurrentLocationImage) - XCTAssertEqual(subject.popoverAppearance(), expectedPopoverApperarance) - XCTAssertEqual(subject.addImage().accessibilityDescription, expectedAddImage) - XCTAssertEqual(subject.addImageHighlighted().name(), expectedAddImageHighlighted) - XCTAssertEqual(subject.privacyTabImage().accessibilityDescription, expectedPrivacyTabImage) - XCTAssertEqual(subject.appearanceTabImage().accessibilityDescription, expectedAppearanceTabImage) - XCTAssertEqual(subject.calendarTabImage().accessibilityDescription, expectedCalendarTabImage) - XCTAssertEqual(subject.generalTabImage()?.accessibilityDescription, expectedGeneralTabImage) - XCTAssertEqual(subject.aboutTabImage()?.accessibilityDescription, expectedAboutTabImage) - XCTAssertEqual(subject.videoCallImage()?.accessibilityDescription, expectedVideoCallImage) - XCTAssertEqual(subject.filledTrashImage()?.accessibilityDescription, expectedFilledTrashImage) - XCTAssertEqual(subject.goBackwardsImage()?.accessibilityDescription, expectedBackwardsImage) - XCTAssertEqual(subject.goForwardsImage()?.accessibilityDescription, expectedForwardsImage) - XCTAssertEqual(subject.resetModernSliderImage()?.accessibilityDescription, expectedResetSliderImage) + let expectedThemeElements = ThemeExpectations(expectedSliderKnobColor: expectedSliderKnobColor, + expectedSliderRightColor: expectedSliderRightColor, + expectedBackgroundColor: expectedBackgroundColor, + expectedTextColor: expectedTextColor, + expectedTextBackgroundColor: expectedTextBackgroundColor, + expectedPopoverApperarance: NSAppearance.current!, + expectedShutdownImageName: "ellipsis.circle", + expectedPreferenceImageName: "plus", + expectedPinImageName: "macwindow.on.rectangle", + expectedSunriseImageName: "sunrise.fill", + expectedSunsetImageName: "sunset.fill", + expectedRemoveImageName: "xmark", + expectedExtraOptionsImage: "Extra Dynamic", + expectedMenubarOnboardingImage: "Dynamic Menubar", + expectedExtraOptionsHighlightedImage: "ExtraHighlighted Dynamic", + expectedSharingImage: "square.and.arrow.up.on.square.fill", + expectedCurrentLocationImage: "location.fill", + expectedAddImage: "plus", + expectedAddImageHighlighted: "Add White", + expectedPrivacyTabImage: "lock", + expectedAppearanceTabImage: "eye", + expectedCalendarTabImage: "calendar", + expectedGeneralTabImage: "gearshape", + expectedAboutTabImage: "info.circle", + expectedVideoCallImage: "video.circle.fill", + expectedFilledTrashImage: "trash.fill", + expectedBackwardsImage: "gobackward.15", + expectedForwardsImage: "goforward.15", + expectedResetSliderImage: "xmark.circle.fill") + testSubject(subject: subject, withExpectatations: expectedThemeElements) XCTAssertEqual(subject.description, "System Theme is \(currentSystemTheme == .dark ? Themer.Theme.dark : Themer.Theme.light)") } - + func testSolarizedLightTheme() throws { let subject = Themer(index: 3) // 3 is for solarized light theme - let expectedSliderKnobColor = NSColor(deviceRed: 255.0, green: 255.0, blue: 255, alpha: 0.9) - let expectedSliderRightColor = NSColor.gray - let expectedBackgroundColor = NSColor(deviceRed: 253.0 / 255.0, green: 246.0 / 255.0, blue: 227.0 / 255.0, alpha: 1.0) - let expectedTextColor = NSColor.black - let expectedTextBackgroundColor = NSColor(deviceRed: 238.0 / 255.0, green: 232.0 / 255.0, blue: 213.0 / 255.0, alpha: 1.0) - - let expectedShutdownImageName = "ellipsis.circle" - let expectedPreferenceImageName = "plus" - let expectedPinImageName = "macwindow.on.rectangle" - let expectedSunriseImageName = "sunrise.fill" - let expectedSunsetImageName = "sunset.fill" - let expectedRemoveImageName = "xmark" - let expectedExtraOptionsImage = "Extra" - let expectedMenubarOnboardingImage = "Light Menubar" - let expectedExtraOptionsHighlightedImage = "ExtraHighlighted" - let expectedSharingImage = "square.and.arrow.up.on.square.fill" - let expectedCurrentLocationImage = "location.fill" - let expectedPopoverApperarance = NSAppearance(named: NSAppearance.Name.vibrantLight)! - let expectedAddImage = "plus" - let expectedAddImageHighlighted = "Add White" - let expectedPrivacyTabImage = "lock" - let expectedAppearanceTabImage = "eye" - let expectedCalendarTabImage = "calendar" - let expectedGeneralTabImage = "gearshape" - let expectedAboutTabImage = "info.circle" - let expectedVideoCallImage = "video.circle.fill" - let expectedFilledTrashImage = "trash.fill" - let expectedBackwardsImage = "gobackward.15" - let expectedForwardsImage = "goforward.15" - let expectedResetSliderImage = "xmark.circle.fill" - - XCTAssertEqual(subject.sliderKnobColor(), expectedSliderKnobColor) - XCTAssertEqual(subject.sliderRightColor(), expectedSliderRightColor) - XCTAssertEqual(subject.mainBackgroundColor(), expectedBackgroundColor) - XCTAssertEqual(subject.mainTextColor(), expectedTextColor) - XCTAssertEqual(subject.textBackgroundColor(), expectedTextBackgroundColor) - - XCTAssertEqual(subject.shutdownImage().accessibilityDescription, expectedShutdownImageName) - XCTAssertEqual(subject.preferenceImage().accessibilityDescription, expectedPreferenceImageName) - XCTAssertEqual(subject.pinImage().accessibilityDescription, expectedPinImageName) - XCTAssertEqual(subject.sunriseImage().accessibilityDescription, expectedSunriseImageName) - XCTAssertEqual(subject.sunsetImage().accessibilityDescription, expectedSunsetImageName) - XCTAssertEqual(subject.removeImage().accessibilityDescription, expectedRemoveImageName) - XCTAssertEqual(subject.extraOptionsImage().name(), expectedExtraOptionsImage) - XCTAssertEqual(subject.menubarOnboardingImage().name(), expectedMenubarOnboardingImage) - XCTAssertEqual(subject.extraOptionsHighlightedImage().name(), expectedExtraOptionsHighlightedImage) - XCTAssertEqual(subject.sharingImage().accessibilityDescription, expectedSharingImage) - XCTAssertEqual(subject.currentLocationImage().accessibilityDescription, expectedCurrentLocationImage) - XCTAssertEqual(subject.popoverAppearance(), expectedPopoverApperarance) - - XCTAssertEqual(subject.addImage().accessibilityDescription, expectedAddImage) - XCTAssertEqual(subject.addImageHighlighted().name(), expectedAddImageHighlighted) - XCTAssertEqual(subject.privacyTabImage().accessibilityDescription, expectedPrivacyTabImage) - XCTAssertEqual(subject.appearanceTabImage().accessibilityDescription, expectedAppearanceTabImage) - XCTAssertEqual(subject.calendarTabImage().accessibilityDescription, expectedCalendarTabImage) - XCTAssertEqual(subject.generalTabImage()?.accessibilityDescription, expectedGeneralTabImage) - XCTAssertEqual(subject.aboutTabImage()?.accessibilityDescription, expectedAboutTabImage) - XCTAssertEqual(subject.videoCallImage()?.accessibilityDescription, expectedVideoCallImage) - XCTAssertEqual(subject.filledTrashImage()?.accessibilityDescription, expectedFilledTrashImage) - XCTAssertEqual(subject.goBackwardsImage()?.accessibilityDescription, expectedBackwardsImage) - XCTAssertEqual(subject.goForwardsImage()?.accessibilityDescription, expectedForwardsImage) - XCTAssertEqual(subject.resetModernSliderImage()?.accessibilityDescription, expectedResetSliderImage) + let expectedThemeElements = ThemeExpectations(expectedSliderKnobColor: NSColor(deviceRed: 255.0, green: 255.0, blue: 255, alpha: 0.9), + expectedSliderRightColor: NSColor.gray, + expectedBackgroundColor: NSColor(deviceRed: 253.0 / 255.0, green: 246.0 / 255.0, blue: 227.0 / 255.0, alpha: 1.0), + expectedTextColor: NSColor.black, + expectedTextBackgroundColor: NSColor(deviceRed: 238.0 / 255.0, green: 232.0 / 255.0, blue: 213.0 / 255.0, alpha: 1.0), + expectedPopoverApperarance: NSAppearance(named: NSAppearance.Name.vibrantLight)!, + expectedShutdownImageName: "ellipsis.circle", + expectedPreferenceImageName: "plus", + expectedPinImageName: "macwindow.on.rectangle", + expectedSunriseImageName: "sunrise.fill", + expectedSunsetImageName: "sunset.fill", + expectedRemoveImageName: "xmark", + expectedExtraOptionsImage: "Extra", + expectedMenubarOnboardingImage: "Light Menubar", + expectedExtraOptionsHighlightedImage: "ExtraHighlighted", + expectedSharingImage: "square.and.arrow.up.on.square.fill", + expectedCurrentLocationImage: "location.fill", + expectedAddImage: "plus", + expectedAddImageHighlighted: "Add White", + expectedPrivacyTabImage: "lock", + expectedAppearanceTabImage: "eye", + expectedCalendarTabImage: "calendar", + expectedGeneralTabImage: "gearshape", + expectedAboutTabImage: "info.circle", + expectedVideoCallImage: "video.circle.fill", + expectedFilledTrashImage: "trash.fill", + expectedBackwardsImage: "gobackward.15", + expectedForwardsImage: "goforward.15", + expectedResetSliderImage: "xmark.circle.fill") + testSubject(subject: subject, withExpectatations: expectedThemeElements) } - + func testSolarizedDarkTheme() throws { let subject = Themer(index: 4) // 4 is for solarized dark theme - let expectedSliderKnobColor = NSColor(deviceRed: 0.0, green: 0.0, blue: 0, alpha: 0.9) - let expectedSliderRightColor = NSColor.gray - let expectedBackgroundColor = NSColor(deviceRed: 7.0 / 255.0, green: 54.0 / 255.0, blue: 66.0 / 255.0, alpha: 1.0) - let expectedTextColor = NSColor.white - let expectedTextBackgroundColor = NSColor(deviceRed: 0.0 / 255.0, green: 43.0 / 255.0, blue: 54.0 / 255.0, alpha: 1.0) - - let expectedShutdownImageName = "ellipsis.circle" - let expectedPreferenceImageName = "plus" - let expectedPinImageName = "macwindow.on.rectangle" - let expectedSunriseImageName = "sunrise.fill" - let expectedSunsetImageName = "sunset.fill" - let expectedRemoveImageName = "xmark" - let expectedExtraOptionsImage = "ExtraWhite" - let expectedMenubarOnboardingImage = "Dark Menubar" - let expectedExtraOptionsHighlightedImage = "ExtraWhiteHighlighted" - let expectedSharingImage = "square.and.arrow.up.on.square.fill" - let expectedCurrentLocationImage = "location.fill" - let expectedPopoverApperarance = NSAppearance(named: NSAppearance.Name.vibrantDark)! - let expectedAddImage = "plus" - let expectedAddImageHighlighted = "Add White" - let expectedPrivacyTabImage = "lock" - let expectedAppearanceTabImage = "eye" - let expectedCalendarTabImage = "calendar" - let expectedGeneralTabImage = "gearshape" - let expectedAboutTabImage = "info.circle" - let expectedVideoCallImage = "video.circle.fill" - let expectedFilledTrashImage = "trash.fill" - let expectedBackwardsImage = "gobackward.15" - let expectedForwardsImage = "goforward.15" - let expectedResetSliderImage = "xmark.circle.fill" - - XCTAssertEqual(subject.sliderKnobColor(), expectedSliderKnobColor) - XCTAssertEqual(subject.sliderRightColor(), expectedSliderRightColor) - XCTAssertEqual(subject.mainBackgroundColor(), expectedBackgroundColor) - XCTAssertEqual(subject.mainTextColor(), expectedTextColor) - XCTAssertEqual(subject.textBackgroundColor(), expectedTextBackgroundColor) - XCTAssertEqual(subject.shutdownImage().accessibilityDescription, expectedShutdownImageName) - XCTAssertEqual(subject.preferenceImage().accessibilityDescription, expectedPreferenceImageName) - XCTAssertEqual(subject.pinImage().accessibilityDescription, expectedPinImageName) - XCTAssertEqual(subject.sunriseImage().accessibilityDescription, expectedSunriseImageName) - XCTAssertEqual(subject.sunsetImage().accessibilityDescription, expectedSunsetImageName) - XCTAssertEqual(subject.removeImage().accessibilityDescription, expectedRemoveImageName) - XCTAssertEqual(subject.extraOptionsImage().name(), expectedExtraOptionsImage) - XCTAssertEqual(subject.menubarOnboardingImage().name(), expectedMenubarOnboardingImage) - XCTAssertEqual(subject.extraOptionsHighlightedImage().name(), expectedExtraOptionsHighlightedImage) - XCTAssertEqual(subject.sharingImage().accessibilityDescription, expectedSharingImage) - XCTAssertEqual(subject.currentLocationImage().accessibilityDescription, expectedCurrentLocationImage) - XCTAssertEqual(subject.popoverAppearance(), expectedPopoverApperarance) - XCTAssertEqual(subject.addImage().accessibilityDescription, expectedAddImage) - XCTAssertEqual(subject.addImageHighlighted().name(), expectedAddImageHighlighted) - XCTAssertEqual(subject.privacyTabImage().accessibilityDescription, expectedPrivacyTabImage) - XCTAssertEqual(subject.appearanceTabImage().accessibilityDescription, expectedAppearanceTabImage) - XCTAssertEqual(subject.calendarTabImage().accessibilityDescription, expectedCalendarTabImage) - XCTAssertEqual(subject.generalTabImage()?.accessibilityDescription, expectedGeneralTabImage) - XCTAssertEqual(subject.aboutTabImage()?.accessibilityDescription, expectedAboutTabImage) - XCTAssertEqual(subject.videoCallImage()?.accessibilityDescription, expectedVideoCallImage) - XCTAssertEqual(subject.filledTrashImage()?.accessibilityDescription, expectedFilledTrashImage) - XCTAssertEqual(subject.goBackwardsImage()?.accessibilityDescription, expectedBackwardsImage) - XCTAssertEqual(subject.goForwardsImage()?.accessibilityDescription, expectedForwardsImage) - XCTAssertEqual(subject.resetModernSliderImage()?.accessibilityDescription, expectedResetSliderImage) + let expectedThemeElements = ThemeExpectations(expectedSliderKnobColor: NSColor(deviceRed: 0.0, green: 0.0, blue: 0, alpha: 0.9), + expectedSliderRightColor: NSColor.gray, + expectedBackgroundColor: NSColor(deviceRed: 7.0 / 255.0, green: 54.0 / 255.0, blue: 66.0 / 255.0, alpha: 1.0), + expectedTextColor: NSColor.white, + expectedTextBackgroundColor: NSColor(deviceRed: 0.0 / 255.0, green: 43.0 / 255.0, blue: 54.0 / 255.0, alpha: 1.0), + expectedPopoverApperarance: NSAppearance(named: NSAppearance.Name.vibrantDark)!, + expectedShutdownImageName: "ellipsis.circle", + expectedPreferenceImageName: "plus", + expectedPinImageName: "macwindow.on.rectangle", + expectedSunriseImageName: "sunrise.fill", + expectedSunsetImageName: "sunset.fill", + expectedRemoveImageName: "xmark", + expectedExtraOptionsImage: "ExtraWhite", + expectedMenubarOnboardingImage: "Dark Menubar", + expectedExtraOptionsHighlightedImage: "ExtraWhiteHighlighted", + expectedSharingImage: "square.and.arrow.up.on.square.fill", + expectedCurrentLocationImage: "location.fill", + expectedAddImage: "plus", + expectedAddImageHighlighted: "Add White", + expectedPrivacyTabImage: "lock", + expectedAppearanceTabImage: "eye", + expectedCalendarTabImage: "calendar", + expectedGeneralTabImage: "gearshape", + expectedAboutTabImage: "info.circle", + expectedVideoCallImage: "video.circle.fill", + expectedFilledTrashImage: "trash.fill", + expectedBackwardsImage: "gobackward.15", + expectedForwardsImage: "goforward.15", + expectedResetSliderImage: "xmark.circle.fill") + testSubject(subject: subject, withExpectatations: expectedThemeElements) + } + + private func testSubject(subject: Themer, withExpectatations expectations: ThemeExpectations) { + XCTAssertEqual(subject.sliderKnobColor(), expectations.expectedSliderKnobColor) + XCTAssertEqual(subject.sliderRightColor(), expectations.expectedSliderRightColor) + XCTAssertEqual(subject.mainBackgroundColor(), expectations.expectedBackgroundColor) + XCTAssertEqual(subject.mainTextColor(), expectations.expectedTextColor) + XCTAssertEqual(subject.textBackgroundColor(), expectations.expectedTextBackgroundColor) + XCTAssertEqual(subject.shutdownImage().accessibilityDescription, expectations.expectedShutdownImageName) + XCTAssertEqual(subject.preferenceImage().accessibilityDescription, expectations.expectedPreferenceImageName) + XCTAssertEqual(subject.pinImage().accessibilityDescription, expectations.expectedPinImageName) + XCTAssertEqual(subject.sunriseImage().accessibilityDescription, expectations.expectedSunriseImageName) + XCTAssertEqual(subject.sunsetImage().accessibilityDescription, expectations.expectedSunsetImageName) + XCTAssertEqual(subject.removeImage().accessibilityDescription, expectations.expectedRemoveImageName) + XCTAssertEqual(subject.extraOptionsImage().name(), expectations.expectedExtraOptionsImage) + XCTAssertEqual(subject.menubarOnboardingImage().name(), expectations.expectedMenubarOnboardingImage) + XCTAssertEqual(subject.extraOptionsHighlightedImage().name(), expectations.expectedExtraOptionsHighlightedImage) + XCTAssertEqual(subject.sharingImage().accessibilityDescription, expectations.expectedSharingImage) + XCTAssertEqual(subject.currentLocationImage().accessibilityDescription, expectations.expectedCurrentLocationImage) + XCTAssertEqual(subject.popoverAppearance(), expectations.expectedPopoverApperarance) + XCTAssertEqual(subject.addImage().accessibilityDescription, expectations.expectedAddImage) + XCTAssertEqual(subject.addImageHighlighted().name(), expectations.expectedAddImageHighlighted) + XCTAssertEqual(subject.privacyTabImage().accessibilityDescription, expectations.expectedPrivacyTabImage) + XCTAssertEqual(subject.appearanceTabImage().accessibilityDescription, expectations.expectedAppearanceTabImage) + XCTAssertEqual(subject.calendarTabImage().accessibilityDescription, expectations.expectedCalendarTabImage) + XCTAssertEqual(subject.generalTabImage()?.accessibilityDescription, expectations.expectedGeneralTabImage) + XCTAssertEqual(subject.aboutTabImage()?.accessibilityDescription, expectations.expectedAboutTabImage) + XCTAssertEqual(subject.videoCallImage()?.accessibilityDescription, expectations.expectedVideoCallImage) + XCTAssertEqual(subject.filledTrashImage()?.accessibilityDescription, expectations.expectedFilledTrashImage) + XCTAssertEqual(subject.goBackwardsImage()?.accessibilityDescription, expectations.expectedBackwardsImage) + XCTAssertEqual(subject.goForwardsImage()?.accessibilityDescription, expectations.expectedForwardsImage) + XCTAssertEqual(subject.resetModernSliderImage()?.accessibilityDescription, expectations.expectedResetSliderImage) } }