From c83198f6c698acf099800cb39da5fa37fd9c435f Mon Sep 17 00:00:00 2001 From: Pierre-Yves Lapersonne Date: Thu, 20 Feb 2025 11:12:29 +0100 Subject: [PATCH] refactor: tests for override of semantic tokens for opacity (#340) Signed-off-by: Pierre-Yves Lapersonne --- ...ThemeOverrideOfOpacitySemanticTokens.swift | 69 ------------------- ...meOverrideOfGridSemanticTokensTests.swift} | 2 +- ...OverrideOfOpacitySemanticTokensTests.swift | 63 +++++++++++++++++ 3 files changed, 64 insertions(+), 70 deletions(-) delete mode 100644 OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/TestThemeOverrideOfOpacitySemanticTokens.swift rename OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/{TestThemeOverrideOfGridSemanticTokens.swift => ThemeOverrideOfGridSemanticTokensTests.swift} (99%) create mode 100644 OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/ThemeOverrideOfOpacitySemanticTokensTests.swift diff --git a/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/TestThemeOverrideOfOpacitySemanticTokens.swift b/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/TestThemeOverrideOfOpacitySemanticTokens.swift deleted file mode 100644 index 93a6001157..0000000000 --- a/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/TestThemeOverrideOfOpacitySemanticTokens.swift +++ /dev/null @@ -1,69 +0,0 @@ -// -// Software Name: OUDS iOS -// SPDX-FileCopyrightText: Copyright (c) Orange SA -// SPDX-License-Identifier: MIT -// -// This software is distributed under the MIT license, -// the text of which is available at https://opensource.org/license/MIT/ -// or see the "LICENSE" file for more details. -// -// Authors: See CONTRIBUTORS.txt -// Software description: A SwiftUI components library with code examples for Orange Unified Design System -// - -import OUDS -import OUDSThemesOrange -import XCTest - -// swiftlint:disable required_deinit -// swiftlint:disable implicitly_unwrapped_optional - -/// The architecture of _OUDS iOS_ _Swift package_ library is based on _object oriented paradigm_ and overriding of classes. -/// In factn the `OUDSTheme` object is a class, which can be seens as an _asbtract class_, exposing through its extensions and protocols _opacity semantic tokens_. -/// These semantic tokens should be overridable by subclasses like the ``OrangeThemeOpacitySemanticTokensProvider``. -/// -/// **These tests checks if any _opacity semantic tokens_ can be surcharged by a child theme** -/// **Also, it can help to find removed or renamed tokens by having tests no more compilable** -final class TestThemeOverrideOfOpacitySemanticTokens: XCTestCase { - - private var abstractTheme: OUDSTheme! - private var inheritedTheme: OUDSTheme! - - override func setUp() async throws { - abstractTheme = OrangeTheme() - inheritedTheme = MockTheme() - } - - func testInheritedThemeCanOverrideSemanticTokenOpacityInvisible() throws { - XCTAssertNotEqual(inheritedTheme.opacities.opacityInvisible, abstractTheme.opacities.opacityInvisible) - XCTAssertTrue(inheritedTheme.opacities.opacityInvisible == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) - } - - func testInheritedThemeCanOverrideSemanticTokenOpacityWeaker() throws { - XCTAssertNotEqual(inheritedTheme.opacities.opacityWeaker, abstractTheme.opacities.opacityWeaker) - XCTAssertTrue(inheritedTheme.opacities.opacityWeaker == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) - } - - func testInheritedThemeCanOverrideSemanticTokenOpacityWeak() throws { - XCTAssertNotEqual(inheritedTheme.opacities.opacityWeak, abstractTheme.opacities.opacityWeak) - XCTAssertTrue(inheritedTheme.opacities.opacityWeak == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) - } - - func testInheritedThemeCanOverrideSemanticTokenOpacityMedium() throws { - XCTAssertNotEqual(inheritedTheme.opacities.opacityMedium, abstractTheme.opacities.opacityMedium) - XCTAssertTrue(inheritedTheme.opacities.opacityMedium == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) - } - - func testInheritedThemeCanOverrideSemanticTokenOpacityEmphasized() throws { - XCTAssertNotEqual(inheritedTheme.opacities.opacityStrong, abstractTheme.opacities.opacityStrong) - XCTAssertTrue(inheritedTheme.opacities.opacityStrong == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) - } - - func testInheritedThemeCanOverrideSemanticTokenOpacityOpaque() throws { - XCTAssertNotEqual(inheritedTheme.opacities.opacityOpaque, abstractTheme.opacities.opacityOpaque) - XCTAssertTrue(inheritedTheme.opacities.opacityOpaque == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) - } -} - -// swiftlint:enable required_deinit -// swiftlint:enable implicitly_unwrapped_optional diff --git a/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/TestThemeOverrideOfGridSemanticTokens.swift b/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/ThemeOverrideOfGridSemanticTokensTests.swift similarity index 99% rename from OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/TestThemeOverrideOfGridSemanticTokens.swift rename to OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/ThemeOverrideOfGridSemanticTokensTests.swift index cd1834cc4e..b3265797c8 100644 --- a/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/TestThemeOverrideOfGridSemanticTokens.swift +++ b/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/ThemeOverrideOfGridSemanticTokensTests.swift @@ -24,7 +24,7 @@ import Testing /// /// **These tests checks if any _grid semantic tokens_ can be surcharged by a child theme** /// **Also, it can help to find removed or renamed tokens by having tests no more compilable** -struct TestThemeOverrideOfGridSemanticTokens { +struct ThemeOverrideOfGridSemanticTokensTests { private var abstractTheme: OUDSTheme private var inheritedTheme: OUDSTheme diff --git a/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/ThemeOverrideOfOpacitySemanticTokensTests.swift b/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/ThemeOverrideOfOpacitySemanticTokensTests.swift new file mode 100644 index 0000000000..4329857159 --- /dev/null +++ b/OUDS/Core/Themes/Orange/Tests/Values/SemanticTokens/ThemeOverrideOfOpacitySemanticTokensTests.swift @@ -0,0 +1,63 @@ +// +// Software Name: OUDS iOS +// SPDX-FileCopyrightText: Copyright (c) Orange SA +// SPDX-License-Identifier: MIT +// +// This software is distributed under the MIT license, +// the text of which is available at https://opensource.org/license/MIT/ +// or see the "LICENSE" file for more details. +// +// Authors: See CONTRIBUTORS.txt +// Software description: A SwiftUI components library with code examples for Orange Unified Design System +// + +import OUDS +import OUDSThemesOrange +import Testing + +/// The architecture of _OUDS iOS_ _Swift package_ library is based on _object oriented paradigm_ and overriding of classes. +/// In factn the `OUDSTheme` object is a class, which can be seens as an _asbtract class_, exposing through its extensions and protocols _opacity semantic tokens_. +/// These semantic tokens should be overridable by subclasses like the ``OrangeThemeOpacitySemanticTokensProvider``. +/// +/// **These tests checks if any _opacity semantic tokens_ can be surcharged by a child theme** +/// **Also, it can help to find removed or renamed tokens by having tests no more compilable** +struct ThemeOverrideOfOpacitySemanticTokensTests { + + private var abstractTheme: OUDSTheme + private var inheritedTheme: OUDSTheme + + init() { + abstractTheme = OrangeTheme() + inheritedTheme = MockTheme() + } + + @Test func inheritedThemeCanOverrideSemanticTokenOpacityInvisible() throws { + #expect(inheritedTheme.opacities.opacityInvisible != abstractTheme.opacities.opacityInvisible) + #expect(inheritedTheme.opacities.opacityInvisible == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) + } + + @Test func inheritedThemeCanOverrideSemanticTokenOpacityWeaker() throws { + #expect(inheritedTheme.opacities.opacityWeaker != abstractTheme.opacities.opacityWeaker) + #expect(inheritedTheme.opacities.opacityWeaker == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) + } + + @Test func inheritedThemeCanOverrideSemanticTokenOpacityWeak() throws { + #expect(inheritedTheme.opacities.opacityWeak != abstractTheme.opacities.opacityWeak) + #expect(inheritedTheme.opacities.opacityWeak == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) + } + + @Test func inheritedThemeCanOverrideSemanticTokenOpacityMedium() throws { + #expect(inheritedTheme.opacities.opacityMedium != abstractTheme.opacities.opacityMedium) + #expect(inheritedTheme.opacities.opacityMedium == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) + } + + @Test func inheritedThemeCanOverrideSemanticTokenOpacityEmphasized() throws { + #expect(inheritedTheme.opacities.opacityStrong != abstractTheme.opacities.opacityStrong) + #expect(inheritedTheme.opacities.opacityStrong == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) + } + + @Test func inheritedThemeCanOverrideSemanticTokenOpacityOpaque() throws { + #expect(inheritedTheme.opacities.opacityOpaque != abstractTheme.opacities.opacityOpaque) + #expect(inheritedTheme.opacities.opacityOpaque == MockThemeOpacitySemanticTokensProvider.mockThemeOpacityRawToken) + } +}