├── .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 |
--------------------------------------------------------------------------------