From c843d34f56c207abcf4b93e424125eea2dc601e0 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Fri, 4 Jul 2025 17:06:28 +0200 Subject: Upgrade to Swift 6 --- MapTests/DebouncerTests.swift | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 MapTests/DebouncerTests.swift (limited to 'MapTests/DebouncerTests.swift') diff --git a/MapTests/DebouncerTests.swift b/MapTests/DebouncerTests.swift new file mode 100644 index 0000000..9ac36cd --- /dev/null +++ b/MapTests/DebouncerTests.swift @@ -0,0 +1,71 @@ +// Copyright (C) 2024 Rubén Beltrán del Río + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +import Foundation +// You should have received a copy of the GNU General Public License +// along with this program. If not, see https://map.tranquil.systems. +import Testing + +@testable import Map + +struct DebouncerTests { + + @Test func testDebouncerExecutesAfterDelay() async throws { + let debouncer = Debouncer(seconds: 0.1) + var executed = false + + debouncer.debounce { + executed = true + } + + #expect(executed == false) + + try await Task.sleep(nanoseconds: 150_000_000) // 0.15 seconds + + #expect(executed == true) + } + + @Test func testDebouncerCancelsReplacement() async throws { + let debouncer = Debouncer(seconds: 0.1) + var firstExecuted = false + var secondExecuted = false + + debouncer.debounce { + firstExecuted = true + } + + debouncer.debounce { + secondExecuted = true + } + + try await Task.sleep(nanoseconds: 150_000_000) // 0.15 seconds + + #expect(firstExecuted == false) + #expect(secondExecuted == true) + } + + @Test func testDebouncerMultipleReplacements() async throws { + let debouncer = Debouncer(seconds: 0.1) + var counter = 0 + + for i in 1...5 { + debouncer.debounce { + counter += i + } + } + + try await Task.sleep(nanoseconds: 150_000_000) // 0.15 seconds + + #expect(counter == 5) + } + +} -- cgit