From ed9829fff15451246cddcfb608377ef923752d3f Mon Sep 17 00:00:00 2001 From: Rory Hinnen Date: Sat, 11 Jul 2026 13:33:44 -0500 Subject: [PATCH] updated unit tests --- .../UserInterfaceState.xcuserstate | Bin 16892 -> 16890 bytes .../Interject!Tests/Interject_Tests.swift | 216 ++++++++++++++++-- 2 files changed, 193 insertions(+), 23 deletions(-) diff --git a/interject/Interject!.xcodeproj/project.xcworkspace/xcuserdata/roryhinnen.xcuserdatad/UserInterfaceState.xcuserstate b/interject/Interject!.xcodeproj/project.xcworkspace/xcuserdata/roryhinnen.xcuserdatad/UserInterfaceState.xcuserstate index dcaf34d574617b1932e687099cd1986d62f87ae5..c51babb8e052065f5ebba82b306c933a9dfbe28d 100644 GIT binary patch delta 417 zcmWNLF-RM67{$NuzFM(08jZvnDvkAW+^2)I9S*cuv$asL&~_3;Ne-3R3)Bd@$p1(u zp$_>AE@~wioCM2Z(V|kRP)o_8SuEAMI0#xAB#T7wKfK?2Z+X0O8n4p0n${}UX_LOu zo;R(XHnf3`yPzxnz&-q_{1+I)C#IErVn!^8MdhDFtuSOX(jfoqx8y}*joi_n%9hAK zd3G-sfjpK(x0n@1-{^>Azi{IAggw?DPsYaI*-q-E?F^-cz0XZi#FBRzTDx0O6xSl- ztr*oB)vMt{vsG@I&9ZFXY4;$QBb(wBb5U~btP{pQZ9px3l}jPL za-X(T-j)L){r&;?phmSF+J#^ii}YP&TnuFKJ(gsio8<-v)P+1J@OII~7WJXKJyFer z&z`JC zbAW@~#9@BO5jMGvpKuSq=C|C>37%rXA34LbJje6A$V;5{QqN*qMZr3D2YysSU8a&xkDXiiuM--gsK>N^-XJiZV?mJGr z@Io&>FQ>wWmt)RDtDw-5QjviS4D7}byy$lADkpf92cF+^_xqp5dK%Z#%GDBmq;K@Y zo>NYm?%@`MF2HTv!ChzfKoxW1<|XrDNh~|HA{vBhZ-gGB{M($ni!~^VMbRhJQ9T)d zH({8mM~3+-H8%2k+%$$v-FR=jwTmrL#G3st@ZpB5D$azo^Qv1RuTbStXPZo^;idwu zgFlN^Dhg?#CySFlDi%VHzA6fBSlB2s7W#x*q3_T@TQb6` z>!(xO@rBIe}NI7Irw_ec^;V9NXMKeQKeW^mt(ylAyy&n1Z0=l;a3I zfF9@uEqEWIc16n*m2Mx%>E0Nw+LhjM(hfW8e4THxhke}40dD0x+{HZ{ Settings { + Settings(phrases: phrases, sfw: true, locked: Locked(), font: .helvetica, colorScheme: .automatic) + } + + @Test func addIncreasesCount() { + let settings = makeSettings() + let before = settings.phrases.count + settings.add() + #expect(settings.phrases.count == before + 1) + } + + @Test func removeDecreasesCount() { + let settings = makeSettings(phrases: [Sentence(), Sentence()]) + settings.remove() + #expect(settings.phrases.count == 1) + } + + @Test func removeDoesNotGoBelowOne() { + let settings = makeSettings() + settings.remove() + #expect(settings.phrases.count == 1) + } + + @Test func addRespectsMaximumOfOneHundred() { + let phrases = (0..<100).map { _ in Sentence() } + let settings = makeSettings(phrases: phrases) + settings.add() + #expect(settings.phrases.count == 100) + } + + @Test func addWithLockedFirstPreservesAdjective1() { + let initial = Sentence().new(current: Sentence()) + var locked = Locked() + locked.toggle(.first) + let settings = Settings(phrases: [initial], sfw: true, locked: locked, font: .helvetica, colorScheme: .automatic) + let originalWord = settings.phrases[0].word(.first, safe: true) + settings.add() + #expect(settings.phrases[0].word(.first, safe: true) == originalWord) + } + + @Test func addWithLockedSecondPreservesAdjective2() { + let initial = Sentence().new(current: Sentence()) + var locked = Locked() + locked.toggle(.second) + let settings = Settings(phrases: [initial], sfw: true, locked: locked, font: .helvetica, colorScheme: .automatic) + let originalWord = settings.phrases[0].word(.second, safe: true) + settings.add() + #expect(settings.phrases[0].word(.second, safe: true) == originalWord) + } + + @Test func addWithLockedNounPreservesNoun() { + let initial = Sentence().new(current: Sentence()) + var locked = Locked() + locked.toggle(.noun) + let settings = Settings(phrases: [initial], sfw: true, locked: locked, font: .helvetica, colorScheme: .automatic) + let originalNoun = settings.phrases[0].word(.noun, safe: true) + settings.add() + #expect(settings.phrases[0].word(.noun, safe: true) == originalNoun) + } + + @Test func removeWithLockedFirstCopiesAdjective1ToNext() { + let first = Sentence().new(current: Sentence()) + let second = first.new(current: first) + var locked = Locked() + locked.toggle(.first) + let settings = Settings(phrases: [first, second], sfw: true, locked: locked, font: .helvetica, colorScheme: .automatic) + let originalWord = settings.phrases[0].word(.first, safe: true) + settings.remove() + #expect(settings.phrases[0].word(.first, safe: true) == originalWord) + } }