This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | set number | |
| set termguicolors | |
| set autoindent | |
| set tabstop=2 | |
| set shiftwidth=2 | |
| set expandtab | |
| set splitright | |
| set clipboard=unnamed | |
| set hls | |
| set nowrap | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | #!/bin/zsh | |
| # マウスの加速度を無効化 | |
| defaults write .GlobalPreferences com.apple.mouse.scaling -1 | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | let scheduler = TestScheduler(initialClock: 0, resolution: 0.01) | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | func testTappedPlayPauseChangesIsPlaying() { | |
| // Phase 1 | |
| let isPlaying = scheduler.createObserver(Bool.self) | |
| // Phase 2 | |
| viewModel.isPlaying | |
| .drive(isPlaying) | |
| .disposed(by: disposeBag) | |
| // Phase 3 | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | class ExampleTests: XCTestCase { | |
| var viewModel: MetronomeViewModel! | |
| var scheduler: TestScheduler! | |
| var disposeBag: DisposeBag! | |
| override func setUp() { | |
| viewModel = MetronomeViewModel() | |
| scheduler = TestScheduler(initialClock: 0) | |
| disposeBag = DisposeBag() | |
| } | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | func testSignatureTextStartsAt4by4() throws { | |
| XCTAssertEqual(try viewModel.signatureText.toBlocking().first(), "4/4") | |
| } | |
| func testTempoTextStartsAt120_BPM() throws { | |
| XCTAssertEqual(try viewModel.tempoText.toBlocking().first(), "120 BPM") | |
| } |