@@ -4,14 +4,98 @@ import Testing
44@Suite ( " DeviceModel+Architecture Tests " )
55struct DeviceModelArchitectureTests {
66
7- @Test ( " Verifies architecture for all device types " )
7+ @Test ( " Verifies architecture for all device models " )
88 func testArchitectureForAllTypes( ) {
9- #expect( DeviceModel . iPod ( . touch7G) . architecture == " arm64 " )
10- #expect( DeviceModel . iPhone ( . iPhone15Pro) . architecture == " arm64e " )
11- #expect( DeviceModel . iPad ( . pro_11inchM4Wifi) . architecture == " arm64e " )
12- #expect( DeviceModel . appleWatch ( . series9_41mmGPS) . architecture == " arm64e " )
13- #expect( DeviceModel . appleTV ( . tv4K3G) . architecture == " arm64e " )
14- #expect( DeviceModel . mac ( . macBookProM4) . architecture == " arm64e " )
9+ // Diccionario de referencia que mapea cada procesador a su arquitectura esperada.
10+ // Esta es nuestra "fuente de la verdad" para el test.
11+ let expectedArchitectures : [ DeviceModel . Processor : String ] = [
12+ // Early Processors
13+ . APL0098: " armv6 " ,
14+ . APL0278: " armv7 " ,
15+ . APL0298: " armv7 " ,
16+ . APL2298: " armv7 " ,
17+
18+ // A-Series
19+ . appleA4: " armv7 " ,
20+ . appleA5: " armv7 " ,
21+ . appleA5X: " armv7 " ,
22+ . appleA6: " armv7s " ,
23+ . appleA6X: " armv7s " ,
24+ . appleA7: " arm64 " ,
25+ . appleA8: " arm64 " ,
26+ . appleA8X: " arm64 " ,
27+ . appleA9: " arm64 " ,
28+ . appleA9X: " arm64 " ,
29+ . appleA10Fusion: " arm64 " ,
30+ . appleA10XFusion: " arm64 " ,
31+ . appleA11Bionic: " arm64 " ,
32+ . appleA12Bionic: " arm64e " ,
33+ . appleA12XBionic: " arm64e " ,
34+ . appleA12ZBionic: " arm64e " ,
35+ . appleA13Bionic: " arm64e " ,
36+ . appleA14Bionic: " arm64e " ,
37+ . appleA15Bionic: " arm64e " ,
38+ . appleA16Bionic: " arm64e " ,
39+ . appleA17Pro: " arm64e " ,
40+ . appleA18: " arm64e " ,
41+ . appleA18Pro: " arm64e " ,
42+ . appleA19: " arm64e " ,
43+ . appleA19Pro: " arm64e " ,
44+
45+ // M-Series
46+ . appleM1: " arm64e " , . appleM1Pro: " arm64e " , . appleM1Max: " arm64e " , . appleM1Ultra: " arm64e " ,
47+ . appleM2: " arm64e " , . appleM2Pro: " arm64e " , . appleM2Max: " arm64e " , . appleM2Ultra: " arm64e " ,
48+ . appleM3: " arm64e " , . appleM3Pro: " arm64e " , . appleM3Max: " arm64e " ,
49+ . appleM4: " arm64e " , . appleM4Pro: " arm64e " , . appleM4Max: " arm64e " ,
50+
51+ // R-Series
52+ . appleR1: " arm64 " ,
53+
54+ // S-Series (Watch)
55+ . appleS1: " armv7k " ,
56+ . appleS1P: " armv7k " ,
57+ . appleS2: " armv7k " ,
58+ . appleS3: " armv8-a " ,
59+ . appleS4: " arm64e " ,
60+ . appleS5: " arm64e " ,
61+ . appleS6: " arm64e " ,
62+ . appleS7: " arm64e " ,
63+ . appleS8: " arm64e " ,
64+ . appleS9: " arm64e " ,
65+ . appleS10: " arm64e "
66+ ]
67+
68+ // Itera sobre todos los casos de DeviceModel para verificar su arquitectura.
69+ for model in DeviceModel . allCases {
70+ let calculatedArchitecture = model. architecture
71+ var expectedArchitecture : String ?
72+
73+ switch model {
74+ case . iPod( let model) :
75+ expectedArchitecture = expectedArchitectures [ model. processor]
76+ case . iPhone( let model) :
77+ expectedArchitecture = expectedArchitectures [ model. processor]
78+ case . iPad( let model) :
79+ expectedArchitecture = expectedArchitectures [ model. processor]
80+ case . appleWatch( let model) :
81+ expectedArchitecture = expectedArchitectures [ model. processor]
82+ case . appleTV( let model) :
83+ expectedArchitecture = expectedArchitectures [ model. processor]
84+ case . mac( let model) :
85+ expectedArchitecture = expectedArchitectures [ model. processor]
86+ case . macCatalyst, . macDesignedForIpad:
87+ expectedArchitecture = " arm64 "
88+ case . simulator( _, let arch) :
89+ expectedArchitecture = arch
90+ case . unknown:
91+ expectedArchitecture = nil
92+ }
93+
94+ #expect(
95+ calculatedArchitecture == expectedArchitecture,
96+ " Architecture mismatch for \( model. name) . Expected \( String ( describing: expectedArchitecture) ) , got \( String ( describing: calculatedArchitecture) ) "
97+ )
98+ }
1599 }
16100
17101 @Test ( " Verifies architecture for special cases " )
0 commit comments