crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

PuzzleCatalogTests.swift (1792B)


      1 import Testing
      2 
      3 @testable import Crossmate
      4 
      5 @Suite("PuzzleCatalog")
      6 struct PuzzleCatalogTests {
      7     @Test("Puzzle bundles are discoverable")
      8     func puzzleBundlesAreDiscoverable() {
      9         let bundles = PuzzleCatalog.bundles()
     10 
     11         #expect(bundles.count == 1)
     12 
     13         let starter = bundles.first { $0.name == "Crossmate Starter" }
     14         #expect(starter != nil)
     15 
     16         let puzzles = starter?.puzzles ?? []
     17         #expect(puzzles.count == 10)
     18         #expect(puzzles.map(\.title).contains("Crossmate Starter #1"))
     19         #expect(puzzles.map(\.title).contains("Crossmate Starter #10"))
     20         #expect(puzzles.allSatisfy { $0.publisher == "Michael Camilleri" })
     21         #expect(puzzles.allSatisfy { $0.blockCells.count == $0.gridWidth * $0.gridHeight })
     22         #expect(puzzles.map(\.id) == [
     23             "cm-starter-0001",
     24             "cm-starter-0002",
     25             "cm-starter-0003",
     26             "cm-starter-0004",
     27             "cm-starter-0005",
     28             "cm-starter-0006",
     29             "cm-starter-0007",
     30             "cm-starter-0008",
     31             "cm-starter-0009",
     32             "cm-starter-0010"
     33         ])
     34 
     35         // The catalog holds no source text; it is read from the `.xd`
     36         // resource on demand.
     37         let firstSource = try? puzzles.first?.loadSource()
     38         #expect(firstSource?.isEmpty == false)
     39     }
     40 
     41     @Test("The debug bundle is excluded from the bundles")
     42     func debugBundleIsExcludedFromBundles() {
     43         #expect(PuzzleCatalog.bundles().allSatisfy { $0.id != "debug" })
     44     }
     45 
     46     @Test("Debug puzzle resources are discoverable")
     47     func debugPuzzleResourcesAreDiscoverable() {
     48         let puzzles = PuzzleCatalog.debugPuzzles()
     49 
     50         #expect(puzzles.count == 3)
     51         #expect(puzzles.map(\.id) == ["garden", "morning", "sample"])
     52     }
     53 }