def test_repl_gcd_example_multiline(capsys): session = """ > (define not (boolean) (if boolean 0 1)) <UserFunction (not boolean)> > (define <> (x y) (not (= x y))) <UserFunction (<> x y)> > (define mod (m n) (- m (* n (/ m n)))) <UserFunction (mod m n)> > (define gcd (m n) ... (begin ... (let r (mod m n)) ... (while (<> r 0) ... (begin ... (let m n) ... (let n r) ... (let r (mod m n)))) ... n)) <UserFunction (gcd m n)> > (gcd 42 56) 14 """ dlg = Dialogue(session) repl(dlg.fake_input) captured = capsys.readouterr() assert dlg.session == normalize(captured.out)
def test_repl_gcd_example(capsys): session = """ > (define mod (m n) (- m (* n (/ m n)))) <UserFunction (mod m n)> > (define gcd (a b) (if (= b 0) a (gcd b (mod a b)))) <UserFunction (gcd a b)> > (gcd 6 15) 3 """ dlg = Dialogue(session) repl(dlg.fake_input) captured = capsys.readouterr() assert dlg.session == normalize(captured.out)
def test_repl_quit(capsys): dlg = Dialogue('> .q\n') repl(dlg.fake_input) captured = capsys.readouterr() assert dlg.session == normalize(captured.out)
def test_repl(capsys, session): dlg = Dialogue(session) repl(dlg.fake_input) captured = capsys.readouterr() assert dlg.session == normalize(captured.out)
def test_reverser(monkeypatch, capsys, session): dlg = Dialogue(session) reverser(dlg.fake_input) captured = capsys.readouterr() assert dlg.session == normalize(captured.out)
def test_uppercaser_multiple(capsys, session): dlg = Dialogue(session) uppercaser(dlg.fake_input) captured = capsys.readouterr() assert dlg.session == normalize(captured.out)
def test_uppercaser(capsys): dlg = Dialogue('> Xyz\nXYZ\n') uppercaser(dlg.fake_input) captured = capsys.readouterr() assert dlg.session == normalize(captured.out)
def test_normalize(lines, want): assert want == normalize(lines)
def test_multiline_input(capsys, session, result): dlg = Dialogue(session) got = multiline_input('1|', '2|', input_fn=dlg.fake_input) assert result == got captured = capsys.readouterr() assert dlg.session == normalize(captured.out)