Tasks to practice TDD
袪械锌芯蟹懈褌芯褉懈泄 谐写械 屑芯卸薪芯 锌芯锌褉邪泻褌懈泻芯胁邪褌褜褋褟 胁 薪邪锌懈褋邪薪懈懈 泻芯写邪 锌芯褋谢械 褌芯谐芯 泻邪泻 薪邪锌懈褋邪薪褘 褞薪懈褌 褌械褋褌褘 锌芯 TDD 袩芯写褉芯斜薪芯械 芯斜褗褟褋薪械薪懈械 褔褌芯 褝褌芯 懈 泻邪泻 褉邪斜芯褌邪褌褜 褋 褝褌懈屑 褉械锌芯蟹懈褌芯褉懈械屑 胁 胁懈写械芯 薪邪 褞褌褍斜 (芯褋褌芯褉芯卸薪芯, 褌邪屑 褉械褕械薪懈械 锌械褉胁芯泄 蟹邪写邪褔懈) https://youtu.be/TvzVYxM626o
袙泻褉邪褌褑械: 胁褘斜懈褉邪械褌械 胁械褌泻褍, 薪邪褏芯写懈褌械 褞薪懈褌 褌械褋褌褘 泻芯褌芯褉褘械 褌褉械斜褍褞褌 泻芯写 懈 锌懈褕械褌械 械谐芯, 锌褉芯胁械褉褟械褌械 胁械褉薪芯褋褌褜 薪邪锌懈褋邪薪薪芯谐芯 泻芯写邪 锌芯褋褉械写褋褌胁芯屑 蟹邪锌褍褋泻邪 褞薪懈褌 褌械褋褌芯胁
肖芯褉泻邪泄褌械 褉械锌芯蟹懈褌芯褉懈泄 懈 薪邪褋谢邪卸写邪泄褌械褋褜 蟹邪写邪褔邪屑懈 (锌褍褕懈褌褜 褉械褕械薪懈械 芯斜褉邪褌薪芯 胁 褝褌芯褌 褉械锌芯蟹懈褌芯褉懈泄 薪械 薪褍卸薪芯!)
task/001-stack 小褌械泻, FIFO, LIFO 褉械泻芯屑械薪写褍械褌褋褟 薪邪锌懈褋邪褌褜 褉械邪谢懈蟹邪褑懈懈 薪械 懈褋锌芯谢褜蟹褍褟 写褉褍谐懈械 泻芯谢谢械泻褑懈懈 (芯谐褉邪薪懈褔懈褌褜褋褟 懈褋锌芯谢褜蟹芯胁邪薪懈械屑 芯斜褘褔薪褘褏 屑邪褋褋懈胁芯胁, https://youtu.be/TvzVYxM626o)
task/002-parse-anything 锌邪褉褋懈屑 写邪薪薪褘械 泻邪褋褌芯屑薪褘屑 芯斜褉邪蟹芯屑 (蟹薪邪薪懈械 褌懈锌芯胁 写邪薪薪褘褏 胁 写卸邪胁邪/泻芯褌谢懈薪, 薪械 懈褋锌芯谢褜蟹褍泄褌械 锌褉械芯斜褉邪蟹芯胁褘胁邪褞褖懈械 褎褍薪泻褑懈懈 褌邪泻懈械 泻邪泻 toInt(), https://youtu.be/FJla-SnBfeM)
task/003-range 薪邪泄褌懈 胁 褋锌懈褋泻械 斜谢懈卸邪泄褕懈械 褔懈褋谢邪 褋 芯斜芯懈褏 褋褌芯褉芯薪 芯褌 褍泻邪蟹邪薪薪芯谐芯 (https://youtu.be/tZZ2QBMLo4o)
task/004-password-validation 胁邪谢懈写邪褑懈褟 锌邪褉芯谢褟 锌芯 泻褉懈褌械褉懈褟屑 (屑懈薪懈屑邪谢褜薪邪褟 写谢懈薪邪, 泻芯谢懈褔械褋褌胁芯 斜褍泻胁 胁 胁械褉褏薪械屑 褉械谐懈褋褌褉械, 泻芯谢懈褔械褋褌胁芯 斜褍泻胁 胁 薪懈卸薪械屑 褉械谐懈褋褌褉械, 泻芯谢懈褔械褋褌胁芯 褑懈褎褉 懈 泻芯谢懈褔械褋褌胁芯 褋锌械褑.褋懈屑胁芯谢芯胁, https://youtu.be/-nbw-fmmZ7Y)
task/005-timed-cache 泻械褕 写邪褌邪褋芯褉褋 褋芯 胁褉械屑械薪械屑 卸懈蟹薪懈 褝谢械屑械薪褌芯胁. 袣芯谐写邪 邪泄褌械屑 泻谢邪写械褌褋褟 胁 泻械褕, 褌芯 蟹邪写邪械褌褋褟 胁褉械屑褟 械谐芯 卸懈蟹薪懈. 袩芯 锌褉芯褕械褋褌胁懈褞 褝褌芯谐芯 胁褉械屑械薪懈 芯斜褗械泻褌 褍写邪谢褟械褌褋褟 懈蟹 锌邪屑褟褌懈 (https://youtu.be/HWZDpSgCXV4)
task/006-factorial-hard 褎邪斜褉懈泻邪 褎邪泻褌芯褉懈邪谢芯胁: 懈褋褏芯写褟 懈蟹 褌懈锌邪 褔懈褋谢邪 胁褘褔懈褋谢懈褌褜 蟹薪邪褔械薪懈械 褎邪泻褌芯褉懈邪谢邪 (褉械泻褍褉褋懈褟 懈 蟹薪邪薪懈械 褌懈锌芯胁 写邪薪薪褘褏, https://youtu.be/KYOGThlhT8I)
task/007-filter-list 锌懈褕械屑 胁褜褞屑芯写械谢褜 薪邪 褝泻褉邪薪 谐写械 褋锌懈褋芯泻 褌芯胁邪褉芯胁 懈 褎懈谢褜褌褉褘 泻 薪懈屑, 锌褉懈屑械薪懈胁 泻芯褌芯褉褘械 屑械薪褟械褌褋褟 褋锌懈褋芯泻 (https://youtu.be/7e3n1YHdueY)
task/008-contains-for 锌褉芯胁械褉泻邪 薪邪 褋芯写械褉卸邪薪懈械 褋懈屑胁芯谢邪 胁 褋褌褉芯泻械 褋 褌褉械斜芯胁邪薪懈械屑 屑邪泻褋懈屑邪谢褜薪芯谐芯 锌褉芯褏芯写邪 锌芯 褑懈泻谢褍 (https://youtu.be/oVgskDFfxVU)
task/009-bubble-sort 褋芯褉褌懈褉芯胁泻邪 锌褍蟹褘褉褜泻芯屑 褋 褌褉械斜芯胁邪薪懈械屑 屑懈薪懈屑邪谢褜薪褘褏 褑懈泻谢芯胁 (褋屑芯褌褉懈 蟹邪写邪褔褍 008, https://youtu.be/mdv6Js-t4Wc)
task/010-int-validations 胁邪谢懈写邪褑懈懈 懈薪褌芯胁 懈褋锌芯谢褜蟹褍褟 褕邪斜谢芯薪褘 (写械泻芯褉邪褌芯褉 懈 褌.写.) 锌褉懈屑械褉 (锌褉芯胁械褉懈褌褜 褔褌芯 褔懈褋谢芯 锌芯谢芯卸懈褌械谢褜薪芯械, 薪械 屑械薪械械 15 懈 褔械褌薪芯械, https://youtu.be/E_t1tQhw7e4)
task/011-simple-callback 锌褉芯褋褌芯泄 泻芯谢斜械泻 (https://youtu.be/cf9GgxuI0Hc)
task/012-lottery 谢芯褌械褉械泄薪褘泄 斜懈谢械褌 (https://youtu.be/up1dhKWo6hA)
task/013-delay-coroutine 蟹邪写械褉卸泻邪 胁褉械屑械薪懈 泻芯褉褍褌懈薪褘 (锌褉懈薪褍写懈褌械谢褜薪芯 薪械 芯褌写邪械屑 芯褌胁械褌 芯褌 泻芯褉褍褌懈薪褘 褍泻邪蟹邪薪薪芯械 胁褉械屑褟, https://youtu.be/Zr2qjxxWINE)
task/014-numbers 屑邪褌械屑邪褌懈褔械褋泻懈械 芯锌械褉邪褑懈懈 褋 褔懈褋谢邪屑懈 (https://youtu.be/ssS3Ocrc0L8)
task/015-login 胁褜褞屑芯写械谢褜 薪邪 谢芯谐懈薪 褋 锌芯褔褌芯泄 懈 锌邪褉芯谢械屑 懈 褉邪斜芯褌邪 褋 懈薪褌械褉邪泻褌芯褉芯屑 懈 屑邪锌械褉邪屑懈 (https://youtu.be/Ct6HH7nwdmA)
task/016-legacy-api 褉邪斜芯褌邪 褋 邪锌懈 谢械谐邪褋懈 胁懈写邪 (褋 泻芯谢斜械泻邪屑懈 胁 褋邪屑芯屑 邪锌懈 懈 胁 褉械锌芯蟹懈褌芯褉懈懈)
task/017-observer 锌褉芯褋褌芯泄 芯斜褋械褉胁械褉 锌邪褌褌械褉薪 (https://youtu.be/pdDvddUvpCc)
task/018-observer-limited 锌邪褌械褉薪 芯斜褋械褉胁械褉 褋 屑邪泻褋懈屑邪谢褜薪褘屑 泻芯谢懈褔械褋褌胁芯屑 邪泻褌懈胁薪褘褏 锌芯写锌懈褋褔懈泻芯胁
task/019-observer-different-types 锌邪褌械褉薪 芯斜褋械褉胁械褉 褋 2 褌懈锌邪屑懈 (芯斜褘褔薪褘泄 懈 锌褉械屑懈褍屑) 泻邪泻 锌芯写锌懈褋褔懈泻芯胁 褌邪泻 懈 泻芯薪褌械薪褌邪 (褉械泻芯屑械薪写褍械褌褋褟 褉械褕懈褌褜 17 懈 18 锌褉械卸写械)
task/020-chain-responsibility 锌邪褌褌械褉薪 褑械锌芯褔泻邪 芯斜褟蟹邪薪薪芯褋褌械泄 胁 泻谢邪褋褋懈褔械褋泻芯屑 胁懈写械 (懈蟹 锌褉芯械泻褌邪 袝小袪 https://youtu.be/gf-MIZIwm2E)
task/021-interactor-parser 薪械锌褉芯褋褌邪褟 蟹邪写邪褔邪 薪邪 胁蟹邪懈屑芯褋胁褟蟹褜 锌邪褉褋械褉邪 褋 懈薪褌械褉邪泻褌芯褉芯屑 (懈蟹 锌褉芯械泻褌邪 袝小袪 https://youtu.be/gf-MIZIwm2E)
task/022-rx-viewmodel RxJava2 锌褉芯褋褌邪褟 褑械锌芯褔泻邪 懈 褌械褋褌 薪邪 ViewModel (https://youtu.be/cNXVzCUN5p8)
task/023-lambda 褞薪懈褌 褌械褋褌褘 褋 谢褟屑斜写芯泄 泻邪泻 邪褉谐褍屑械薪褌芯屑 胁 泻芯薪褋褌褉褍泻褌芯褉械 泻谢邪褋褋邪 (https://youtu.be/KRpJPGGxmOs)
task/024-messages-view-model 胁褜褞屑芯写械谢褜 褋芯芯斜褖械薪懈泄 懈蟹 锌褉芯械泻褌邪 袝小袪 (褉械泻芯屑械薪写褍械褌褋褟 褉械褕懈褌褜 褋薪邪褔邪谢邪 蟹邪写邪褔懈 020 懈 021) (https://youtu.be/gf-MIZIwm2E)
task/025-paging 胁褜褞屑芯写械谢褜 褋 写懈薪邪屑懈褔械褋泻芯泄 锌芯写谐褉褍蟹泻芯泄 褋谢械写褍褞褖械谐芯 懈 锌褉械写褘写褍褖械谐芯 泻芯薪褌械薪褌邪 (https://youtu.be/zGYCcKtcSf4)
task/026-incapsulation 锌懈褕械屑 锌褉邪胁懈谢芯 褔懈褋褌芯谐芯 泻芯写邪 写谢褟 锌褉懈薪褑懈锌邪 懈薪泻邪锌褋褍谢褟褑懈懈 写谢褟 褋褌邪褌懈褔械褋泻芯谐芯 邪薪邪谢懈蟹邪褌芯褉邪 泻芯写邪 (https://youtu.be/E5Ra6ZUCWt8)
task/027-custom-livedata 褋胁芯褟 谢懈胁写邪褌邪 胁 胁褜褞屑芯写械谢褜泻械 (https://youtu.be/t9qIe6BopKU)
task/028-inheritance 锌懈褕械屑 锌褉邪胁懈谢芯 褔懈褋褌芯谐芯 泻芯写邪 写谢褟 锌褉懈薪褑懈锌邪 薪邪褋谢械写芯胁邪薪懈械 写谢褟 褋褌邪褌懈褔械褋泻芯谐芯 邪薪邪谢懈蟹邪褌芯褉邪 泻芯写邪 (https://youtu.be/F1WCOTDSedA)
task/029-cloudDataSource 褉邪蟹薪褘械 芯褌胁械褌褘 芯褌 褋械褉胁械褉邪 胁 褉械褌褉芯褎懈褌械, 褏械薪写谢懈屑 芯褕懈斜泻懈 (https://youtu.be/6fXu5LAUcUU)
task/030-markdown 屑邪褉泻写邪褍薪 锌邪褉褋械褉 褋胁芯械 褉械褕械薪懈械 (褋谢芯卸薪芯) (https://youtu.be/KExoqco07ys)
task/031-good-code-rule-functions 锌褉邪胁懈谢邪 褏芯褉芯褕械谐芯 泻芯写邪 写谢褟 褎褍薪泻褑懈泄 (https://youtu.be/iR7PI-fuBE4 https://www.youtube.com/watch?v=-31NWghYlAo)
task/032-min-and-max 屑懈薪懈屑褍屑 懈 屑邪泻褋懈屑褍屑 懈蟹 褔懈褋械谢 (锌褉芯褋褌械泄褕邪褟 蟹邪写邪褔邪 https://youtu.be/RFRrVU0Z9s4)
task/033-node-builder 斜懈谢写械褉 锌邪褌械褉薪芯屑 锌芯褉芯卸写邪械屑 芯写薪芯褋胁褟蟹薪褘泄 褋锌懈褋芯泻 褋 邪胁褌芯谐械薪械褉邪褑懈械泄 邪泄写懈 (https://youtu.be/9YCj3_EPDOc)
task/034-revive-view-model 胁褜褞屑芯写械谢褜 泻芯褌芯褉邪褟 褍屑械械褌 锌械褉械卸懈胁邪褌褜 褋屑械褉褌褜 锌褉芯褑械褋褋邪 邪薪写褉芯懈写 懈 胁芯褋褋褌邪薪芯胁懈褌褜 褞邪泄 褋褌械泄褌 (https://youtu.be/HvFLYshXz0o)
task/035-codegen-part-one 泻芯写芯谐械薪械褉邪褌芯褉: 锌懈褕械屑 泻芯写, 泻芯褌芯褉褘泄 斜褍写械褌 谐械薪械褉懈褉芯胁邪褌褜 泻芯写 锌芯褋谢械 褞薪懈褌 褌械褋褌芯胁 (https://youtu.be/rA-au9yJ7cc)
task/036-multithreading-observer 屑薪芯谐芯锌芯褌芯褔薪褘泄 芯斜褋械褉胁械褉 锌邪褌械褉薪 : 2 胁褏芯写邪 1 胁褘褏芯写 (https://youtu.be/znEFXrT82vs)
task/037-login-view-model 锌懈褕械屑 胁褜褞屑芯写械谢褜 薪邪 谢芯谐懈薪 (https://youtu.be/L9Dt5ERXf-E https://youtu.be/UFQUnyBKJMI)
task/038-login-view-model-chain 褑械锌芯褔泻邪 芯斜褟蟹邪薪薪芯褋褌械泄 胁 谢芯谐懈薪 胁褜褞屑芯写械谢褜 懈蟹 蟹邪写邪褔懈 37 (https://youtu.be/QXwggW1FNcY)
task/039-mediator mediator pattern (https://youtu.be/Apf8bj4lIfk)
task/040-mediator-ui-test mediator pattern 2 tests: ui test and unit test (https://youtu.be/_CGXMoaBl_0)
task/041-comparable diffutil list item to compare (https://youtu.be/DuVVnBbI4qw)
task/042-multithreading-coroutines run multiple coroutines in repository (https://youtu.be/5vwoqElj0bc)
task/043-repository-test CloudFirst and CacheFirst repository tests (https://youtu.be/mVm6UW8vu-w)
task/044-login_interactor-test Max attempts logic https://youtu.be/g5bRENIa9yw
task/045-state-pattern State Pattern TDD https://youtu.be/TkfzrP733qk
task/046-compose-revive-view-model Compose ViewModel Revive process death https://youtu.be/WtJEBGCQl5o
task/047-runasync_list multiple calls to repo in parallel https://www.youtube.com/watch?v=1g1c4uO2DJ0