summaryrefslogtreecommitdiff
path: root/test/io/console/test_io_console.rb
blob: ba363c637c8d7b410743dca5dabbb4fa1b982c5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
require 'io/console'
require 'pty'
require 'test/unit'

class TestIO_Console < Test::Unit::TestCase
  def test_raw
    PTY.open {|m, s|
      s.print "abc\n"
      assert_equal("abc\r\n", m.gets)
      s.raw {
        s.print "def\n"
        assert_equal("def\n", m.gets)
      }
      s.print "ghi\n"
      assert_equal("ghi\r\n", m.gets)
    }
  end

  def test_noecho
    PTY.open {|m, s|
      assert(s.echo?)
      m.print "a\n"
      sleep 0.1
      s.print "b\n"
      sleep 0.1
      assert_equal("a\r\nb\r\n", m.readpartial(10))
      assert_equal("a\n", s.readpartial(10))
      s.noecho {
        assert(!s.echo?)
        m.print "a\n"
        s.print "b\n"
        assert_equal("b\r\n", m.readpartial(10))
        assert_equal("a\n", s.readpartial(10))
      }
      assert(s.echo?)
      m.print "a\n"
      sleep 0.1
      s.print "b\n"
      sleep 0.1
      assert_equal("a\r\nb\r\n", m.readpartial(10))
      assert_equal("a\n", s.readpartial(10))
    }
  end

  def test_setecho
    PTY.open {|m, s|
      assert(s.echo?)
      m.print "a\n"
      sleep 0.1
      s.print "b\n"
      sleep 0.1
      assert_equal("a\r\nb\r\n", m.readpartial(10))
      assert_equal("a\n", s.readpartial(10))
      s.echo = false
      assert(!s.echo?)
      m.print "a\n"
      s.print "b\n"
      assert_equal("b\r\n", m.readpartial(10))
      assert_equal("a\n", s.readpartial(10))
      s.echo = true
      assert(s.echo?)
      m.print "a\n"
      sleep 0.1
      s.print "b\n"
      sleep 0.1
      assert_equal("a\r\nb\r\n", m.readpartial(10))
      assert_equal("a\n", s.readpartial(10))
    }
  end

  def test_iflush
    PTY.open {|m, s|
      m.print "a\n"
      sleep 0.1
      s.iflush
      sleep 0.1
      m.print "b\n"
      sleep 0.1
      assert_equal("a\r\nb\r\n", m.readpartial(10))
      assert_equal("b\n", s.readpartial(10))
    }
  end

  def test_oflush
    PTY.open {|m, s|
      s.print "a\n"
      s.oflush
      s.print "b\n"
      assert_equal("b\r\n", m.readpartial(10))
    }
  end

end