Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions Source/Device.generated.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2199,8 +2199,8 @@ extension Device {
case .iPadPro12Inch: return .firstGeneration
case .iPadPro12Inch2: return .firstGeneration
case .iPadPro10Inch: return .firstGeneration
case .iPad10: return .firstGenerationUsbC
case .iPadA16: return .firstGenerationUsbC
case .iPad10: return [.firstGeneration, .firstGenerationUsbC]
case .iPadA16: return [.firstGeneration, .firstGenerationUsbC]
case .iPadAir4: return [.secondGeneration, .firstGenerationUsbC]
case .iPadAir5: return [.secondGeneration, .firstGenerationUsbC]
case .iPadMini6: return [.secondGeneration, .firstGenerationUsbC]
Expand All @@ -2212,13 +2212,13 @@ extension Device {
case .iPadPro12Inch5: return [.secondGeneration, .firstGenerationUsbC]
case .iPadPro11Inch4: return [.secondGeneration, .firstGenerationUsbC]
case .iPadPro12Inch6: return [.secondGeneration, .firstGenerationUsbC]
case .iPadPro11M4: return [.secondGeneration, .firstGenerationUsbC, .pro]
case .iPadPro13M4: return [.secondGeneration, .firstGenerationUsbC, .pro]
case .iPadAir11M2: return [.secondGeneration, .pro]
case .iPadAir13M2: return [.secondGeneration, .pro]
case .iPadAir11M3: return [.secondGeneration, .pro]
case .iPadAir13M3: return [.secondGeneration, .pro]
case .iPadAir11M2: return [.firstGenerationUsbC, .pro]
case .iPadAir13M2: return [.firstGenerationUsbC, .pro]
case .iPadAir11M3: return [.firstGenerationUsbC, .pro]
case .iPadAir13M3: return [.firstGenerationUsbC, .pro]
case .iPadMiniA17Pro: return [.firstGenerationUsbC, .pro]
case .iPadPro11M4: return [.firstGenerationUsbC, .pro]
case .iPadPro13M4: return [.firstGenerationUsbC, .pro]
case .simulator(let model): return model.applePencilSupport
default: return []
}
Expand Down
19 changes: 11 additions & 8 deletions Source/Device.swift.gyb
Original file line number Diff line number Diff line change
Expand Up @@ -109,14 +109,14 @@ iPads = [
Device("iPad7", "Device is an [iPad (7th generation)](https://support.apple.com/kb/SP807)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP807/sp807-ipad-7th-gen_2x.png", ["iPad7,11", "iPad7,12"], 10.2, (3, 4), "iPad (7th generation)", "iPad (7th generation)", 264, False, False, False, False, True, False, False, False, False, False, 1, False, 1, False, "a10Fusion", False, False),
Device("iPad8", "Device is an [iPad (8th generation)](https://support.apple.com/kb/SP822)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP822/sp822-ipad-8gen_2x.png", ["iPad11,6", "iPad11,7"], 10.2, (3, 4), "iPad (8th generation)", "iPad (8th generation)", 264, False, False, False, False, True, False, False, False, False, False, 1, False, 1, False, "a12Bionic", False, False),
Device("iPad9", "Device is an [iPad (9th generation)](https://support.apple.com/kb/SP849)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1096/en_US/ipad-9gen-240.png", ["iPad12,1", "iPad12,2"], 10.2, (3, 4), "iPad (9th generation)", "iPad (9th generation)", 264, False, False, False, False, True, False, False, False, False, False, 1, False, 1, False, "a13Bionic", False, False),
Device("iPad10", "Device is an [iPad (10th generation)](https://support.apple.com/kb/SP884)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP884/sp884-ipad-10gen-960_2x.png", ["iPad13,18", "iPad13,19"], 10.9, (41, 59), "iPad (10th generation)", "iPad (10th generation)", 264, False, False, False, False, True, False, False, False, True, False, 3, False, 1, False, "a14Bionic", True, True),
Device("iPadA16", "Device is an [iPad (A16)]()", "", ["iPad15,7", "iPad15,8"], 10.9, (41, 59), "iPad (A16)", "iPad (A16)", 264, False, False, False, False, True, False, False, False, True, False, 3, False, 1, False, "a16Bionic", True, True),
Device("iPad10", "Device is an [iPad (10th generation)](https://support.apple.com/kb/SP884)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP884/sp884-ipad-10gen-960_2x.png", ["iPad13,18", "iPad13,19"], 10.9, (41, 59), "iPad (10th generation)", "iPad (10th generation)", 264, False, False, False, False, True, False, False, False, True, False, 13, False, 1, False, "a14Bionic", True, True),
Device("iPadA16", "Device is an [iPad (A16)]()", "", ["iPad15,7", "iPad15,8"], 10.9, (41, 59), "iPad (A16)", "iPad (A16)", 264, False, False, False, False, True, False, False, False, True, False, 13, False, 1, False, "a16Bionic", True, True),
Device("iPadAir4", "Device is an [iPad Air (4th generation)](https://support.apple.com/kb/SP828)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP828/sp828ipad-air-ipados14-960_2x.png", ["iPad13,1", "iPad13,2"], 10.9, (41, 59), "iPad Air (4th generation)", "iPad Air (4th generation)", 264, False, False, False, False, True, False, False, False, True, False, 23, False, 1, False, "a14Bionic", True, False),
Device("iPadAir5", "Device is an [iPad Air (5th generation)](https://support.apple.com/kb/SP866)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP866/sp866-ipad-air-5gen_2x.png", ["iPad13,16", "iPad13,17"], 10.9, (41, 59), "iPad Air (5th generation)", "iPad Air (5th generation)", 264, False, False, False, False, True, False, False, False, True, False, 23, False, 1, False, "m1", True, True),
Device("iPadAir11M2", "Device is an [iPad Air 11-inch (M2)](https://support.apple.com/en-us/119894)", "https://cdsassets.apple.com/content/services/pub/image?productid=301027&size=240x240", ["iPad14,8", "iPad14,9"], 10.9, (59, 41), "iPad Air (11-inch) (M2)", "iPad Air (11-inch) (M2)", 264, False, False, False, False, True, False, False, False, True, False, 24, False, 1, False, "m2", True, True),
Device("iPadAir13M2", "Device is an [iPad Air 13-inch (M2)](https://support.apple.com/en-us/119893)", "https://cdsassets.apple.com/content/services/pub/image?productid=301029&size=240x240", ["iPad14,10", "iPad14,11"], 12.9, (683, 512), "iPad Air (13-inch) (M2)", "iPad Air (13-inch) (M2)", 264, False, False, False, False, True, False, False, False, True, False, 24, False, 1, False, "m2", True, True),
Device("iPadAir11M3", "Device is an [iPad Air 11-inch (M3)]()", "https://cdsassets.apple.com/content/services/pub/image?productid=301027&size=240x240", ["iPad15,3", "iPad15,4"], 10.9, (59, 41), "iPad Air (11-inch) (M3)", "iPad Air (11-inch) (M3)", 264, False, False, False, False, True, False, False, False, True, False, 24, False, 1, False, "m3", True, True),
Device("iPadAir13M3", "Device is an [iPad Air 13-inch (M3)]()", "https://cdsassets.apple.com/content/services/pub/image?productid=301029&size=240x240", ["iPad15,5", "iPad15,6"], 12.9, (683, 512), "iPad Air (13-inch) (M3)", "iPad Air (13-inch) (M3)", 264, False, False, False, False, True, False, False, False, True, False, 24, False, 1, False, "m3", True, True),
Device("iPadAir11M2", "Device is an [iPad Air 11-inch (M2)](https://support.apple.com/en-us/119894)", "https://cdsassets.apple.com/content/services/pub/image?productid=301027&size=240x240", ["iPad14,8", "iPad14,9"], 10.9, (59, 41), "iPad Air (11-inch) (M2)", "iPad Air (11-inch) (M2)", 264, False, False, False, False, True, False, False, False, True, False, 34, False, 1, False, "m2", True, True),
Device("iPadAir13M2", "Device is an [iPad Air 13-inch (M2)](https://support.apple.com/en-us/119893)", "https://cdsassets.apple.com/content/services/pub/image?productid=301029&size=240x240", ["iPad14,10", "iPad14,11"], 12.9, (683, 512), "iPad Air (13-inch) (M2)", "iPad Air (13-inch) (M2)", 264, False, False, False, False, True, False, False, False, True, False, 34, False, 1, False, "m2", True, True),
Device("iPadAir11M3", "Device is an [iPad Air 11-inch (M3)]()", "https://cdsassets.apple.com/content/services/pub/image?productid=301027&size=240x240", ["iPad15,3", "iPad15,4"], 10.9, (59, 41), "iPad Air (11-inch) (M3)", "iPad Air (11-inch) (M3)", 264, False, False, False, False, True, False, False, False, True, False, 34, False, 1, False, "m3", True, True),
Device("iPadAir13M3", "Device is an [iPad Air 13-inch (M3)]()", "https://cdsassets.apple.com/content/services/pub/image?productid=301029&size=240x240", ["iPad15,5", "iPad15,6"], 12.9, (683, 512), "iPad Air (13-inch) (M3)", "iPad Air (13-inch) (M3)", 264, False, False, False, False, True, False, False, False, True, False, 34, False, 1, False, "m3", True, True),
Device("iPadMini", "Device is an [iPad Mini](https://support.apple.com/kb/SP661)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP661/sp661_ipad_mini_color.jpg", ["iPad2,5", "iPad2,6", "iPad2,7"], 7.9, (3, 4), "iPad Mini", "iPad Mini", 163, False, True, False, False, False, False, False, False, False, False, 0, False, 1, False, "a5", False, False),
Device("iPadMini2", "Device is an [iPad Mini 2](https://support.apple.com/kb/SP693)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP693/SP693-specs_color-mul.png", ["iPad4,4", "iPad4,5", "iPad4,6"], 7.9, (3, 4), "iPad Mini 2", "iPad Mini 2", 326, False, True, False, False, False, False, False, False, False, False, 0, False, 1, False, "a7", False, False),
Device("iPadMini3", "Device is an [iPad Mini 3](https://support.apple.com/kb/SP709)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP709/SP709-space_gray.jpeg", ["iPad4,7", "iPad4,8", "iPad4,9"], 7.9, (3, 4), "iPad Mini 3", "iPad Mini 3", 326, False, True, False, False, True, False, False, False, False, False, 0, False, 1, False, "a7", False, False),
Expand All @@ -136,8 +136,8 @@ iPads = [
Device("iPadPro12Inch5", "Device is an [iPad Pro 12.9-inch (5th generation)](https://support.apple.com/kb/SP844)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP844/ipad-pro-12-9_2x.png", ["iPad13,8", "iPad13,9", "iPad13,10", "iPad13,11"], 12.9, (512, 683), "iPad Pro (12.9-inch) (5th generation)", "iPad Pro (12.9-inch) (5th generation)", 264, False, False, True, False, False, True, False, False, True, False, 23, False, 13, True, "m1", True, True),
Device("iPadPro11Inch4", "Device is an [iPad Pro 11-inch (4th generation)](https://support.apple.com/kb/SP882)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP882/ipad-pro-4gen-mainimage_2x.png", ["iPad14,3", "iPad14,4"], 11.0, (139, 199), "iPad Pro (11-inch) (4th generation)", "iPad Pro (11-inch) (4th generation)", 264, False, False, True, False, False, True, False, False, True, False, 23, False, 13, True, "m2", True, True),
Device("iPadPro12Inch6", "Device is an [iPad Pro 12.9-inch (6th generation)](https://support.apple.com/kb/SP883)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP882/ipad-pro-4gen-mainimage_2x.png", ["iPad14,5", "iPad14,6"], 12.9, (512, 683), "iPad Pro (12.9-inch) (6th generation)", "iPad Pro (12.9-inch) (6th generation)", 264, False, False, True, False, False, True, False, False, True, False, 23, False, 13, True, "m2", True, True),
Device("iPadPro11M4", "Device is an [iPad Pro 11-inch (M4)](https://support.apple.com/en-us/119892)", "https://cdsassets.apple.com/content/services/pub/image?productid=301031&size=240x240", ["iPad16,3", "iPad16,4"], 11.0, (605, 417), "iPad Pro (11-inch) (M4)", "iPad Pro (11-inch) (M4)", 264, False, False, True, False, False, True, False, False, True, False, 234, False, 1, True, "m4", True, True),
Device("iPadPro13M4", "Device is an [iPad Pro 13-inch (M4)](https://support.apple.com/en-us/119891)", "https://cdsassets.apple.com/content/services/pub/image?productid=301033&size=240x240", ["iPad16,5", "iPad16,6"], 13.0, (4, 3), "iPad Pro (13-inch) (M4)", "iPad Pro (13-inch) (M4)", 264, False, False, True, False, False, True, False, False, True, False, 234, False, 1, True, "m4", True, True),
Device("iPadPro11M4", "Device is an [iPad Pro 11-inch (M4)](https://support.apple.com/en-us/119892)", "https://cdsassets.apple.com/content/services/pub/image?productid=301031&size=240x240", ["iPad16,3", "iPad16,4"], 11.0, (605, 417), "iPad Pro (11-inch) (M4)", "iPad Pro (11-inch) (M4)", 264, False, False, True, False, False, True, False, False, True, False, 34, False, 1, True, "m4", True, True),
Device("iPadPro13M4", "Device is an [iPad Pro 13-inch (M4)](https://support.apple.com/en-us/119891)", "https://cdsassets.apple.com/content/services/pub/image?productid=301033&size=240x240", ["iPad16,5", "iPad16,6"], 13.0, (4, 3), "iPad Pro (13-inch) (M4)", "iPad Pro (13-inch) (M4)", 264, False, False, True, False, False, True, False, False, True, False, 34, False, 1, True, "m4", True, True),
]

homePods = [
Expand Down Expand Up @@ -1342,6 +1342,9 @@ extension Device {
% for device in list(filter(lambda device: device.applePencilSupport == 4, iOSDevices)):
case .${device.caseName}: return [.pro]
% end
% for device in list(filter(lambda device: device.applePencilSupport == 13, iOSDevices)):
case .${device.caseName}: return [.firstGeneration, .firstGenerationUsbC]
% end
% for device in list(filter(lambda device: device.applePencilSupport == 23, iOSDevices)):
case .${device.caseName}: return [.secondGeneration, .firstGenerationUsbC]
% end
Expand Down
50 changes: 50 additions & 0 deletions Tests/Tests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -713,6 +713,56 @@ class DeviceKitTests: XCTestCase {
}
}

func testApplePencilSupport() {
// Test iPad (10th gen) - Supports Apple Pencil (1st gen) and Apple Pencil (USB-C)
XCTAssertTrue(Device.iPad10.applePencilSupport.contains(.firstGeneration))
XCTAssertTrue(Device.iPad10.applePencilSupport.contains(.firstGenerationUsbC))
XCTAssertFalse(Device.iPad10.applePencilSupport.contains(.secondGeneration))
XCTAssertFalse(Device.iPad10.applePencilSupport.contains(.pro))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Lines should not have trailing whitespace.
trailing_whitespace Tests.swift:722

// Test iPad (A16) - Supports Apple Pencil (1st gen) and Apple Pencil (USB-C)
XCTAssertTrue(Device.iPadA16.applePencilSupport.contains(.firstGeneration))
XCTAssertTrue(Device.iPadA16.applePencilSupport.contains(.firstGenerationUsbC))
XCTAssertFalse(Device.iPadA16.applePencilSupport.contains(.secondGeneration))
XCTAssertFalse(Device.iPadA16.applePencilSupport.contains(.pro))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Lines should not have trailing whitespace.
trailing_whitespace Tests.swift:728

// Test iPad Air 11" (M2) - Supports Apple Pencil Pro and Apple Pencil (USB-C)
XCTAssertFalse(Device.iPadAir11M2.applePencilSupport.contains(.firstGeneration))
XCTAssertTrue(Device.iPadAir11M2.applePencilSupport.contains(.firstGenerationUsbC))
XCTAssertFalse(Device.iPadAir11M2.applePencilSupport.contains(.secondGeneration))
XCTAssertTrue(Device.iPadAir11M2.applePencilSupport.contains(.pro))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Lines should not have trailing whitespace.
trailing_whitespace Tests.swift:734

// Test iPad Air 13" (M2) - Supports Apple Pencil Pro and Apple Pencil (USB-C)
XCTAssertFalse(Device.iPadAir13M2.applePencilSupport.contains(.firstGeneration))
XCTAssertTrue(Device.iPadAir13M2.applePencilSupport.contains(.firstGenerationUsbC))
XCTAssertFalse(Device.iPadAir13M2.applePencilSupport.contains(.secondGeneration))
XCTAssertTrue(Device.iPadAir13M2.applePencilSupport.contains(.pro))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Lines should not have trailing whitespace.
trailing_whitespace Tests.swift:740

// Test iPad Air 11" (M3) - Supports Apple Pencil Pro and Apple Pencil (USB-C)
XCTAssertFalse(Device.iPadAir11M3.applePencilSupport.contains(.firstGeneration))
XCTAssertTrue(Device.iPadAir11M3.applePencilSupport.contains(.firstGenerationUsbC))
XCTAssertFalse(Device.iPadAir11M3.applePencilSupport.contains(.secondGeneration))
XCTAssertTrue(Device.iPadAir11M3.applePencilSupport.contains(.pro))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Lines should not have trailing whitespace.
trailing_whitespace Tests.swift:746

// Test iPad Air 13" (M3) - Supports Apple Pencil Pro and Apple Pencil (USB-C)
XCTAssertFalse(Device.iPadAir13M3.applePencilSupport.contains(.firstGeneration))
XCTAssertTrue(Device.iPadAir13M3.applePencilSupport.contains(.firstGenerationUsbC))
XCTAssertFalse(Device.iPadAir13M3.applePencilSupport.contains(.secondGeneration))
XCTAssertTrue(Device.iPadAir13M3.applePencilSupport.contains(.pro))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Lines should not have trailing whitespace.
trailing_whitespace Tests.swift:752

// Test iPad Pro 11" (M4) - Supports Apple Pencil Pro and Apple Pencil (USB-C)
XCTAssertFalse(Device.iPadPro11M4.applePencilSupport.contains(.firstGeneration))
XCTAssertTrue(Device.iPadPro11M4.applePencilSupport.contains(.firstGenerationUsbC))
XCTAssertFalse(Device.iPadPro11M4.applePencilSupport.contains(.secondGeneration))
XCTAssertTrue(Device.iPadPro11M4.applePencilSupport.contains(.pro))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Lines should not have trailing whitespace.
trailing_whitespace Tests.swift:758

// Test iPad Pro 13" (M4) - Supports Apple Pencil Pro and Apple Pencil (USB-C)
XCTAssertFalse(Device.iPadPro13M4.applePencilSupport.contains(.firstGeneration))
XCTAssertTrue(Device.iPadPro13M4.applePencilSupport.contains(.firstGenerationUsbC))
XCTAssertFalse(Device.iPadPro13M4.applePencilSupport.contains(.secondGeneration))
XCTAssertTrue(Device.iPadPro13M4.applePencilSupport.contains(.pro))
}

#endif

// MARK: - tvOS
Expand Down
Loading