Files
steipete--codexbar/Tests/CodexBarTests/ProviderLabelMetadataCharacterizationTests.swift
T
2026-07-13 12:22:33 +08:00

64 lines
2.4 KiB
Swift

import CodexBarCore
import Testing
struct ProviderLabelMetadataCharacterizationTests {
// MARK: - Label non-empty constraints
@Test
func `displayName is non-empty for all providers`() {
for descriptor in ProviderDescriptorRegistry.all {
#expect(
!descriptor.metadata.displayName.isEmpty,
"Provider \(descriptor.id.rawValue) has empty displayName.")
}
}
@Test
func `sessionLabel is non-empty for all providers`() {
for descriptor in ProviderDescriptorRegistry.all {
#expect(
!descriptor.metadata.sessionLabel.isEmpty,
"Provider \(descriptor.id.rawValue) has empty sessionLabel.")
}
}
// MARK: - Known empty weeklyLabel exceptions
@Test
func `weeklyLabel empty providers are explicitly characterized`() {
// Allowlist of providers known to have empty weeklyLabel on current main.
// If a new provider is added with empty weeklyLabel, this test fails and
// requires a deliberate decision to add it here — preventing silent regressions.
let knownEmptyWeeklyLabelProviders: Set<UsageProvider> = [.mistral]
for descriptor in ProviderDescriptorRegistry.all where descriptor.metadata.weeklyLabel.isEmpty {
#expect(
knownEmptyWeeklyLabelProviders.contains(descriptor.id),
"Provider \(descriptor.id.rawValue) has empty weeklyLabel and is not in the known exception list.")
}
}
// MARK: - Invariant: supportsOpus implies opusLabel
@Test
func `supportsOpus providers declare non-empty opusLabel`() {
for descriptor in ProviderDescriptorRegistry.all where descriptor.metadata.supportsOpus {
#expect(
descriptor.metadata.opusLabel != nil && !descriptor.metadata.opusLabel!.isEmpty,
"Provider \(descriptor.id.rawValue) has supportsOpus=true but opusLabel is nil or empty.")
}
}
// MARK: - opusLabel structural constraint
@Test
func `opusLabel is nil or non-empty`() {
for descriptor in ProviderDescriptorRegistry.all {
if let opusLabel = descriptor.metadata.opusLabel {
#expect(
!opusLabel.isEmpty,
"Provider \(descriptor.id.rawValue) has empty opusLabel string instead of nil.")
}
}
}
}