{"id":18474421,"url":"https://github.com/codecop/bankocr-outside-in-kata","last_synced_at":"2026-02-16T17:36:06.849Z","repository":{"id":54892037,"uuid":"213154063","full_name":"codecop/BankOCR-Outside-in-Kata","owner":"codecop","description":"Solve BankOCR using Outside-in TDD. ","archived":false,"fork":false,"pushed_at":"2021-04-18T21:05:23.000Z","size":131,"stargazers_count":2,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-04T17:59:28.978Z","etag":null,"topics":["code-kata","exercise","kata","mocking","outside-in-tdd","tdd","test-doubles","test-driven"],"latest_commit_sha":null,"homepage":"","language":"Scheme","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codecop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-06T11:12:48.000Z","updated_at":"2021-06-05T15:48:08.000Z","dependencies_parsed_at":"2022-08-14T05:51:02.054Z","dependency_job_id":null,"html_url":"https://github.com/codecop/BankOCR-Outside-in-Kata","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/codecop/BankOCR-Outside-in-Kata","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2FBankOCR-Outside-in-Kata","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2FBankOCR-Outside-in-Kata/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2FBankOCR-Outside-in-Kata/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2FBankOCR-Outside-in-Kata/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codecop","download_url":"https://codeload.github.com/codecop/BankOCR-Outside-in-Kata/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2FBankOCR-Outside-in-Kata/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29514013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T09:05:14.864Z","status":"ssl_error","status_checked_at":"2026-02-16T08:55:59.364Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code-kata","exercise","kata","mocking","outside-in-tdd","tdd","test-doubles","test-driven"],"created_at":"2024-11-06T10:29:25.113Z","updated_at":"2026-02-16T17:36:06.830Z","avatar_url":"https://github.com/codecop.png","language":"Scheme","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# BankOCR Outside-in TDD Kata Setup\r\n\r\n[BankOCR Code Kata](http://codingdojo.org/kata/BankOCR/), initial setup\r\nfor various programming languages focusing on Outside-In development.\r\n\r\n## Assignment: BankOCR\r\n\r\nYou work for a bank, which has a machine to assist in reading letters.\r\nThe machine scans the paper documents, and produces a file with a\r\nnumber of entries which each look like this:\r\n\r\n    ····_··_·····_··_··_··_··_·\r\n    ··|·_|·_||_||_·|_···||_||_|\r\n    ··||_··_|··|·_||_|··||_|·_|\r\n    ···························\r\n\r\nEach entry is 4 lines long, each line has 27 characters. The first 3\r\nlines contain an account number written using pipes and underscores,\r\nand the fourth line is blank. Each account number should have 9 digits,\r\nall of which should be in the range 1-9.\r\n\r\nWrite a program that can take this file and parse it into actual account numbers.\r\n\r\n**Don't Focus on Getting it Done. Focus on Doing It Perfectly.**\r\n\r\n## Constraint: Outside-In\r\n\r\nIn Outside-In (London school, top-down or \"mockist TDD\") you build the\r\nsystem from the \"outside-in\", following the user interaction through\r\nall the parts of the system. You start with the interactions and collaborators\r\nupfront (especially those at top levels), mocking necessary dependencies (or creating\r\nfake implementations). With every finished component, you move to the previously\r\nmocked collaborators and start with TDD again there, creating\r\nactual implementations (which, even though used, were not needed before\r\nthanks to abstractions). See [Emily Bache's article on Outside-In development](http://coding-is-like-cooking.info/2013/04/outside-in-development-with-double-loop-tdd/)\r\nfor a discussion of Outside-In both with London school and classic TDD.\r\n\r\n### License\r\n\r\n[New BSD License](http://opensource.org/licenses/bsd-license.php), see `license.txt` in repository.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecop%2Fbankocr-outside-in-kata","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodecop%2Fbankocr-outside-in-kata","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecop%2Fbankocr-outside-in-kata/lists"}