├── .gitattributes ├── 9781484274279.JPG ├── Chapter 1 └── Final │ └── Demo │ ├── Demo.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ ├── Demo │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── SceneDelegate.swift │ ├── TaxCalculator.swift │ └── ViewController.swift │ ├── DemoTests │ ├── DemoTests.swift │ └── Info.plist │ └── DemoUITests │ ├── DemoUITests.swift │ └── Info.plist ├── Chapter 10 ├── Final │ └── Books │ │ ├── Books.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── swiftpm │ │ │ │ │ └── Package.resolved │ │ │ └── xcuserdata │ │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ ├── xcshareddata │ │ │ └── xcschemes │ │ │ │ ├── Books.xcscheme │ │ │ │ ├── BooksTests.xcscheme │ │ │ │ └── BooksUITests.xcscheme │ │ └── xcuserdata │ │ │ ├── garem.xcuserdatad │ │ │ └── xcdebugger │ │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ ├── Books │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── Amazon.imageset │ │ │ │ ├── Artboard Copy 10.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Apple.imageset │ │ │ │ ├── Artboard Copy 11.png │ │ │ │ └── Contents.json │ │ │ ├── BAM.imageset │ │ │ │ ├── Artboard Copy 6.png │ │ │ │ └── Contents.json │ │ │ ├── Barnes.imageset │ │ │ │ ├── Artboard Copy 9.png │ │ │ │ └── Contents.json │ │ │ ├── BookShop.imageset │ │ │ │ ├── Artboard Copy 7.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Indie.imageset │ │ │ │ ├── Artboard Copy.png │ │ │ │ └── Contents.json │ │ │ ├── book.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── book.png │ │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ │ ├── Contents.json │ │ │ │ └── line.horizontal.3.decrease.circle.svg │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── BookViewModule │ │ │ ├── BookViewModel.swift │ │ │ └── BookViewPresenter.swift │ │ ├── CoreData │ │ │ ├── Book+CoreDataClass.swift │ │ │ ├── Book+CoreDataProperties.swift │ │ │ ├── Books.xcdatamodeld │ │ │ │ ├── .xccurrentversion │ │ │ │ ├── Books 2.xcdatamodel │ │ │ │ │ └── contents │ │ │ │ └── Books.xcdatamodel │ │ │ │ │ └── contents │ │ │ ├── BuyLink+CoreDataClass.swift │ │ │ ├── BuyLink+CoreDataProperties.swift │ │ │ ├── CoreDataManager.swift │ │ │ ├── CoreDataStack.swift │ │ │ └── Storable.swift │ │ ├── FavoriteModule │ │ │ ├── FavoriteViewModel.swift │ │ │ └── FavoriteViewPresenter.swift │ │ ├── Info.plist │ │ ├── MainViewModule │ │ │ ├── MainViewModel.swift │ │ │ └── MainViewPresenter.swift │ │ ├── Managers │ │ │ ├── FavoritesDatabase.swift │ │ │ └── FavoritesManager.swift │ │ ├── Model │ │ │ ├── AllResponse.swift │ │ │ └── AuthorResponse.swift │ │ ├── NetworkLayer │ │ │ ├── APIEnvironment.swift │ │ │ ├── BookRequest.swift │ │ │ ├── NetworkLayer.swift │ │ │ └── RequestProtocol.swift │ │ ├── SceneDelegate.swift │ │ ├── Utilities │ │ │ └── UImageView+Cache.swift │ │ ├── ViewControllers │ │ │ ├── BookViewControllerA.swift │ │ │ ├── BookViewControllerB.swift │ │ │ ├── FavViewController.swift │ │ │ ├── ListViewController.swift │ │ │ └── MainViewController.swift │ │ └── Views │ │ │ ├── BookDetailsTableViewCell.swift │ │ │ └── BookTableViewCell.swift │ │ ├── BooksTests │ │ ├── BookViewTests │ │ │ ├── BookViewModelTests.swift │ │ │ └── BookViewPresenterTests.swift │ │ ├── CoreData │ │ │ ├── CoreDataManagerTests.swift │ │ │ ├── CoreDataStackTests.swift │ │ │ ├── Model.xcdatamodeld │ │ │ │ └── Model.xcdatamodel │ │ │ │ │ └── contents │ │ │ ├── TestEntity+CoreDataClass.swift │ │ │ ├── TestEntity+CoreDataProperties.swift │ │ │ └── TestModel.xcdatamodeld │ │ │ │ └── TestModel.xcdatamodel │ │ │ │ └── contents │ │ ├── FavoriteTests │ │ │ └── FavoritesManagerTests.swift │ │ ├── Helpers │ │ │ ├── BestSellerBooksStub.json │ │ │ ├── MainViewModelStub.swift │ │ │ ├── NetworkLayerStub.swift │ │ │ ├── TestRequest.swift │ │ │ └── URLSessionMock.swift │ │ ├── Info.plist │ │ ├── Integrations │ │ │ ├── BookViewIntegrationTests.swift │ │ │ └── MainViewIntegrationTests.swift │ │ ├── MainViewTests │ │ │ ├── MainViewModelTests.swift │ │ │ └── MainViewPresenterTests.swift │ │ ├── NetworkLayerTests │ │ │ ├── APIEnvironmentTests.swift │ │ │ ├── BookRequestTests.swift │ │ │ ├── NetworkLayerTests.swift │ │ │ └── RequestProtocolTests.swift │ │ └── UtilitiesTests │ │ │ └── UIImageViewExtentionTests.swift │ │ ├── BooksUITests │ │ ├── BooksUITests.swift │ │ └── Info.plist │ │ └── README.md └── Start │ └── Books │ ├── Books.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── swiftpm │ │ │ │ └── Package.resolved │ │ └── xcuserdata │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── xcschemes │ │ │ ├── Books.xcscheme │ │ │ ├── BooksTests.xcscheme │ │ │ └── BooksUITests.xcscheme │ └── xcuserdata │ │ └── khaledElMorabea.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist │ ├── Books │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── Amazon.imageset │ │ │ ├── Artboard Copy 10.png │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── ItunesArtwork@2x.png │ │ ├── Apple.imageset │ │ │ ├── Artboard Copy 11.png │ │ │ └── Contents.json │ │ ├── BAM.imageset │ │ │ ├── Artboard Copy 6.png │ │ │ └── Contents.json │ │ ├── Barnes.imageset │ │ │ ├── Artboard Copy 9.png │ │ │ └── Contents.json │ │ ├── BookShop.imageset │ │ │ ├── Artboard Copy 7.png │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Indie.imageset │ │ │ ├── Artboard Copy.png │ │ │ └── Contents.json │ │ ├── book.imageset │ │ │ ├── Contents.json │ │ │ └── book.png │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ ├── Contents.json │ │ │ └── line.horizontal.3.decrease.circle.svg │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── CoreData │ │ ├── Book+CoreDataClass.swift │ │ ├── Book+CoreDataProperties.swift │ │ ├── Books.xcdatamodeld │ │ │ ├── .xccurrentversion │ │ │ └── Books.xcdatamodel │ │ │ │ └── contents │ │ ├── BuyLink+CoreDataClass.swift │ │ └── BuyLink+CoreDataProperties.swift │ ├── Info.plist │ ├── MainViewModule │ │ ├── MainViewModel.swift │ │ └── MainViewPresenter.swift │ ├── Model │ │ ├── AllResponse.swift │ │ └── AuthorResponse.swift │ ├── NetworkLayer │ │ ├── APIEnvironment.swift │ │ ├── BookRequest.swift │ │ ├── NetworkLayer.swift │ │ └── RequestProtocol.swift │ ├── SceneDelegate.swift │ ├── Utilities │ │ └── UImageView+Cache.swift │ ├── ViewControllers │ │ ├── BookViewControllerA.swift │ │ ├── BookViewControllerB.swift │ │ ├── FavViewController.swift │ │ ├── ListViewController.swift │ │ └── MainViewController.swift │ └── Views │ │ ├── BookDetailsTableViewCell.swift │ │ └── BookTableViewCell.swift │ ├── BooksTests │ ├── Helpers │ │ ├── BestSellerBooksStub.json │ │ ├── MainViewModelStub.swift │ │ ├── NetworkLayerStub.swift │ │ ├── TestRequest.swift │ │ └── URLSessionMock.swift │ ├── Info.plist │ ├── Integrations │ │ └── MainViewIntegrationTests.swift │ ├── MainViewTests │ │ ├── MainViewModelTests.swift │ │ └── MainViewPresenterTests.swift │ ├── NetworkLayerTests │ │ ├── APIEnvironmentTests.swift │ │ ├── BookRequestTests.swift │ │ ├── NetworkLayerTests.swift │ │ └── RequestProtocolTests.swift │ └── UtilitiesTests │ │ └── UIImageViewExtentionTests.swift │ ├── BooksUITests │ ├── BooksUITests.swift │ └── Info.plist │ └── README.md ├── Chapter 11 ├── Final │ └── Books │ │ ├── Books.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── swiftpm │ │ │ │ │ └── Package.resolved │ │ │ └── xcuserdata │ │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ ├── xcshareddata │ │ │ └── xcschemes │ │ │ │ ├── Books.xcscheme │ │ │ │ ├── BooksTests.xcscheme │ │ │ │ └── BooksUITests.xcscheme │ │ └── xcuserdata │ │ │ ├── garem.xcuserdatad │ │ │ └── xcdebugger │ │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ ├── Books │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── Amazon.imageset │ │ │ │ ├── Artboard Copy 10.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Apple.imageset │ │ │ │ ├── Artboard Copy 11.png │ │ │ │ └── Contents.json │ │ │ ├── BAM.imageset │ │ │ │ ├── Artboard Copy 6.png │ │ │ │ └── Contents.json │ │ │ ├── Barnes.imageset │ │ │ │ ├── Artboard Copy 9.png │ │ │ │ └── Contents.json │ │ │ ├── BookShop.imageset │ │ │ │ ├── Artboard Copy 7.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Indie.imageset │ │ │ │ ├── Artboard Copy.png │ │ │ │ └── Contents.json │ │ │ ├── book.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── book.png │ │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ │ ├── Contents.json │ │ │ │ └── line.horizontal.3.decrease.circle.svg │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── BookViewModule │ │ │ ├── BookViewModel.swift │ │ │ └── BookViewPresenter.swift │ │ ├── CoreData │ │ │ ├── Book+CoreDataClass.swift │ │ │ ├── Book+CoreDataProperties.swift │ │ │ ├── Books.xcdatamodeld │ │ │ │ ├── .xccurrentversion │ │ │ │ ├── Books 2.xcdatamodel │ │ │ │ │ └── contents │ │ │ │ └── Books.xcdatamodel │ │ │ │ │ └── contents │ │ │ ├── BuyLink+CoreDataClass.swift │ │ │ ├── BuyLink+CoreDataProperties.swift │ │ │ ├── CoreDataManager.swift │ │ │ ├── CoreDataStack.swift │ │ │ └── Storable.swift │ │ ├── FavoriteModule │ │ │ ├── FavoriteViewModel.swift │ │ │ └── FavoriteViewPresenter.swift │ │ ├── Info.plist │ │ ├── MainViewModule │ │ │ ├── MainViewModel.swift │ │ │ └── MainViewPresenter.swift │ │ ├── Managers │ │ │ └── FavoritesManager.swift │ │ ├── Model │ │ │ ├── AllResponse.swift │ │ │ └── AuthorResponse.swift │ │ ├── NetworkLayer │ │ │ ├── APIEnvironment.swift │ │ │ ├── BookRequest.swift │ │ │ ├── NetworkLayer.swift │ │ │ ├── RequestProtocol.swift │ │ │ └── ReviewsRequest.swift │ │ ├── SceneDelegate.swift │ │ ├── Utilities │ │ │ └── UImageView+Cache.swift │ │ ├── ViewControllers │ │ │ ├── BookViewControllerA.swift │ │ │ ├── BookViewControllerB.swift │ │ │ ├── FavViewController.swift │ │ │ ├── ListViewController.swift │ │ │ └── MainViewController.swift │ │ └── Views │ │ │ ├── BookDetailsTableViewCell.swift │ │ │ └── BookTableViewCell.swift │ │ ├── BooksTests │ │ ├── BookViewTests │ │ │ ├── BookViewModelTests.swift │ │ │ └── BookViewPresenterTests.swift │ │ ├── CoreData │ │ │ ├── CoreDataManagerTests.swift │ │ │ ├── CoreDataStackTests.swift │ │ │ ├── TestEntity+CoreDataClass.swift │ │ │ ├── TestEntity+CoreDataProperties.swift │ │ │ └── TestModel.xcdatamodeld │ │ │ │ └── TestModel.xcdatamodel │ │ │ │ └── contents │ │ ├── FavoriteTests │ │ │ └── FavoritesManagerTests.swift │ │ ├── Helpers │ │ │ ├── BestSellerBooksStub.json │ │ │ ├── BookViewModelStub.swift │ │ │ ├── BookViewPresenterDelegateMock.swift │ │ │ ├── MainViewModelStub.swift │ │ │ ├── NetworkLayerStub.swift │ │ │ ├── TestRequest.swift │ │ │ ├── URLSessionMock.swift │ │ │ ├── booksNoReview.json │ │ │ └── booksReview.json │ │ ├── Info.plist │ │ ├── Integrations │ │ │ ├── BookViewIntegrationTests.swift │ │ │ └── MainViewIntegrationTests.swift │ │ ├── MainViewTests │ │ │ ├── MainViewModelTests.swift │ │ │ └── MainViewPresenterTests.swift │ │ ├── NetworkLayerTests │ │ │ ├── APIEnvironmentTests.swift │ │ │ ├── BookRequestTests.swift │ │ │ ├── NetworkLayerTests.swift │ │ │ ├── RequestProtocolTests.swift │ │ │ └── ReviewsRequestTests.swift │ │ └── UtilitiesTests │ │ │ └── UIImageViewExtentionTests.swift │ │ ├── BooksUITests │ │ ├── BooksUITests.swift │ │ └── Info.plist │ │ └── README.md └── Start │ └── Books │ ├── Books.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── swiftpm │ │ │ │ └── Package.resolved │ │ └── xcuserdata │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── xcschemes │ │ │ ├── Books.xcscheme │ │ │ ├── BooksTests.xcscheme │ │ │ └── BooksUITests.xcscheme │ └── xcuserdata │ │ ├── garem.xcuserdatad │ │ └── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── khaledElMorabea.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist │ ├── Books │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── Amazon.imageset │ │ │ ├── Artboard Copy 10.png │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── ItunesArtwork@2x.png │ │ ├── Apple.imageset │ │ │ ├── Artboard Copy 11.png │ │ │ └── Contents.json │ │ ├── BAM.imageset │ │ │ ├── Artboard Copy 6.png │ │ │ └── Contents.json │ │ ├── Barnes.imageset │ │ │ ├── Artboard Copy 9.png │ │ │ └── Contents.json │ │ ├── BookShop.imageset │ │ │ ├── Artboard Copy 7.png │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Indie.imageset │ │ │ ├── Artboard Copy.png │ │ │ └── Contents.json │ │ ├── book.imageset │ │ │ ├── Contents.json │ │ │ └── book.png │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ ├── Contents.json │ │ │ └── line.horizontal.3.decrease.circle.svg │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── BookViewModule │ │ ├── BookViewModel.swift │ │ └── BookViewPresenter.swift │ ├── CoreData │ │ ├── Book+CoreDataClass.swift │ │ ├── Book+CoreDataProperties.swift │ │ ├── Books.xcdatamodeld │ │ │ ├── .xccurrentversion │ │ │ ├── Books 2.xcdatamodel │ │ │ │ └── contents │ │ │ └── Books.xcdatamodel │ │ │ │ └── contents │ │ ├── BuyLink+CoreDataClass.swift │ │ ├── BuyLink+CoreDataProperties.swift │ │ ├── CoreDataManager.swift │ │ ├── CoreDataStack.swift │ │ └── Storable.swift │ ├── FavoriteModule │ │ ├── FavoriteViewModel.swift │ │ └── FavoriteViewPresenter.swift │ ├── Info.plist │ ├── MainViewModule │ │ ├── MainViewModel.swift │ │ └── MainViewPresenter.swift │ ├── Managers │ │ ├── FavoritesDatabase.swift │ │ └── FavoritesManager.swift │ ├── Model │ │ ├── AllResponse.swift │ │ └── AuthorResponse.swift │ ├── NetworkLayer │ │ ├── APIEnvironment.swift │ │ ├── BookRequest.swift │ │ ├── NetworkLayer.swift │ │ └── RequestProtocol.swift │ ├── SceneDelegate.swift │ ├── Utilities │ │ └── UImageView+Cache.swift │ ├── ViewControllers │ │ ├── BookViewControllerA.swift │ │ ├── BookViewControllerB.swift │ │ ├── FavViewController.swift │ │ ├── ListViewController.swift │ │ └── MainViewController.swift │ └── Views │ │ ├── BookDetailsTableViewCell.swift │ │ └── BookTableViewCell.swift │ ├── BooksTests │ ├── BookViewTests │ │ ├── BookViewModelTests.swift │ │ └── BookViewPresenterTests.swift │ ├── CoreData │ │ ├── CoreDataManagerTests.swift │ │ ├── CoreDataStackTests.swift │ │ ├── Model.xcdatamodeld │ │ │ └── Model.xcdatamodel │ │ │ │ └── contents │ │ ├── TestEntity+CoreDataClass.swift │ │ ├── TestEntity+CoreDataProperties.swift │ │ └── TestModel.xcdatamodeld │ │ │ └── TestModel.xcdatamodel │ │ │ └── contents │ ├── FavoriteTests │ │ └── FavoritesManagerTests.swift │ ├── Helpers │ │ ├── BestSellerBooksStub.json │ │ ├── MainViewModelStub.swift │ │ ├── NetworkLayerStub.swift │ │ ├── TestRequest.swift │ │ ├── URLSessionMock.swift │ │ ├── booksNoReview.json │ │ └── booksReview.json │ ├── Info.plist │ ├── Integrations │ │ ├── BookViewIntegrationTests.swift │ │ └── MainViewIntegrationTests.swift │ ├── MainViewTests │ │ ├── MainViewModelTests.swift │ │ └── MainViewPresenterTests.swift │ ├── NetworkLayerTests │ │ ├── APIEnvironmentTests.swift │ │ ├── BookRequestTests.swift │ │ ├── NetworkLayerTests.swift │ │ └── RequestProtocolTests.swift │ └── UtilitiesTests │ │ └── UIImageViewExtentionTests.swift │ ├── BooksUITests │ ├── BooksUITests.swift │ └── Info.plist │ └── README.md ├── Chapter 12 ├── Final │ └── Books │ │ ├── Books.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── swiftpm │ │ │ │ │ └── Package.resolved │ │ │ └── xcuserdata │ │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ ├── xcshareddata │ │ │ └── xcschemes │ │ │ │ ├── Books.xcscheme │ │ │ │ ├── BooksTests.xcscheme │ │ │ │ └── BooksUITests.xcscheme │ │ └── xcuserdata │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ ├── Books │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── Amazon.imageset │ │ │ │ ├── Artboard Copy 10.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Apple.imageset │ │ │ │ ├── Artboard Copy 11.png │ │ │ │ └── Contents.json │ │ │ ├── BAM.imageset │ │ │ │ ├── Artboard Copy 6.png │ │ │ │ └── Contents.json │ │ │ ├── Barnes.imageset │ │ │ │ ├── Artboard Copy 9.png │ │ │ │ └── Contents.json │ │ │ ├── BookShop.imageset │ │ │ │ ├── Artboard Copy 7.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Indie.imageset │ │ │ │ ├── Artboard Copy.png │ │ │ │ └── Contents.json │ │ │ ├── book.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── book.png │ │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ │ ├── Contents.json │ │ │ │ └── line.horizontal.3.decrease.circle.svg │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── BookViewModule │ │ │ ├── BookViewModel.swift │ │ │ └── BookViewPresenter.swift │ │ ├── CoreData │ │ │ ├── Book+CoreDataClass.swift │ │ │ ├── Book+CoreDataProperties.swift │ │ │ ├── Books.xcdatamodeld │ │ │ │ ├── .xccurrentversion │ │ │ │ ├── Books 2.xcdatamodel │ │ │ │ │ └── contents │ │ │ │ └── Books.xcdatamodel │ │ │ │ │ └── contents │ │ │ ├── BuyLink+CoreDataClass.swift │ │ │ ├── BuyLink+CoreDataProperties.swift │ │ │ ├── CoreDataManager.swift │ │ │ ├── CoreDataStack.swift │ │ │ └── Storable.swift │ │ ├── FavoriteModule │ │ │ ├── FavoriteViewModel.swift │ │ │ └── FavoriteViewPresenter.swift │ │ ├── Info.plist │ │ ├── MainViewModule │ │ │ ├── MainViewModel.swift │ │ │ └── MainViewPresenter.swift │ │ ├── Managers │ │ │ └── FavoritesManager.swift │ │ ├── Model │ │ │ ├── AllResponse.swift │ │ │ └── AuthorResponse.swift │ │ ├── NetworkLayer │ │ │ ├── APIEnvironment.swift │ │ │ ├── BookRequest.swift │ │ │ ├── NetworkLayer.swift │ │ │ ├── RequestProtocol.swift │ │ │ └── ReviewsRequest.swift │ │ ├── SceneDelegate.swift │ │ ├── Utilities │ │ │ └── UImageView+Cache.swift │ │ ├── ViewControllers │ │ │ ├── BookViewControllerA.swift │ │ │ ├── BookViewControllerB.swift │ │ │ ├── FavViewController.swift │ │ │ ├── ListViewController.swift │ │ │ └── MainViewController.swift │ │ └── Views │ │ │ ├── BookDetailsTableViewCell.swift │ │ │ └── BookTableViewCell.swift │ │ ├── BooksTests │ │ ├── BookViewTests │ │ │ ├── BookViewModelTests.swift │ │ │ └── BookViewPresenterTests.swift │ │ ├── CoreData │ │ │ ├── CoreDataManagerTests.swift │ │ │ ├── CoreDataStackTests.swift │ │ │ ├── TestEntity+CoreDataClass.swift │ │ │ ├── TestEntity+CoreDataProperties.swift │ │ │ └── TestModel.xcdatamodeld │ │ │ │ └── TestModel.xcdatamodel │ │ │ │ └── contents │ │ ├── FavoriteTests │ │ │ └── FavoritesManagerTests.swift │ │ ├── Helpers │ │ │ ├── BestSellerBooksStub.json │ │ │ ├── BookViewModelStub.swift │ │ │ ├── BookViewPresenterDelegateMock.swift │ │ │ ├── MainViewModelStub.swift │ │ │ ├── NetworkLayerStub.swift │ │ │ ├── TestRequest.swift │ │ │ ├── URLSessionMock.swift │ │ │ ├── booksNoReview.json │ │ │ └── booksReview.json │ │ ├── Info.plist │ │ ├── Integrations │ │ │ ├── BookViewIntegrationTests.swift │ │ │ └── MainViewIntegrationTests.swift │ │ ├── MainViewTests │ │ │ ├── MainViewModelTests.swift │ │ │ └── MainViewPresenterTests.swift │ │ ├── NetworkLayerTests │ │ │ ├── APIEnvironmentTests.swift │ │ │ ├── BookRequestTests.swift │ │ │ ├── NetworkLayerTests.swift │ │ │ ├── RequestProtocolTests.swift │ │ │ └── ReviewsRequestTests.swift │ │ └── UtilitiesTests │ │ │ └── UIImageViewExtentionTests.swift │ │ ├── BooksUITests │ │ ├── BooksUITests.swift │ │ └── Info.plist │ │ └── README.md └── Start │ └── Books │ ├── Books.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── swiftpm │ │ │ │ └── Package.resolved │ │ └── xcuserdata │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── xcschemes │ │ │ ├── Books.xcscheme │ │ │ ├── BooksTests.xcscheme │ │ │ └── BooksUITests.xcscheme │ └── xcuserdata │ │ └── khaledElMorabea.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist │ ├── Books │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── Amazon.imageset │ │ │ ├── Artboard Copy 10.png │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── ItunesArtwork@2x.png │ │ ├── Apple.imageset │ │ │ ├── Artboard Copy 11.png │ │ │ └── Contents.json │ │ ├── BAM.imageset │ │ │ ├── Artboard Copy 6.png │ │ │ └── Contents.json │ │ ├── Barnes.imageset │ │ │ ├── Artboard Copy 9.png │ │ │ └── Contents.json │ │ ├── BookShop.imageset │ │ │ ├── Artboard Copy 7.png │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Indie.imageset │ │ │ ├── Artboard Copy.png │ │ │ └── Contents.json │ │ ├── book.imageset │ │ │ ├── Contents.json │ │ │ └── book.png │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ ├── Contents.json │ │ │ └── line.horizontal.3.decrease.circle.svg │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── BookViewModule │ │ ├── BookViewModel.swift │ │ └── BookViewPresenter.swift │ ├── CoreData │ │ ├── Book+CoreDataClass.swift │ │ ├── Book+CoreDataProperties.swift │ │ ├── Books.xcdatamodeld │ │ │ ├── .xccurrentversion │ │ │ ├── Books 2.xcdatamodel │ │ │ │ └── contents │ │ │ └── Books.xcdatamodel │ │ │ │ └── contents │ │ ├── BuyLink+CoreDataClass.swift │ │ ├── BuyLink+CoreDataProperties.swift │ │ ├── CoreDataManager.swift │ │ ├── CoreDataStack.swift │ │ └── Storable.swift │ ├── FavoriteModule │ │ ├── FavoriteViewModel.swift │ │ └── FavoriteViewPresenter.swift │ ├── Info.plist │ ├── MainViewModule │ │ ├── MainViewModel.swift │ │ └── MainViewPresenter.swift │ ├── Managers │ │ └── FavoritesManager.swift │ ├── Model │ │ ├── AllResponse.swift │ │ └── AuthorResponse.swift │ ├── NetworkLayer │ │ ├── APIEnvironment.swift │ │ ├── BookRequest.swift │ │ ├── NetworkLayer.swift │ │ ├── RequestProtocol.swift │ │ └── ReviewsRequest.swift │ ├── SceneDelegate.swift │ ├── Utilities │ │ └── UImageView+Cache.swift │ ├── ViewControllers │ │ ├── BookViewControllerA.swift │ │ ├── BookViewControllerB.swift │ │ ├── FavViewController.swift │ │ ├── ListViewController.swift │ │ └── MainViewController.swift │ └── Views │ │ ├── BookDetailsTableViewCell.swift │ │ └── BookTableViewCell.swift │ ├── BooksTests │ ├── BookViewTests │ │ ├── BookViewModelTests.swift │ │ └── BookViewPresenterTests.swift │ ├── CoreData │ │ ├── CoreDataManagerTests.swift │ │ ├── CoreDataStackTests.swift │ │ ├── TestEntity+CoreDataClass.swift │ │ ├── TestEntity+CoreDataProperties.swift │ │ └── TestModel.xcdatamodeld │ │ │ └── TestModel.xcdatamodel │ │ │ └── contents │ ├── FavoriteTests │ │ └── FavoritesManagerTests.swift │ ├── Helpers │ │ ├── BestSellerBooksStub.json │ │ ├── BookViewModelStub.swift │ │ ├── BookViewPresenterDelegateMock.swift │ │ ├── MainViewModelStub.swift │ │ ├── NetworkLayerStub.swift │ │ ├── TestRequest.swift │ │ ├── URLSessionMock.swift │ │ ├── booksNoReview.json │ │ └── booksReview.json │ ├── Info.plist │ ├── Integrations │ │ ├── BookViewIntegrationTests.swift │ │ └── MainViewIntegrationTests.swift │ ├── MainViewTests │ │ ├── MainViewModelTests.swift │ │ └── MainViewPresenterTests.swift │ ├── NetworkLayerTests │ │ ├── APIEnvironmentTests.swift │ │ ├── BookRequestTests.swift │ │ ├── NetworkLayerTests.swift │ │ ├── RequestProtocolTests.swift │ │ └── ReviewsRequestTests.swift │ └── UtilitiesTests │ │ └── UIImageViewExtentionTests.swift │ ├── BooksUITests │ ├── BooksUITests.swift │ └── Info.plist │ └── README.md ├── Chapter 2 ├── Calc-Final │ ├── Calc.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── Calc.xcscheme │ │ │ └── CalcTests.xcscheme │ ├── Calc │ │ ├── Calc.h │ │ ├── Calculator.swift │ │ ├── Info.plist │ │ └── Logger.swift │ └── CalcTests │ │ ├── CalculatorTests.swift │ │ ├── Info.plist │ │ └── LoggerTests.swift └── Calc-Start │ ├── Calc.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ ├── Calc.xcscheme │ │ └── CalcTests.xcscheme │ └── Calc │ ├── Calc.h │ ├── Calculator.swift │ ├── Info.plist │ └── Logger.swift ├── Chapter 3 ├── UITests_Final │ ├── Demo.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── Demo.xcscheme │ │ │ └── DemoUITests.xcscheme │ ├── Demo │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── DetailsViewController.swift │ │ ├── Info.plist │ │ ├── MainTableViewController.swift │ │ └── SceneDelegate.swift │ └── DemoUITests │ │ ├── DemoUITests.swift │ │ └── Info.plist └── UITests_Start │ ├── Demo.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ ├── Demo.xcscheme │ │ └── DemoUITests.xcscheme │ └── Demo │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── DetailsViewController.swift │ ├── Info.plist │ ├── MainTableViewController.swift │ └── SceneDelegate.swift ├── Chapter 4 └── TestingPyramid │ ├── TestingPyramid.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ ├── TestingPyramid │ ├── AccessibilityIdentifiers.swift │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Constants.swift │ ├── DatabaseManager.swift │ ├── Info.plist │ ├── LoginManager.swift │ ├── LoginViewController.swift │ ├── PersistenceManager.swift │ ├── SceneDelegate.swift │ ├── StatisticsViewController.swift │ ├── Validator.swift │ ├── accounts.plist │ └── testAccounts.plist │ ├── TestingPyramidTests │ ├── Info.plist │ ├── LoginManagerTests.swift │ └── ValidatorTests.swift │ └── TestingPyramidUITests │ ├── Info.plist │ └── TestingPyramidUITests.swift ├── Chapter 5 ├── Final │ └── Demo │ │ ├── Demo.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── Demo.xcscheme │ │ │ ├── DemoTests.xcscheme │ │ │ └── DemoUITests.xcscheme │ │ ├── Demo │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── Aeropress.imageset │ │ │ │ ├── Aeropress@2x.png │ │ │ │ ├── Aeropress@3x.png │ │ │ │ └── Contents.json │ │ │ ├── Affogato.imageset │ │ │ │ ├── Affogato@2x.png │ │ │ │ ├── Affogato@3x.png │ │ │ │ └── Contents.json │ │ │ ├── Americano.imageset │ │ │ │ ├── Americano@2x.png │ │ │ │ ├── Americano@3x.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Black.imageset │ │ │ │ ├── Black@2x.png │ │ │ │ ├── Black@3x.png │ │ │ │ └── Contents.json │ │ │ ├── Cafe au lait.imageset │ │ │ │ ├── Cafe au lait@2x.png │ │ │ │ ├── Cafe au lait@3x.png │ │ │ │ └── Contents.json │ │ │ ├── Cappuccino.imageset │ │ │ │ ├── Cappuccino@2x.png │ │ │ │ ├── Cappuccino@3x.png │ │ │ │ └── Contents.json │ │ │ ├── Cold Brew-M.imageset │ │ │ │ ├── Cold Brew@2x.png │ │ │ │ ├── Cold Brew@3x.png │ │ │ │ └── Contents.json │ │ │ ├── Cold brew.imageset │ │ │ │ ├── Cold brew@2x.png │ │ │ │ ├── Cold brew@3x.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Cortado.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Cortado@2x.png │ │ │ │ └── Cortado@3x.png │ │ │ ├── Doppio.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Doppio@2x.png │ │ │ │ └── Doppio@3x.png │ │ │ ├── Drip.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Drip@2x.png │ │ │ │ └── Drip@3x.png │ │ │ ├── Espresso.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Espresso@2x.png │ │ │ │ └── Espresso@3x.png │ │ │ ├── Flat white.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Flat white@2x.png │ │ │ │ └── Flat white@3x.png │ │ │ ├── Frappuccino.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Frappuccino@2x.png │ │ │ │ └── Frappuccino@3x.png │ │ │ ├── French press.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── French press@2x.png │ │ │ │ └── French press@3x.png │ │ │ ├── Galao.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Galao@2x.png │ │ │ │ └── Galao@3x.png │ │ │ ├── Iced coffee.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Iced coffee@2x.png │ │ │ │ └── Iced coffee@3x.png │ │ │ ├── Iced espresso.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Iced espresso@2x.png │ │ │ │ └── Iced espresso@3x.png │ │ │ ├── Irish.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Irish@2x.png │ │ │ │ └── Irish@3x.png │ │ │ ├── Latte.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Latte@2x.png │ │ │ │ └── Latte@3x.png │ │ │ ├── Macchiato.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Macchiato@2x.png │ │ │ │ └── Macchiato@3x.png │ │ │ ├── Majagran.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Majagran@2x.png │ │ │ │ └── Majagran@3x.png │ │ │ ├── Mocha.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Mocha@2x.png │ │ │ │ └── Mocha@3x.png │ │ │ ├── Moka pot.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Moka pot@2x.png │ │ │ │ └── Moka pot@3x.png │ │ │ ├── Nitro.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Nitro@2x.png │ │ │ │ └── Nitro@3x.png │ │ │ ├── Precolator.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Precolator@2x.png │ │ │ │ └── Precolator@3x.png │ │ │ ├── Pull over.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Pull over@2x.png │ │ │ │ └── Pull over@3x.png │ │ │ ├── Red eye.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Red eye@2x.png │ │ │ │ └── Red eye@3x.png │ │ │ ├── Ristretto.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Ristretto@2x.png │ │ │ │ └── Ristretto@3x.png │ │ │ ├── Single Serve.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Single Serve@2x.png │ │ │ │ └── Single Serve@3x.png │ │ │ └── lungo.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── lungo@2x.png │ │ │ │ └── lungo@3x.png │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Categoris.plist │ │ ├── CoffeeDetailsView │ │ │ ├── CoffeeDetailsPresenter.swift │ │ │ └── CoffeeDetailsViewController.swift │ │ ├── CoffeeDrinksView │ │ │ ├── CoffeeDrink.swift │ │ │ ├── CoffeeDrinkViewCell.swift │ │ │ ├── CoffeeDrinksDataSource.swift │ │ │ ├── CoffeeDrinksModel.swift │ │ │ ├── CoffeeDrinksPresenter.swift │ │ │ └── CoffeeDrinksViewController.swift │ │ ├── Info.plist │ │ ├── MainView │ │ │ ├── MainViewController.swift │ │ │ ├── MainViewDataSource.swift │ │ │ ├── MainViewModel.swift │ │ │ └── MainViewPresenter.swift │ │ ├── SceneDelegate.swift │ │ ├── coffee_drinks.plist │ │ ├── coffee_drinks_mock.plist │ │ └── coffee_makers.plist │ │ ├── DemoTests │ │ ├── CoffeeDrinksDetailsView │ │ │ └── CoffeeDetailsPresenterTests.swift │ │ ├── CoffeeDrinksViewTests │ │ │ ├── CoffeeDrinksIntegrationTests.swift │ │ │ ├── CoffeeDrinksModelTests.swift │ │ │ ├── CoffeeDrinksPresenterTests.swift │ │ │ └── Mocks │ │ │ │ ├── CoffeeDrinksDataSourceStub.swift │ │ │ │ └── CoffeeDrinksModelStub.swift │ │ ├── Info.plist │ │ └── MainViewTests │ │ │ ├── MainViewIntegrationTests.swift │ │ │ ├── MainViewModelTests.swift │ │ │ ├── MainViewPresenterTests.swift │ │ │ └── Mocks │ │ │ ├── MainViewDataSourceMock.swift │ │ │ └── MainViewModelMock.swift │ │ └── DemoUITests │ │ ├── CoffeeDetailsUITests.swift │ │ ├── CoffeeDrinkDetailsUITests.swift │ │ ├── CoffeeDrinksUITests.swift │ │ ├── Info.plist │ │ └── MainViewUITests.swift └── Start │ └── Demo │ ├── Demo.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ ├── Demo │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── Aeropress.imageset │ │ │ ├── Aeropress@2x.png │ │ │ ├── Aeropress@3x.png │ │ │ └── Contents.json │ │ ├── Affogato.imageset │ │ │ ├── Affogato@2x.png │ │ │ ├── Affogato@3x.png │ │ │ └── Contents.json │ │ ├── Americano.imageset │ │ │ ├── Americano@2x.png │ │ │ ├── Americano@3x.png │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── ItunesArtwork@2x.png │ │ ├── Black.imageset │ │ │ ├── Black@2x.png │ │ │ ├── Black@3x.png │ │ │ └── Contents.json │ │ ├── Cafe au lait.imageset │ │ │ ├── Cafe au lait@2x.png │ │ │ ├── Cafe au lait@3x.png │ │ │ └── Contents.json │ │ ├── Cappuccino.imageset │ │ │ ├── Cappuccino@2x.png │ │ │ ├── Cappuccino@3x.png │ │ │ └── Contents.json │ │ ├── Cold Brew-M.imageset │ │ │ ├── Cold Brew@2x.png │ │ │ ├── Cold Brew@3x.png │ │ │ └── Contents.json │ │ ├── Cold brew.imageset │ │ │ ├── Cold brew@2x.png │ │ │ ├── Cold brew@3x.png │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Cortado.imageset │ │ │ ├── Contents.json │ │ │ ├── Cortado@2x.png │ │ │ └── Cortado@3x.png │ │ ├── Doppio.imageset │ │ │ ├── Contents.json │ │ │ ├── Doppio@2x.png │ │ │ └── Doppio@3x.png │ │ ├── Drip.imageset │ │ │ ├── Contents.json │ │ │ ├── Drip@2x.png │ │ │ └── Drip@3x.png │ │ ├── Espresso.imageset │ │ │ ├── Contents.json │ │ │ ├── Espresso@2x.png │ │ │ └── Espresso@3x.png │ │ ├── Flat white.imageset │ │ │ ├── Contents.json │ │ │ ├── Flat white@2x.png │ │ │ └── Flat white@3x.png │ │ ├── Frappuccino.imageset │ │ │ ├── Contents.json │ │ │ ├── Frappuccino@2x.png │ │ │ └── Frappuccino@3x.png │ │ ├── French press.imageset │ │ │ ├── Contents.json │ │ │ ├── French press@2x.png │ │ │ └── French press@3x.png │ │ ├── Galao.imageset │ │ │ ├── Contents.json │ │ │ ├── Galao@2x.png │ │ │ └── Galao@3x.png │ │ ├── Iced coffee.imageset │ │ │ ├── Contents.json │ │ │ ├── Iced coffee@2x.png │ │ │ └── Iced coffee@3x.png │ │ ├── Iced espresso.imageset │ │ │ ├── Contents.json │ │ │ ├── Iced espresso@2x.png │ │ │ └── Iced espresso@3x.png │ │ ├── Irish.imageset │ │ │ ├── Contents.json │ │ │ ├── Irish@2x.png │ │ │ └── Irish@3x.png │ │ ├── Latte.imageset │ │ │ ├── Contents.json │ │ │ ├── Latte@2x.png │ │ │ └── Latte@3x.png │ │ ├── Macchiato.imageset │ │ │ ├── Contents.json │ │ │ ├── Macchiato@2x.png │ │ │ └── Macchiato@3x.png │ │ ├── Majagran.imageset │ │ │ ├── Contents.json │ │ │ ├── Majagran@2x.png │ │ │ └── Majagran@3x.png │ │ ├── Mocha.imageset │ │ │ ├── Contents.json │ │ │ ├── Mocha@2x.png │ │ │ └── Mocha@3x.png │ │ ├── Moka pot.imageset │ │ │ ├── Contents.json │ │ │ ├── Moka pot@2x.png │ │ │ └── Moka pot@3x.png │ │ ├── Nitro.imageset │ │ │ ├── Contents.json │ │ │ ├── Nitro@2x.png │ │ │ └── Nitro@3x.png │ │ ├── Precolator.imageset │ │ │ ├── Contents.json │ │ │ ├── Precolator@2x.png │ │ │ └── Precolator@3x.png │ │ ├── Pull over.imageset │ │ │ ├── Contents.json │ │ │ ├── Pull over@2x.png │ │ │ └── Pull over@3x.png │ │ ├── Red eye.imageset │ │ │ ├── Contents.json │ │ │ ├── Red eye@2x.png │ │ │ └── Red eye@3x.png │ │ ├── Ristretto.imageset │ │ │ ├── Contents.json │ │ │ ├── Ristretto@2x.png │ │ │ └── Ristretto@3x.png │ │ ├── Single Serve.imageset │ │ │ ├── Contents.json │ │ │ ├── Single Serve@2x.png │ │ │ └── Single Serve@3x.png │ │ └── lungo.imageset │ │ │ ├── Contents.json │ │ │ ├── lungo@2x.png │ │ │ └── lungo@3x.png │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Categoris.plist │ ├── Info.plist │ ├── SceneDelegate.swift │ ├── ViewController.swift │ ├── coffee_drinks.plist │ └── coffee_makers.plist │ ├── DemoTests │ ├── DemoTests.swift │ └── Info.plist │ └── DemoUITests │ ├── DemoUITests.swift │ └── Info.plist ├── Chapter 6 ├── Final │ └── Books │ │ ├── Books.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── Books.xcscheme │ │ │ ├── BooksTests.xcscheme │ │ │ └── BooksUITests.xcscheme │ │ ├── Books │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── Amazon.imageset │ │ │ │ ├── Artboard Copy 10.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Apple.imageset │ │ │ │ ├── Artboard Copy 11.png │ │ │ │ └── Contents.json │ │ │ ├── BAM.imageset │ │ │ │ ├── Artboard Copy 6.png │ │ │ │ └── Contents.json │ │ │ ├── Barnes.imageset │ │ │ │ ├── Artboard Copy 9.png │ │ │ │ └── Contents.json │ │ │ ├── BookShop.imageset │ │ │ │ ├── Artboard Copy 7.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Indie.imageset │ │ │ │ ├── Artboard Copy.png │ │ │ │ └── Contents.json │ │ │ ├── book.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── book.png │ │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ │ ├── Contents.json │ │ │ │ └── line.horizontal.3.decrease.circle.svg │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── CoreData │ │ │ ├── Book+CoreDataClass.swift │ │ │ ├── Book+CoreDataProperties.swift │ │ │ ├── Books.xcdatamodeld │ │ │ │ ├── .xccurrentversion │ │ │ │ └── Books.xcdatamodel │ │ │ │ │ └── contents │ │ │ ├── BuyLink+CoreDataClass.swift │ │ │ └── BuyLink+CoreDataProperties.swift │ │ ├── Info.plist │ │ ├── MainViewModule │ │ │ ├── MainViewModel.swift │ │ │ └── MainViewPresenter.swift │ │ ├── Model │ │ │ ├── AllResponse.swift │ │ │ └── AuthorResponse.swift │ │ ├── NetworkLayer │ │ │ └── NetworkLayer.swift │ │ ├── SceneDelegate.swift │ │ ├── ViewControllers │ │ │ ├── BookViewControllerA.swift │ │ │ ├── BookViewControllerB.swift │ │ │ ├── FavViewController.swift │ │ │ ├── ListViewController.swift │ │ │ └── MainViewController.swift │ │ └── Views │ │ │ ├── BookDetailsTableViewCell.swift │ │ │ └── BookTableViewCell.swift │ │ ├── BooksTests │ │ ├── Helpers │ │ │ ├── BestSellerBooksStub.json │ │ │ ├── MainViewModelStub.swift │ │ │ └── NetworkLayerStub.swift │ │ ├── Info.plist │ │ ├── Integrations │ │ │ └── MainViewIntegrationTests.swift │ │ └── MainViewTests │ │ │ ├── MainViewModelTests.swift │ │ │ └── MainViewPresenterTests.swift │ │ ├── BooksUITests │ │ ├── BooksUITests.swift │ │ └── Info.plist │ │ └── README.md └── Start │ └── Books │ ├── Books.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ ├── Books │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── Amazon.imageset │ │ │ ├── Artboard Copy 10.png │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── ItunesArtwork@2x.png │ │ ├── Apple.imageset │ │ │ ├── Artboard Copy 11.png │ │ │ └── Contents.json │ │ ├── BAM.imageset │ │ │ ├── Artboard Copy 6.png │ │ │ └── Contents.json │ │ ├── Barnes.imageset │ │ │ ├── Artboard Copy 9.png │ │ │ └── Contents.json │ │ ├── BookShop.imageset │ │ │ ├── Artboard Copy 7.png │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Indie.imageset │ │ │ ├── Artboard Copy.png │ │ │ └── Contents.json │ │ ├── book.imageset │ │ │ ├── Contents.json │ │ │ └── book.png │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ ├── Contents.json │ │ │ └── line.horizontal.3.decrease.circle.svg │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── CoreData │ │ ├── Book+CoreDataClass.swift │ │ ├── Book+CoreDataProperties.swift │ │ ├── Books.xcdatamodeld │ │ │ ├── .xccurrentversion │ │ │ └── Books.xcdatamodel │ │ │ │ └── contents │ │ ├── BuyLink+CoreDataClass.swift │ │ └── BuyLink+CoreDataProperties.swift │ ├── Info.plist │ ├── Model │ │ ├── AllResponse.swift │ │ └── AuthorResponse.swift │ ├── SceneDelegate.swift │ ├── ViewControllers │ │ ├── BookViewControllerA.swift │ │ ├── BookViewControllerB.swift │ │ ├── FavViewController.swift │ │ ├── ListViewController.swift │ │ └── MainViewController.swift │ └── Views │ │ ├── BookDetailsTableViewCell.swift │ │ └── BookTableViewCell.swift │ ├── BooksTests │ ├── BooksTests.swift │ ├── Helpers │ │ └── BestSellerBooksStub.json │ └── Info.plist │ ├── BooksUITests │ ├── BooksUITests.swift │ └── Info.plist │ └── README.md ├── Chapter 7 ├── Final │ └── Books │ │ ├── Books.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── swiftpm │ │ │ │ │ └── Package.resolved │ │ │ └── xcuserdata │ │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ ├── xcshareddata │ │ │ └── xcschemes │ │ │ │ ├── Books.xcscheme │ │ │ │ ├── BooksTests.xcscheme │ │ │ │ └── BooksUITests.xcscheme │ │ └── xcuserdata │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ ├── Books │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── Amazon.imageset │ │ │ │ ├── Artboard Copy 10.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Apple.imageset │ │ │ │ ├── Artboard Copy 11.png │ │ │ │ └── Contents.json │ │ │ ├── BAM.imageset │ │ │ │ ├── Artboard Copy 6.png │ │ │ │ └── Contents.json │ │ │ ├── Barnes.imageset │ │ │ │ ├── Artboard Copy 9.png │ │ │ │ └── Contents.json │ │ │ ├── BookShop.imageset │ │ │ │ ├── Artboard Copy 7.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Indie.imageset │ │ │ │ ├── Artboard Copy.png │ │ │ │ └── Contents.json │ │ │ ├── book.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── book.png │ │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ │ ├── Contents.json │ │ │ │ └── line.horizontal.3.decrease.circle.svg │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── CoreData │ │ │ ├── Book+CoreDataClass.swift │ │ │ ├── Book+CoreDataProperties.swift │ │ │ ├── Books.xcdatamodeld │ │ │ │ ├── .xccurrentversion │ │ │ │ └── Books.xcdatamodel │ │ │ │ │ └── contents │ │ │ ├── BuyLink+CoreDataClass.swift │ │ │ └── BuyLink+CoreDataProperties.swift │ │ ├── Info.plist │ │ ├── MainViewModule │ │ │ ├── MainViewModel.swift │ │ │ └── MainViewPresenter.swift │ │ ├── Model │ │ │ ├── AllResponse.swift │ │ │ └── AuthorResponse.swift │ │ ├── NetworkLayer │ │ │ └── NetworkLayer.swift │ │ ├── SceneDelegate.swift │ │ ├── ViewControllers │ │ │ ├── BookViewControllerA.swift │ │ │ ├── BookViewControllerB.swift │ │ │ ├── FavViewController.swift │ │ │ ├── ListViewController.swift │ │ │ └── MainViewController.swift │ │ └── Views │ │ │ ├── BookDetailsTableViewCell.swift │ │ │ └── BookTableViewCell.swift │ │ ├── BooksTests │ │ ├── Helpers │ │ │ ├── BestSellerBooksStub.json │ │ │ ├── MainViewModelStub.swift │ │ │ └── NetworkLayerStub.swift │ │ ├── Info.plist │ │ ├── Integrations │ │ │ └── MainViewIntegrationTests.swift │ │ └── MainViewTests │ │ │ ├── MainViewModelTests.swift │ │ │ └── MainViewPresenterTests.swift │ │ ├── BooksUITests │ │ ├── BooksUITests.swift │ │ └── Info.plist │ │ └── README.md └── Start │ └── Books │ ├── Books.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── khaledElMorabea.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── xcschemes │ │ │ ├── Books.xcscheme │ │ │ ├── BooksTests.xcscheme │ │ │ └── BooksUITests.xcscheme │ └── xcuserdata │ │ └── khaledElMorabea.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist │ ├── Books │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── Amazon.imageset │ │ │ ├── Artboard Copy 10.png │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── ItunesArtwork@2x.png │ │ ├── Apple.imageset │ │ │ ├── Artboard Copy 11.png │ │ │ └── Contents.json │ │ ├── BAM.imageset │ │ │ ├── Artboard Copy 6.png │ │ │ └── Contents.json │ │ ├── Barnes.imageset │ │ │ ├── Artboard Copy 9.png │ │ │ └── Contents.json │ │ ├── BookShop.imageset │ │ │ ├── Artboard Copy 7.png │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Indie.imageset │ │ │ ├── Artboard Copy.png │ │ │ └── Contents.json │ │ ├── book.imageset │ │ │ ├── Contents.json │ │ │ └── book.png │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ ├── Contents.json │ │ │ └── line.horizontal.3.decrease.circle.svg │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── CoreData │ │ ├── Book+CoreDataClass.swift │ │ ├── Book+CoreDataProperties.swift │ │ ├── Books.xcdatamodeld │ │ │ ├── .xccurrentversion │ │ │ └── Books.xcdatamodel │ │ │ │ └── contents │ │ ├── BuyLink+CoreDataClass.swift │ │ └── BuyLink+CoreDataProperties.swift │ ├── Info.plist │ ├── MainViewModule │ │ ├── MainViewModel.swift │ │ └── MainViewPresenter.swift │ ├── Model │ │ ├── AllResponse.swift │ │ └── AuthorResponse.swift │ ├── NetworkLayer │ │ └── NetworkLayer.swift │ ├── SceneDelegate.swift │ ├── ViewControllers │ │ ├── BookViewControllerA.swift │ │ ├── BookViewControllerB.swift │ │ ├── FavViewController.swift │ │ ├── ListViewController.swift │ │ └── MainViewController.swift │ └── Views │ │ ├── BookDetailsTableViewCell.swift │ │ └── BookTableViewCell.swift │ ├── BooksTests │ ├── Helpers │ │ ├── BestSellerBooksStub.json │ │ ├── MainViewModelStub.swift │ │ └── NetworkLayerStub.swift │ ├── Info.plist │ ├── Integrations │ │ └── MainViewIntegrationTests.swift │ └── MainViewTests │ │ ├── MainViewModelTests.swift │ │ └── MainViewPresenterTests.swift │ ├── BooksUITests │ ├── BooksUITests.swift │ └── Info.plist │ └── README.md ├── Chapter 8 ├── Books │ ├── Final │ │ └── Books │ │ │ ├── Books.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── swiftpm │ │ │ │ │ └── Package.resolved │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ ├── Books.xcscheme │ │ │ │ ├── BooksTests.xcscheme │ │ │ │ └── BooksUITests.xcscheme │ │ │ ├── Books │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ │ ├── AccentColor.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── Amazon.imageset │ │ │ │ │ ├── Artboard Copy 10.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ │ └── ItunesArtwork@2x.png │ │ │ │ ├── Apple.imageset │ │ │ │ │ ├── Artboard Copy 11.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── BAM.imageset │ │ │ │ │ ├── Artboard Copy 6.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── Barnes.imageset │ │ │ │ │ ├── Artboard Copy 9.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── BookShop.imageset │ │ │ │ │ ├── Artboard Copy 7.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── Contents.json │ │ │ │ ├── Indie.imageset │ │ │ │ │ ├── Artboard Copy.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── book.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── book.png │ │ │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── line.horizontal.3.decrease.circle.svg │ │ │ ├── Base.lproj │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ ├── CoreData │ │ │ │ ├── Book+CoreDataClass.swift │ │ │ │ ├── Book+CoreDataProperties.swift │ │ │ │ ├── Books.xcdatamodeld │ │ │ │ │ ├── .xccurrentversion │ │ │ │ │ └── Books.xcdatamodel │ │ │ │ │ │ └── contents │ │ │ │ ├── BuyLink+CoreDataClass.swift │ │ │ │ └── BuyLink+CoreDataProperties.swift │ │ │ ├── Info.plist │ │ │ ├── MainViewModule │ │ │ │ ├── MainViewModel.swift │ │ │ │ └── MainViewPresenter.swift │ │ │ ├── Model │ │ │ │ ├── AllResponse.swift │ │ │ │ └── AuthorResponse.swift │ │ │ ├── NetworkLayer │ │ │ │ └── NetworkLayer.swift │ │ │ ├── SceneDelegate.swift │ │ │ ├── Utilities │ │ │ │ └── UImageView+Cache.swift │ │ │ ├── ViewControllers │ │ │ │ ├── BookViewControllerA.swift │ │ │ │ ├── BookViewControllerB.swift │ │ │ │ ├── FavViewController.swift │ │ │ │ ├── ListViewController.swift │ │ │ │ └── MainViewController.swift │ │ │ └── Views │ │ │ │ ├── BookDetailsTableViewCell.swift │ │ │ │ └── BookTableViewCell.swift │ │ │ ├── BooksTests │ │ │ ├── Helpers │ │ │ │ ├── BestSellerBooksStub.json │ │ │ │ ├── MainViewModelStub.swift │ │ │ │ └── NetworkLayerStub.swift │ │ │ ├── Info.plist │ │ │ ├── Integrations │ │ │ │ └── MainViewIntegrationTests.swift │ │ │ ├── MainViewTests │ │ │ │ ├── MainViewModelTests.swift │ │ │ │ └── MainViewPresenterTests.swift │ │ │ └── UtilitiesTests │ │ │ │ └── UIImageViewExtentionTests.swift │ │ │ ├── BooksUITests │ │ │ ├── BooksUITests.swift │ │ │ └── Info.plist │ │ │ └── README.md │ └── Start │ │ └── Books │ │ ├── Books.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── swiftpm │ │ │ │ └── Package.resolved │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── Books.xcscheme │ │ │ ├── BooksTests.xcscheme │ │ │ └── BooksUITests.xcscheme │ │ ├── Books │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── Amazon.imageset │ │ │ │ ├── Artboard Copy 10.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Apple.imageset │ │ │ │ ├── Artboard Copy 11.png │ │ │ │ └── Contents.json │ │ │ ├── BAM.imageset │ │ │ │ ├── Artboard Copy 6.png │ │ │ │ └── Contents.json │ │ │ ├── Barnes.imageset │ │ │ │ ├── Artboard Copy 9.png │ │ │ │ └── Contents.json │ │ │ ├── BookShop.imageset │ │ │ │ ├── Artboard Copy 7.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Indie.imageset │ │ │ │ ├── Artboard Copy.png │ │ │ │ └── Contents.json │ │ │ ├── book.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── book.png │ │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ │ ├── Contents.json │ │ │ │ └── line.horizontal.3.decrease.circle.svg │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── CoreData │ │ │ ├── Book+CoreDataClass.swift │ │ │ ├── Book+CoreDataProperties.swift │ │ │ ├── Books.xcdatamodeld │ │ │ │ ├── .xccurrentversion │ │ │ │ └── Books.xcdatamodel │ │ │ │ │ └── contents │ │ │ ├── BuyLink+CoreDataClass.swift │ │ │ └── BuyLink+CoreDataProperties.swift │ │ ├── Info.plist │ │ ├── MainViewModule │ │ │ ├── MainViewModel.swift │ │ │ └── MainViewPresenter.swift │ │ ├── Model │ │ │ ├── AllResponse.swift │ │ │ └── AuthorResponse.swift │ │ ├── NetworkLayer │ │ │ └── NetworkLayer.swift │ │ ├── SceneDelegate.swift │ │ ├── ViewControllers │ │ │ ├── BookViewControllerA.swift │ │ │ ├── BookViewControllerB.swift │ │ │ ├── FavViewController.swift │ │ │ ├── ListViewController.swift │ │ │ └── MainViewController.swift │ │ └── Views │ │ │ ├── BookDetailsTableViewCell.swift │ │ │ └── BookTableViewCell.swift │ │ ├── BooksTests │ │ ├── Helpers │ │ │ ├── BestSellerBooksStub.json │ │ │ ├── MainViewModelStub.swift │ │ │ └── NetworkLayerStub.swift │ │ ├── Info.plist │ │ ├── Integrations │ │ │ └── MainViewIntegrationTests.swift │ │ └── MainViewTests │ │ │ ├── MainViewModelTests.swift │ │ │ └── MainViewPresenterTests.swift │ │ ├── BooksUITests │ │ ├── BooksUITests.swift │ │ └── Info.plist │ │ └── README.md └── ReaderWriter │ ├── Final │ ├── ReaderWriter.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── ReaderWriter.xcscheme │ ├── ReaderWriter │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Database.swift │ │ ├── Info.plist │ │ ├── SceneDelegate.swift │ │ └── ViewController.swift │ └── ReaderWriterTests │ │ ├── DatabaseTests.swift │ │ └── Info.plist │ └── Start │ ├── ReaderWriter.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── ReaderWriter.xcscheme │ ├── ReaderWriter │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Database.swift │ ├── Info.plist │ ├── SceneDelegate.swift │ └── ViewController.swift │ └── ReaderWriterTests │ ├── DatabaseTests.swift │ ├── Info.plist │ └── ReaderWriterTests.swift ├── Chapter 9 ├── Final │ └── Books │ │ ├── Books.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── swiftpm │ │ │ │ └── Package.resolved │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── Books.xcscheme │ │ │ ├── BooksTests.xcscheme │ │ │ └── BooksUITests.xcscheme │ │ ├── Books │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── Amazon.imageset │ │ │ │ ├── Artboard Copy 10.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── ItunesArtwork@2x.png │ │ │ ├── Apple.imageset │ │ │ │ ├── Artboard Copy 11.png │ │ │ │ └── Contents.json │ │ │ ├── BAM.imageset │ │ │ │ ├── Artboard Copy 6.png │ │ │ │ └── Contents.json │ │ │ ├── Barnes.imageset │ │ │ │ ├── Artboard Copy 9.png │ │ │ │ └── Contents.json │ │ │ ├── BookShop.imageset │ │ │ │ ├── Artboard Copy 7.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Indie.imageset │ │ │ │ ├── Artboard Copy.png │ │ │ │ └── Contents.json │ │ │ ├── book.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── book.png │ │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ │ ├── Contents.json │ │ │ │ └── line.horizontal.3.decrease.circle.svg │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── CoreData │ │ │ ├── Book+CoreDataClass.swift │ │ │ ├── Book+CoreDataProperties.swift │ │ │ ├── Books.xcdatamodeld │ │ │ │ ├── .xccurrentversion │ │ │ │ └── Books.xcdatamodel │ │ │ │ │ └── contents │ │ │ ├── BuyLink+CoreDataClass.swift │ │ │ └── BuyLink+CoreDataProperties.swift │ │ ├── Info.plist │ │ ├── MainViewModule │ │ │ ├── MainViewModel.swift │ │ │ └── MainViewPresenter.swift │ │ ├── Model │ │ │ ├── AllResponse.swift │ │ │ └── AuthorResponse.swift │ │ ├── NetworkLayer │ │ │ ├── APIEnvironment.swift │ │ │ ├── BookRequest.swift │ │ │ ├── NetworkLayer.swift │ │ │ └── RequestProtocol.swift │ │ ├── SceneDelegate.swift │ │ ├── Utilities │ │ │ └── UImageView+Cache.swift │ │ ├── ViewControllers │ │ │ ├── BookViewControllerA.swift │ │ │ ├── BookViewControllerB.swift │ │ │ ├── FavViewController.swift │ │ │ ├── ListViewController.swift │ │ │ └── MainViewController.swift │ │ └── Views │ │ │ ├── BookDetailsTableViewCell.swift │ │ │ └── BookTableViewCell.swift │ │ ├── BooksTests │ │ ├── Helpers │ │ │ ├── BestSellerBooksStub.json │ │ │ ├── MainViewModelStub.swift │ │ │ ├── NetworkLayerStub.swift │ │ │ ├── TestRequest.swift │ │ │ └── URLSessionMock.swift │ │ ├── Info.plist │ │ ├── Integrations │ │ │ └── MainViewIntegrationTests.swift │ │ ├── MainViewTests │ │ │ ├── MainViewModelTests.swift │ │ │ └── MainViewPresenterTests.swift │ │ ├── NetworkLayerTests │ │ │ ├── APIEnvironmentTests.swift │ │ │ ├── BookRequestTests.swift │ │ │ ├── NetworkLayerTests.swift │ │ │ └── RequestProtocolTests.swift │ │ └── UtilitiesTests │ │ │ └── UIImageViewExtentionTests.swift │ │ ├── BooksUITests │ │ ├── BooksUITests.swift │ │ └── Info.plist │ │ └── README.md └── Start │ └── Books │ ├── Books.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── swiftpm │ │ │ └── Package.resolved │ └── xcshareddata │ │ └── xcschemes │ │ ├── Books.xcscheme │ │ ├── BooksTests.xcscheme │ │ └── BooksUITests.xcscheme │ ├── Books │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── Amazon.imageset │ │ │ ├── Artboard Copy 10.png │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── ItunesArtwork@2x.png │ │ ├── Apple.imageset │ │ │ ├── Artboard Copy 11.png │ │ │ └── Contents.json │ │ ├── BAM.imageset │ │ │ ├── Artboard Copy 6.png │ │ │ └── Contents.json │ │ ├── Barnes.imageset │ │ │ ├── Artboard Copy 9.png │ │ │ └── Contents.json │ │ ├── BookShop.imageset │ │ │ ├── Artboard Copy 7.png │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Indie.imageset │ │ │ ├── Artboard Copy.png │ │ │ └── Contents.json │ │ ├── book.imageset │ │ │ ├── Contents.json │ │ │ └── book.png │ │ └── line.horizontal.3.decrease.circle.symbolset │ │ │ ├── Contents.json │ │ │ └── line.horizontal.3.decrease.circle.svg │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── CoreData │ │ ├── Book+CoreDataClass.swift │ │ ├── Book+CoreDataProperties.swift │ │ ├── Books.xcdatamodeld │ │ │ ├── .xccurrentversion │ │ │ └── Books.xcdatamodel │ │ │ │ └── contents │ │ ├── BuyLink+CoreDataClass.swift │ │ └── BuyLink+CoreDataProperties.swift │ ├── Info.plist │ ├── MainViewModule │ │ ├── MainViewModel.swift │ │ └── MainViewPresenter.swift │ ├── Model │ │ ├── AllResponse.swift │ │ └── AuthorResponse.swift │ ├── NetworkLayer │ │ └── NetworkLayer.swift │ ├── SceneDelegate.swift │ ├── Utilities │ │ └── UImageView+Cache.swift │ ├── ViewControllers │ │ ├── BookViewControllerA.swift │ │ ├── BookViewControllerB.swift │ │ ├── FavViewController.swift │ │ ├── ListViewController.swift │ │ └── MainViewController.swift │ └── Views │ │ ├── BookDetailsTableViewCell.swift │ │ └── BookTableViewCell.swift │ ├── BooksTests │ ├── Helpers │ │ ├── BestSellerBooksStub.json │ │ ├── MainViewModelStub.swift │ │ └── NetworkLayerStub.swift │ ├── Info.plist │ ├── Integrations │ │ └── MainViewIntegrationTests.swift │ ├── MainViewTests │ │ ├── MainViewModelTests.swift │ │ └── MainViewPresenterTests.swift │ └── UtilitiesTests │ │ └── UIImageViewExtentionTests.swift │ ├── BooksUITests │ ├── BooksUITests.swift │ └── Info.plist │ └── README.md ├── Contributing.md ├── LICENSE.txt └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /9781484274279.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/9781484274279.JPG -------------------------------------------------------------------------------- /Chapter 1/Final/Demo/Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 1/Final/Demo/Demo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 1/Final/Demo/Demo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Final/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/Assets.xcassets/line.horizontal.3.decrease.circle.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "line.horizontal.3.decrease.circle.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public final class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 10/Final/Books/Books/CoreData/Books.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Chapter 10/Final/Books/BooksTests/CoreData/TestEntity+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestEntity+CoreDataClass.swift 3 | // BooksTests 4 | // 5 | // Created by Hassaan El-Garem on 6/23/21. 6 | // 7 | 8 | import CoreData 9 | 10 | @objc(TestEntity) 11 | public final class TestEntity: NSManagedObject { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 10/Start/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 10/Start/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books.xcodeproj/xcuserdata/garem.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Final/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 11/Final/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public final class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 11/Final/Books/BooksTests/CoreData/TestEntity+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestEntity+CoreDataClass.swift 3 | // BooksTests 4 | // 5 | // Created by Hassaan El-Garem on 6/23/21. 6 | // 7 | 8 | import CoreData 9 | 10 | @objc(TestEntity) 11 | public final class TestEntity: NSManagedObject { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Chapter 11/Final/Books/BooksTests/Helpers/booksNoReview.json: -------------------------------------------------------------------------------- 1 | {"status":"OK","copyright":"Copyright (c) 2021 The New York Times Company. All Rights Reserved.","num_results":0,"results":[]} 2 | -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 11/Start/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 11/Start/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public final class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 11/Start/Books/BooksTests/CoreData/TestEntity+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestEntity+CoreDataClass.swift 3 | // BooksTests 4 | // 5 | // Created by Hassaan El-Garem on 6/23/21. 6 | // 7 | 8 | import CoreData 9 | 10 | @objc(TestEntity) 11 | public final class TestEntity: NSManagedObject { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Chapter 11/Start/Books/BooksTests/Helpers/booksNoReview.json: -------------------------------------------------------------------------------- 1 | {"status":"OK","copyright":"Copyright (c) 2021 The New York Times Company. All Rights Reserved.","num_results":0,"results":[]} 2 | -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Final/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 12/Final/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public final class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 12/Final/Books/BooksTests/CoreData/TestEntity+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestEntity+CoreDataClass.swift 3 | // BooksTests 4 | // 5 | // Created by Hassaan El-Garem on 6/23/21. 6 | // 7 | 8 | import CoreData 9 | 10 | @objc(TestEntity) 11 | public final class TestEntity: NSManagedObject { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Chapter 12/Final/Books/BooksTests/Helpers/booksNoReview.json: -------------------------------------------------------------------------------- 1 | {"status":"OK","copyright":"Copyright (c) 2021 The New York Times Company. All Rights Reserved.","num_results":0,"results":[]} 2 | -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 12/Start/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 12/Start/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public final class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 12/Start/Books/BooksTests/CoreData/TestEntity+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestEntity+CoreDataClass.swift 3 | // BooksTests 4 | // 5 | // Created by Hassaan El-Garem on 6/23/21. 6 | // 7 | 8 | import CoreData 9 | 10 | @objc(TestEntity) 11 | public final class TestEntity: NSManagedObject { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Chapter 12/Start/Books/BooksTests/Helpers/booksNoReview.json: -------------------------------------------------------------------------------- 1 | {"status":"OK","copyright":"Copyright (c) 2021 The New York Times Company. All Rights Reserved.","num_results":0,"results":[]} 2 | -------------------------------------------------------------------------------- /Chapter 2/Calc-Final/Calc.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 2/Calc-Start/Calc.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 3/UITests_Final/Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 3/UITests_Final/Demo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 3/UITests_Final/Demo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 3/UITests_Start/Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 3/UITests_Start/Demo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 3/UITests_Start/Demo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 4/TestingPyramid/TestingPyramid.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 4/TestingPyramid/TestingPyramid/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 4/TestingPyramid/TestingPyramid/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 4/TestingPyramid/TestingPyramid/testAccounts.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test@test.com 6 | !2345678 7 | 8 | 9 | -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Aeropress.imageset/Aeropress@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Aeropress.imageset/Aeropress@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Aeropress.imageset/Aeropress@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Aeropress.imageset/Aeropress@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Affogato.imageset/Affogato@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Affogato.imageset/Affogato@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Affogato.imageset/Affogato@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Affogato.imageset/Affogato@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Americano.imageset/Americano@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Americano.imageset/Americano@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Americano.imageset/Americano@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Americano.imageset/Americano@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Black.imageset/Black@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Black.imageset/Black@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Black.imageset/Black@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Black.imageset/Black@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cafe au lait.imageset/Cafe au lait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cafe au lait.imageset/Cafe au lait@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cafe au lait.imageset/Cafe au lait@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cafe au lait.imageset/Cafe au lait@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cappuccino.imageset/Cappuccino@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cappuccino.imageset/Cappuccino@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cappuccino.imageset/Cappuccino@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cappuccino.imageset/Cappuccino@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cold Brew-M.imageset/Cold Brew@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cold Brew-M.imageset/Cold Brew@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cold Brew-M.imageset/Cold Brew@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cold Brew-M.imageset/Cold Brew@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cold brew.imageset/Cold brew@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cold brew.imageset/Cold brew@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cold brew.imageset/Cold brew@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cold brew.imageset/Cold brew@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cortado.imageset/Cortado@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cortado.imageset/Cortado@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Cortado.imageset/Cortado@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Cortado.imageset/Cortado@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Doppio.imageset/Doppio@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Doppio.imageset/Doppio@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Doppio.imageset/Doppio@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Doppio.imageset/Doppio@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Drip.imageset/Drip@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Drip.imageset/Drip@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Drip.imageset/Drip@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Drip.imageset/Drip@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Espresso.imageset/Espresso@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Espresso.imageset/Espresso@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Espresso.imageset/Espresso@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Espresso.imageset/Espresso@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Flat white.imageset/Flat white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Flat white.imageset/Flat white@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Flat white.imageset/Flat white@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Flat white.imageset/Flat white@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Frappuccino.imageset/Frappuccino@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Frappuccino.imageset/Frappuccino@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Frappuccino.imageset/Frappuccino@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Frappuccino.imageset/Frappuccino@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/French press.imageset/French press@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/French press.imageset/French press@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/French press.imageset/French press@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/French press.imageset/French press@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Galao.imageset/Galao@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Galao.imageset/Galao@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Galao.imageset/Galao@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Galao.imageset/Galao@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Iced coffee.imageset/Iced coffee@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Iced coffee.imageset/Iced coffee@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Iced coffee.imageset/Iced coffee@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Iced coffee.imageset/Iced coffee@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Iced espresso.imageset/Iced espresso@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Iced espresso.imageset/Iced espresso@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Iced espresso.imageset/Iced espresso@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Iced espresso.imageset/Iced espresso@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Irish.imageset/Irish@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Irish.imageset/Irish@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Irish.imageset/Irish@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Irish.imageset/Irish@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Latte.imageset/Latte@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Latte.imageset/Latte@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Latte.imageset/Latte@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Latte.imageset/Latte@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Macchiato.imageset/Macchiato@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Macchiato.imageset/Macchiato@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Macchiato.imageset/Macchiato@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Macchiato.imageset/Macchiato@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Majagran.imageset/Majagran@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Majagran.imageset/Majagran@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Majagran.imageset/Majagran@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Majagran.imageset/Majagran@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Mocha.imageset/Mocha@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Mocha.imageset/Mocha@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Mocha.imageset/Mocha@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Mocha.imageset/Mocha@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Moka pot.imageset/Moka pot@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Moka pot.imageset/Moka pot@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Moka pot.imageset/Moka pot@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Moka pot.imageset/Moka pot@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Nitro.imageset/Nitro@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Nitro.imageset/Nitro@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Nitro.imageset/Nitro@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Nitro.imageset/Nitro@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Precolator.imageset/Precolator@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Precolator.imageset/Precolator@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Precolator.imageset/Precolator@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Precolator.imageset/Precolator@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Pull over.imageset/Pull over@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Pull over.imageset/Pull over@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Pull over.imageset/Pull over@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Pull over.imageset/Pull over@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Red eye.imageset/Red eye@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Red eye.imageset/Red eye@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Red eye.imageset/Red eye@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Red eye.imageset/Red eye@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Ristretto.imageset/Ristretto@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Ristretto.imageset/Ristretto@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Ristretto.imageset/Ristretto@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Ristretto.imageset/Ristretto@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Single Serve.imageset/Single Serve@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Single Serve.imageset/Single Serve@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/Single Serve.imageset/Single Serve@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/Single Serve.imageset/Single Serve@3x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/lungo.imageset/lungo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/lungo.imageset/lungo@2x.png -------------------------------------------------------------------------------- /Chapter 5/Final/Demo/Demo/Assets.xcassets/lungo.imageset/lungo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Final/Demo/Demo/Assets.xcassets/lungo.imageset/lungo@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Aeropress.imageset/Aeropress@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Aeropress.imageset/Aeropress@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Aeropress.imageset/Aeropress@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Aeropress.imageset/Aeropress@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Affogato.imageset/Affogato@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Affogato.imageset/Affogato@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Affogato.imageset/Affogato@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Affogato.imageset/Affogato@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Americano.imageset/Americano@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Americano.imageset/Americano@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Americano.imageset/Americano@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Americano.imageset/Americano@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Black.imageset/Black@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Black.imageset/Black@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Black.imageset/Black@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Black.imageset/Black@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cafe au lait.imageset/Cafe au lait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cafe au lait.imageset/Cafe au lait@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cafe au lait.imageset/Cafe au lait@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cafe au lait.imageset/Cafe au lait@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cappuccino.imageset/Cappuccino@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cappuccino.imageset/Cappuccino@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cappuccino.imageset/Cappuccino@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cappuccino.imageset/Cappuccino@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cold Brew-M.imageset/Cold Brew@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cold Brew-M.imageset/Cold Brew@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cold Brew-M.imageset/Cold Brew@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cold Brew-M.imageset/Cold Brew@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cold brew.imageset/Cold brew@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cold brew.imageset/Cold brew@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cold brew.imageset/Cold brew@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cold brew.imageset/Cold brew@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cortado.imageset/Cortado@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cortado.imageset/Cortado@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Cortado.imageset/Cortado@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Cortado.imageset/Cortado@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Doppio.imageset/Doppio@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Doppio.imageset/Doppio@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Doppio.imageset/Doppio@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Doppio.imageset/Doppio@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Drip.imageset/Drip@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Drip.imageset/Drip@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Drip.imageset/Drip@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Drip.imageset/Drip@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Espresso.imageset/Espresso@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Espresso.imageset/Espresso@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Espresso.imageset/Espresso@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Espresso.imageset/Espresso@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Flat white.imageset/Flat white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Flat white.imageset/Flat white@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Flat white.imageset/Flat white@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Flat white.imageset/Flat white@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Frappuccino.imageset/Frappuccino@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Frappuccino.imageset/Frappuccino@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Frappuccino.imageset/Frappuccino@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Frappuccino.imageset/Frappuccino@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/French press.imageset/French press@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/French press.imageset/French press@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/French press.imageset/French press@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/French press.imageset/French press@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Galao.imageset/Galao@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Galao.imageset/Galao@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Galao.imageset/Galao@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Galao.imageset/Galao@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Iced coffee.imageset/Iced coffee@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Iced coffee.imageset/Iced coffee@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Iced coffee.imageset/Iced coffee@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Iced coffee.imageset/Iced coffee@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Iced espresso.imageset/Iced espresso@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Iced espresso.imageset/Iced espresso@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Iced espresso.imageset/Iced espresso@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Iced espresso.imageset/Iced espresso@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Irish.imageset/Irish@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Irish.imageset/Irish@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Irish.imageset/Irish@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Irish.imageset/Irish@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Latte.imageset/Latte@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Latte.imageset/Latte@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Latte.imageset/Latte@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Latte.imageset/Latte@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Macchiato.imageset/Macchiato@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Macchiato.imageset/Macchiato@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Macchiato.imageset/Macchiato@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Macchiato.imageset/Macchiato@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Majagran.imageset/Majagran@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Majagran.imageset/Majagran@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Majagran.imageset/Majagran@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Majagran.imageset/Majagran@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Mocha.imageset/Mocha@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Mocha.imageset/Mocha@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Mocha.imageset/Mocha@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Mocha.imageset/Mocha@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Moka pot.imageset/Moka pot@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Moka pot.imageset/Moka pot@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Moka pot.imageset/Moka pot@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Moka pot.imageset/Moka pot@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Nitro.imageset/Nitro@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Nitro.imageset/Nitro@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Nitro.imageset/Nitro@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Nitro.imageset/Nitro@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Precolator.imageset/Precolator@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Precolator.imageset/Precolator@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Precolator.imageset/Precolator@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Precolator.imageset/Precolator@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Pull over.imageset/Pull over@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Pull over.imageset/Pull over@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Pull over.imageset/Pull over@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Pull over.imageset/Pull over@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Red eye.imageset/Red eye@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Red eye.imageset/Red eye@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Red eye.imageset/Red eye@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Red eye.imageset/Red eye@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Ristretto.imageset/Ristretto@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Ristretto.imageset/Ristretto@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Ristretto.imageset/Ristretto@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Ristretto.imageset/Ristretto@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Single Serve.imageset/Single Serve@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Single Serve.imageset/Single Serve@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/Single Serve.imageset/Single Serve@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/Single Serve.imageset/Single Serve@3x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/lungo.imageset/lungo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/lungo.imageset/lungo@2x.png -------------------------------------------------------------------------------- /Chapter 5/Start/Demo/Demo/Assets.xcassets/lungo.imageset/lungo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 5/Start/Demo/Demo/Assets.xcassets/lungo.imageset/lungo@3x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Final/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 6/Final/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 6/Start/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 6/Start/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Final/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 7/Final/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 7/Start/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 7/Start/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Final/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 8/Books/Final/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 8/Books/Start/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 8/Books/Start/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 8/ReaderWriter/Final/ReaderWriter.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 8/ReaderWriter/Final/ReaderWriter/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 8/ReaderWriter/Final/ReaderWriter/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 8/ReaderWriter/Start/ReaderWriter.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 8/ReaderWriter/Start/ReaderWriter/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 8/ReaderWriter/Start/ReaderWriter/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Final/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 9/Final/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public class Book: NSManagedObject { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/Amazon.imageset/Artboard Copy 10.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/Apple.imageset/Artboard Copy 11.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/BAM.imageset/Artboard Copy 6.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/Barnes.imageset/Artboard Copy 9.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/BookShop.imageset/Artboard Copy 7.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/Indie.imageset/Artboard Copy.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/Assets.xcassets/book.imageset/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/Modularizing-Legacy-Projects-Using-TDD/1d9f0552d774aa075b677a7d58efa81742c67fe7/Chapter 9/Start/Books/Books/Assets.xcassets/book.imageset/book.png -------------------------------------------------------------------------------- /Chapter 9/Start/Books/Books/CoreData/Book+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Book+CoreDataClass.swift 3 | // Books 4 | // 5 | // Created by khaled mohamed el morabea on 08/05/2021. 6 | // 7 | // 8 | 9 | import Foundation 10 | import CoreData 11 | 12 | @objc(Book) 13 | public class Book: NSManagedObject { 14 | 15 | } 16 | --------------------------------------------------------------------------------