Skip to content

Commit 64627c3

Browse files
committed
add unit tests; fix placement of acute accent
1 parent 858b211 commit 64627c3

7 files changed

Lines changed: 252 additions & 40 deletions

File tree

Conjugar.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
038E032A227CD8B7005CFC96 /* UIAlertControllerExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 038E0329227CD8B7005CFC96 /* UIAlertControllerExtensionTests.swift */; };
2323
038E032C228A1E49005CFC96 /* ConjugationResultTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 038E032B228A1E49005CFC96 /* ConjugationResultTests.swift */; };
2424
038E032E228A2F18005CFC96 /* PersonNumberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 038E032D228A2F18005CFC96 /* PersonNumberTests.swift */; };
25+
038E0330228B0429005CFC96 /* TenseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 038E032F228B0429005CFC96 /* TenseTests.swift */; };
2526
E10178021F3F753400F0BC97 /* UIViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10178011F3F753400F0BC97 /* UIViewExtensions.swift */; };
2627
E107B08B1EB66CE6004C5E91 /* verbs.xml in Resources */ = {isa = PBXBuildFile; fileRef = E107B08A1EB66CE6004C5E91 /* verbs.xml */; };
2728
E107B0921EB66F28004C5E91 /* VerbParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = E107B0911EB66F28004C5E91 /* VerbParser.swift */; };
@@ -171,6 +172,7 @@
171172
038E0329227CD8B7005CFC96 /* UIAlertControllerExtensionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIAlertControllerExtensionTests.swift; sourceTree = "<group>"; };
172173
038E032B228A1E49005CFC96 /* ConjugationResultTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConjugationResultTests.swift; sourceTree = "<group>"; };
173174
038E032D228A2F18005CFC96 /* PersonNumberTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersonNumberTests.swift; sourceTree = "<group>"; };
175+
038E032F228B0429005CFC96 /* TenseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TenseTests.swift; sourceTree = "<group>"; };
174176
E10178011F3F753400F0BC97 /* UIViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewExtensions.swift; sourceTree = "<group>"; };
175177
E107B08A1EB66CE6004C5E91 /* verbs.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = verbs.xml; sourceTree = "<group>"; };
176178
E107B0911EB66F28004C5E91 /* VerbParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerbParser.swift; sourceTree = "<group>"; };
@@ -485,6 +487,7 @@
485487
E1DC939421B5836400DD4048 /* QuizTests.swift */,
486488
038E032B228A1E49005CFC96 /* ConjugationResultTests.swift */,
487489
038E032D228A2F18005CFC96 /* PersonNumberTests.swift */,
490+
038E032F228B0429005CFC96 /* TenseTests.swift */,
488491
);
489492
path = Models;
490493
sourceTree = "<group>";
@@ -871,6 +874,7 @@
871874
038E032A227CD8B7005CFC96 /* UIAlertControllerExtensionTests.swift in Sources */,
872875
E198F9051F5D7CB200BAF553 /* ConjugatorTests.swift in Sources */,
873876
E1EC70F22198A10B00872787 /* UIViewControllerExtensions.swift in Sources */,
877+
038E0330228B0429005CFC96 /* TenseTests.swift in Sources */,
874878
E14589F41F5B7BB000EEF141 /* BrowseInfoVCTests.swift in Sources */,
875879
E14589F61F5B7E9D00EEF141 /* VerbVCTests.swift in Sources */,
876880
038E031C2271E239005CFC96 /* AnalyticsServiceableTests.swift in Sources */,

Conjugar/Conjugator.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ class Conjugator {
165165
}
166166
if let conjugation = verb[conjugationKey] {
167167
return .success(conjugation)
168-
} else if [.presenteDeIndicativo, .preterito, .imperfectoDeIndicativo, .presenteDeSubjuntivo, .gerundio, .participio].contains(tense) {
168+
} else if [.presenteDeIndicativo, .pretérito, .imperfectoDeIndicativo, .presenteDeSubjuntivo, .gerundio, .participio].contains(tense) {
169169
guard let parent = verb[Conjugator.parent] else {
170170
fatalError("verb[\(Conjugator.parent) was nil.")
171171
}
@@ -216,7 +216,7 @@ class Conjugator {
216216
guard let parent = verb[Conjugator.parent] else {
217217
fatalError("verb[\(Conjugator.parent) was nil.")
218218
}
219-
guard case .success(let parentStem) = conjugateRecursively(infinitive: parent, tense: .preterito, personNumber: .thirdPlural) else {
219+
guard case .success(let parentStem) = conjugateRecursively(infinitive: parent, tense: .pretérito, personNumber: .thirdPlural) else {
220220
fatalError("parentStem was nil.")
221221
}
222222
let trim = verb[Conjugator.trim] ?? ""
@@ -227,7 +227,7 @@ class Conjugator {
227227
stemWithRon = parentStem.replaceFirstOccurence(of: trim, with: stem)
228228
}
229229
} else {
230-
guard case .success(let nonDefectiveStemWithRon) = conjugateRecursively(infinitive: infinitive, tense: .preterito, personNumber: .thirdPlural) else {
230+
guard case .success(let nonDefectiveStemWithRon) = conjugateRecursively(infinitive: infinitive, tense: .pretérito, personNumber: .thirdPlural) else {
231231
fatalError("nonDefectiveStemWithRon was nil.")
232232
}
233233
stemWithRon = nonDefectiveStemWithRon
@@ -248,7 +248,7 @@ class Conjugator {
248248
stem = stemWithoutLastChar + accentedLastChar
249249
}
250250
return .success(stem + endingFor(tense: tense, personNumber: personNumber))
251-
} else if [.perfectoDeIndicativo, .preteritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto, .condicionalCompuesto, .perfectoDeSubjuntivo, .pluscuamperfectoDeSubjuntivo1, .pluscuamperfectoDeSubjuntivo2, .futuroPerfectoDeSubjuntivo].contains(tense) {
251+
} else if [.perfectoDeIndicativo, .pretéritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto, .condicionalCompuesto, .perfectoDeSubjuntivo, .pluscuamperfectoDeSubjuntivo1, .pluscuamperfectoDeSubjuntivo2, .futuroPerfectoDeSubjuntivo].contains(tense) {
252252
let haberTenseResult = tense.haberTenseForCompoundTense()
253253
let haberTense: Tense
254254
switch haberTenseResult {

Conjugar/Quiz.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ class Quiz {
142142
questions.append(($0, .futuroDeIndicativo, personNumber()))
143143
}
144144
for _ in 0...7 {
145-
questions.append((irregularPreteritoVerb, .preterito, personNumber()))
145+
questions.append((irregularPreteritoVerb, .pretérito, personNumber()))
146146
}
147147
for _ in 0...8 {
148-
questions.append((allRegularVerb, .preterito, personNumber()))
148+
questions.append((allRegularVerb, .pretérito, personNumber()))
149149
}
150150
case .moderate:
151151
[regularArVerb, regularArVerb, regularIrVerb, regularErVerb].forEach {
@@ -179,10 +179,10 @@ class Quiz {
179179
questions.append(($0, .imperfectoDeIndicativo, personNumber()))
180180
}
181181
for _ in 0...2 {
182-
questions.append((irregularPreteritoVerb, .preterito, personNumber()))
182+
questions.append((irregularPreteritoVerb, .pretérito, personNumber()))
183183
}
184184
[regularArVerb, regularIrVerb, regularErVerb].forEach {
185-
questions.append(($0, .preterito, personNumber()))
185+
questions.append(($0, .pretérito, personNumber()))
186186
}
187187
for _ in 0...2 {
188188
questions.append((irregularPresenteDeSubjuntivoVerb, .presenteDeSubjuntivo, personNumber()))
@@ -223,10 +223,10 @@ class Quiz {
223223
questions.append((irregularPresenteDeIndicativoVerb, .presenteDeIndicativo, personNumber()))
224224
}
225225
for _ in 0...2 {
226-
questions.append((irregularPreteritoVerb, .preterito, personNumber()))
226+
questions.append((irregularPreteritoVerb, .pretérito, personNumber()))
227227
}
228228
[regularArVerb, regularIrVerb, regularErVerb].forEach {
229-
questions.append(($0, .preterito, personNumber()))
229+
questions.append(($0, .pretérito, personNumber()))
230230
}
231231
for _ in 0...1 {
232232
questions.append((irregularImperfectoVerb, .imperfectoDeIndicativo, personNumber()))
@@ -261,7 +261,7 @@ class Quiz {
261261
}
262262
questions.append((allRegularVerb, .imperativoPositivo, personNumber(skipYo: true, skipTu: true)))
263263
questions.append((allRegularVerb, .imperativoNegativo, personNumber(skipYo: true, skipTu: true)))
264-
[.perfectoDeIndicativo, .preteritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto, .condicionalCompuesto, .perfectoDeSubjuntivo, .pluscuamperfectoDeSubjuntivo1, .pluscuamperfectoDeSubjuntivo2, .futuroPerfectoDeSubjuntivo].forEach {
264+
[.perfectoDeIndicativo, .pretéritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto, .condicionalCompuesto, .perfectoDeSubjuntivo, .pluscuamperfectoDeSubjuntivo1, .pluscuamperfectoDeSubjuntivo2, .futuroPerfectoDeSubjuntivo].forEach {
265265
questions.append((regularOrIrregularParticipioVerb, $0, personNumber()))
266266
}
267267
}

Conjugar/Tense.swift

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ enum Tense: String, CaseIterable {
1919
case imperativoNegativo = "ni"
2020

2121
case presenteDeIndicativo = "pr"
22-
case preterito = "pt"
22+
case pretérito = "pt"
2323
case imperfectoDeIndicativo = "ii"
2424
case futuroDeIndicativo = "fu"
2525
case condicional = "co"
@@ -29,7 +29,7 @@ enum Tense: String, CaseIterable {
2929
case futuroDeSubjuntivo = "fv"
3030

3131
case perfectoDeIndicativo = "pi"
32-
case preteritoAnterior = "pa"
32+
case pretéritoAnterior = "pa"
3333
case pluscuamperfectoDeIndicativo = "fi"
3434
case futuroPerfecto = "fp"
3535
case condicionalCompuesto = "cc"
@@ -48,9 +48,9 @@ enum Tense: String, CaseIterable {
4848
return 0
4949
case .imperativoPositivo, .imperativoNegativo:
5050
return 5 + extraConjugation
51-
case .presenteDeIndicativo, .preterito, .imperfectoDeIndicativo, .futuroDeIndicativo, .condicional,
51+
case .presenteDeIndicativo, .pretérito, .imperfectoDeIndicativo, .futuroDeIndicativo, .condicional,
5252
.presenteDeSubjuntivo, .imperfectoDeSubjuntivo1, .imperfectoDeSubjuntivo2, .futuroDeSubjuntivo,
53-
.perfectoDeIndicativo, .preteritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto,
53+
.perfectoDeIndicativo, .pretéritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto,
5454
.condicionalCompuesto, .perfectoDeSubjuntivo, .pluscuamperfectoDeSubjuntivo1,
5555
.pluscuamperfectoDeSubjuntivo2, .futuroPerfectoDeSubjuntivo:
5656
return 6 + extraConjugation
@@ -62,9 +62,9 @@ enum Tense: String, CaseIterable {
6262
case .imperativoPositivo, .imperativoNegativo,
6363
.infinitivo, .translation, .gerundio, .participio, .raízFutura:
6464
return false
65-
case .presenteDeIndicativo, .preterito, .imperfectoDeIndicativo, .futuroDeIndicativo, .condicional,
65+
case .presenteDeIndicativo, .pretérito, .imperfectoDeIndicativo, .futuroDeIndicativo, .condicional,
6666
.presenteDeSubjuntivo, .imperfectoDeSubjuntivo1, .imperfectoDeSubjuntivo2, .futuroDeSubjuntivo,
67-
.perfectoDeIndicativo, .preteritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto,
67+
.perfectoDeIndicativo, .pretéritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto,
6868
.condicionalCompuesto, .perfectoDeSubjuntivo, .pluscuamperfectoDeSubjuntivo1,
6969
.pluscuamperfectoDeSubjuntivo2, .futuroPerfectoDeSubjuntivo:
7070
return true
@@ -89,7 +89,7 @@ enum Tense: String, CaseIterable {
8989
return "imperativo negativo"
9090
case .presenteDeIndicativo:
9191
return "presente de indicativo"
92-
case .preterito:
92+
case .pretérito:
9393
return "pretérito"
9494
case .imperfectoDeIndicativo:
9595
return "imperfecto de indicativo"
@@ -107,8 +107,8 @@ enum Tense: String, CaseIterable {
107107
return "futuro de subjuntivo"
108108
case .perfectoDeIndicativo:
109109
return "perfecto de indicativo"
110-
case .preteritoAnterior:
111-
return "préterito anterior"
110+
case .pretéritoAnterior:
111+
return "pretérito anterior"
112112
case .pluscuamperfectoDeIndicativo:
113113
return "pluscuamperfecto de indicativo"
114114
case .futuroPerfecto:
@@ -144,7 +144,7 @@ enum Tense: String, CaseIterable {
144144
return "Imperativo Negativo"
145145
case .presenteDeIndicativo:
146146
return "Presente de Indicativo"
147-
case .preterito:
147+
case .pretérito:
148148
return "Pretérito"
149149
case .imperfectoDeIndicativo:
150150
return "Imperfecto de Indicativo"
@@ -162,8 +162,8 @@ enum Tense: String, CaseIterable {
162162
return "Futuro de Subjuntivo"
163163
case .perfectoDeIndicativo:
164164
return "Perfecto de Indicativo"
165-
case .preteritoAnterior:
166-
return "Préterito Anterior"
165+
case .pretéritoAnterior:
166+
return "Pretérito Anterior"
167167
case .pluscuamperfectoDeIndicativo:
168168
return "Pluscuamperfecto de Indicativo"
169169
case .futuroPerfecto:
@@ -185,8 +185,8 @@ enum Tense: String, CaseIterable {
185185
switch self {
186186
case .perfectoDeIndicativo:
187187
return .success(.presenteDeIndicativo)
188-
case .preteritoAnterior:
189-
return .success(.preterito)
188+
case .pretéritoAnterior:
189+
return .success(.pretérito)
190190
case .pluscuamperfectoDeIndicativo:
191191
return .success(.imperfectoDeIndicativo)
192192
case .futuroPerfecto:
@@ -206,5 +206,5 @@ enum Tense: String, CaseIterable {
206206
}
207207
}
208208

209-
static let conjugatedTenses: [Tense] = [.presenteDeIndicativo, .preterito, .imperfectoDeIndicativo, .futuroDeIndicativo, .condicional, .presenteDeSubjuntivo, .imperfectoDeSubjuntivo1, .imperfectoDeSubjuntivo2, .futuroDeSubjuntivo, .imperativoPositivo, .imperativoNegativo, .perfectoDeIndicativo, .preteritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto, .condicionalCompuesto, .perfectoDeSubjuntivo, .pluscuamperfectoDeSubjuntivo1, .pluscuamperfectoDeSubjuntivo2, .futuroPerfectoDeSubjuntivo]
209+
static let conjugatedTenses: [Tense] = [.presenteDeIndicativo, .pretérito, .imperfectoDeIndicativo, .futuroDeIndicativo, .condicional, .presenteDeSubjuntivo, .imperfectoDeSubjuntivo1, .imperfectoDeSubjuntivo2, .futuroDeSubjuntivo, .imperativoPositivo, .imperativoNegativo, .perfectoDeIndicativo, .pretéritoAnterior, .pluscuamperfectoDeIndicativo, .futuroPerfecto, .condicionalCompuesto, .perfectoDeSubjuntivo, .pluscuamperfectoDeSubjuntivo1, .pluscuamperfectoDeSubjuntivo2, .futuroPerfectoDeSubjuntivo]
210210
}

Conjugar/VerbParser.swift

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -92,24 +92,24 @@ class VerbParser: NSObject, XMLParserDelegate {
9292
if let tp = attributeDict[PersonNumber.thirdPlural.rawValue + Tense.presenteDeIndicativo.rawValue] {
9393
currentConjugations[PersonNumber.thirdPlural.rawValue + Tense.presenteDeIndicativo.rawValue] = tp
9494
}
95-
if let fs = attributeDict[PersonNumber.firstSingular.rawValue + Tense.preterito.rawValue] {
96-
currentConjugations[PersonNumber.firstSingular.rawValue + Tense.preterito.rawValue] = fs
95+
if let fs = attributeDict[PersonNumber.firstSingular.rawValue + Tense.pretérito.rawValue] {
96+
currentConjugations[PersonNumber.firstSingular.rawValue + Tense.pretérito.rawValue] = fs
9797
}
98-
if let ss = attributeDict[PersonNumber.secondSingularTu.rawValue + Tense.preterito.rawValue] {
99-
currentConjugations[PersonNumber.secondSingularTu.rawValue + Tense.preterito.rawValue] = ss
100-
currentConjugations[PersonNumber.secondSingularVos.rawValue + Tense.preterito.rawValue] = ss
98+
if let ss = attributeDict[PersonNumber.secondSingularTu.rawValue + Tense.pretérito.rawValue] {
99+
currentConjugations[PersonNumber.secondSingularTu.rawValue + Tense.pretérito.rawValue] = ss
100+
currentConjugations[PersonNumber.secondSingularVos.rawValue + Tense.pretérito.rawValue] = ss
101101
}
102-
if let ts = attributeDict[PersonNumber.thirdSingular.rawValue + Tense.preterito.rawValue] {
103-
currentConjugations[PersonNumber.thirdSingular.rawValue + Tense.preterito.rawValue] = ts
102+
if let ts = attributeDict[PersonNumber.thirdSingular.rawValue + Tense.pretérito.rawValue] {
103+
currentConjugations[PersonNumber.thirdSingular.rawValue + Tense.pretérito.rawValue] = ts
104104
}
105-
if let fp = attributeDict[PersonNumber.firstPlural.rawValue + Tense.preterito.rawValue] {
106-
currentConjugations[PersonNumber.firstPlural.rawValue + Tense.preterito.rawValue] = fp
105+
if let fp = attributeDict[PersonNumber.firstPlural.rawValue + Tense.pretérito.rawValue] {
106+
currentConjugations[PersonNumber.firstPlural.rawValue + Tense.pretérito.rawValue] = fp
107107
}
108-
if let sp = attributeDict[PersonNumber.secondPlural.rawValue + Tense.preterito.rawValue] {
109-
currentConjugations[PersonNumber.secondPlural.rawValue + Tense.preterito.rawValue] = sp
108+
if let sp = attributeDict[PersonNumber.secondPlural.rawValue + Tense.pretérito.rawValue] {
109+
currentConjugations[PersonNumber.secondPlural.rawValue + Tense.pretérito.rawValue] = sp
110110
}
111-
if let tp = attributeDict[PersonNumber.thirdPlural.rawValue + Tense.preterito.rawValue] {
112-
currentConjugations[PersonNumber.thirdPlural.rawValue + Tense.preterito.rawValue] = tp
111+
if let tp = attributeDict[PersonNumber.thirdPlural.rawValue + Tense.pretérito.rawValue] {
112+
currentConjugations[PersonNumber.thirdPlural.rawValue + Tense.pretérito.rawValue] = tp
113113
}
114114
if let fs = attributeDict[PersonNumber.firstSingular.rawValue + Tense.imperfectoDeIndicativo.rawValue] {
115115
currentConjugations[PersonNumber.firstSingular.rawValue + Tense.imperfectoDeIndicativo.rawValue] = fs

ConjugarTests/Models/ConjugatorTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class ConjugatorTests: XCTestCase {
1919
XCTFail("One-letter words cannot be conjugated.")
2020
}
2121

22-
result = Conjugator.shared.conjugate(infinitive: "tango 💃🏻", tense: .preterito, personNumber: .thirdPlural)
22+
result = Conjugator.shared.conjugate(infinitive: "tango 💃🏻", tense: .pretérito, personNumber: .thirdPlural)
2323
switch result {
2424
case .failure:
2525
break

0 commit comments

Comments
 (0)