- 菜单栏可每项独立(点击弹出该项窄详情)或合并为一个(点击打开主窗口),详情区块可在设置中勾选 - 网络详情:镜像流量历史、ICMP 连接探测格子、接口与 Wi-Fi、本地与公网 IPv4 / IPv6、SVG 国旗归属地与 ASN、各进程流量 - DNS:刷新缓存,一键切换自动 / Cloudflare / Google / 腾讯 / 阿里云或手动填写;辅助工具协议升至 3,服务名与地址二次校验 - 主窗口:侧边栏切换仪表盘、各指标详情与工具页,宽高可调,卡片按比例伸缩 - 统一外观:白底蓝 / 黑底蓝,窗口、设置与弹窗共用底色,去掉玻璃效果 - 新增网络解析、DNS 校验与国旗代码校验的单元测试;更新 README、架构文档与隐私说明
37 lines
1.7 KiB
Swift
37 lines
1.7 KiB
Swift
import HelperShared
|
||
import Testing
|
||
|
||
@Suite struct DNSConfigurationTests {
|
||
@Test func acceptsNumericAddressesOnly() {
|
||
#expect(DNSConfiguration.isValidAddress("1.1.1.1"))
|
||
#expect(DNSConfiguration.isValidAddress("2606:4700:4700::1111"))
|
||
#expect(!DNSConfiguration.isValidAddress("dns.google"))
|
||
#expect(!DNSConfiguration.isValidAddress("1.1.1.1; rm -rf /"))
|
||
#expect(!DNSConfiguration.isValidAddress("999.1.1.1"))
|
||
}
|
||
|
||
@Test func parsesUserInput() {
|
||
#expect(DNSConfiguration.parse("1.1.1.1, 8.8.8.8") == ["1.1.1.1", "8.8.8.8"])
|
||
#expect(DNSConfiguration.parse("223.5.5.5,223.6.6.6\n2400:3200::1") == ["223.5.5.5", "223.6.6.6", "2400:3200::1"])
|
||
#expect(DNSConfiguration.parse("1.1.1.1 example.com") == nil)
|
||
#expect(DNSConfiguration.parse(Array(repeating: "1.1.1.1", count: 7).joined(separator: " ")) == nil)
|
||
}
|
||
|
||
@Test func matchesPresets() {
|
||
#expect(DNSPreset.matching([]) == .automatic)
|
||
#expect(DNSPreset.matching(["1.1.1.1", "1.0.0.1"]) == .cloudflare)
|
||
#expect(DNSPreset.matching(["1.0.0.1", "1.1.1.1"]) == nil)
|
||
}
|
||
|
||
@Test func buildsArgumentsWithoutShell() {
|
||
#expect(DNSConfiguration.networksetupArguments(service: "Wi-Fi", servers: []) == ["-setdnsservers", "Wi-Fi", "Empty"])
|
||
#expect(DNSConfiguration.networksetupArguments(service: "USB LAN", servers: ["8.8.8.8"]) == ["-setdnsservers", "USB LAN", "8.8.8.8"])
|
||
}
|
||
|
||
@Test func quotesServiceNameForShell() {
|
||
#expect(DNSConfiguration.shellCommand(service: "Bob's LAN", servers: ["1.1.1.1"])
|
||
== "/usr/sbin/networksetup -setdnsservers 'Bob'\\''s LAN' 1.1.1.1")
|
||
#expect(!DNSConfiguration.isValidServiceName("Wi-Fi\nrm"))
|
||
}
|
||
}
|