File: test.rb

package info (click to toggle)
libstrscan-ruby 0.6.7-3
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 152 kB
  • ctags: 327
  • sloc: ruby: 1,117; ansic: 670; makefile: 119
file content (95 lines) | stat: -rw-r--r-- 1,545 bytes parent folder | download
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
94
95

require './strscan.so'
require 'amstd/bug'


unless defined? NotImplementedError
  NotImplementedError = NotImplementError
end

def main
  $type = 'C'
  dotest StringScanner
  #dotest StringScanner_C
  #$type = 'Ruby'
  #dotest StringScanner_R

  puts 'ok'
end

def assert( a, b )
  unless a == b then
    bug! "type #{$type}: #{a.inspect} != #{b.inspect}"
  end
end

def dotest( klass )
  begin
    klass.must_C_version
    # assert klass, StringScanner_C
    assert klass, StringScanner
  rescue NotImplementedError
    assert klass, StringScanner_R
  end

  p klass::Version
  p klass::Id

  str = 'str str str str str str HHHHHa G str str cccccc'
  sc = klass.new( str, false )

  sc.inspect

  sc.string.inspect
  assert sc.string.id, str.id

  sc.string = str
  assert sc.string.frozen?, true

  assert sc.pointer, 0

  assert sc.empty?, false
  assert sc.rest?, true

  assert sc.scan( /\A\w+/ ), 'str'
  assert sc.scan( /\A[\t ]+/ ), ' '

  assert sc.skip( /\A\w+/ ), 3
  assert sc.skip( /\A[\t ]+/ ), 1

  assert sc.getch, 's'

  sc.unscan
  assert sc.getch, 's'

  sc.scan( /\w+/ )
  sc.unscan
  assert sc.scan( /\A\w+/ ), 'tr'

  assert sc.check( /\A[\t ]+/ ), ' '
  assert sc.check( /\A[\t ]+/ ), ' '

  sc.scan_until( /H+/ )
  assert sc.getch, 'a'

  i = sc.skip_until( /G/ )
  assert i, 2

  sc.unscan
  s = sc.check_until( /G/ )
  assert s, ' G'

  i = sc.exist?( /G/ )
  assert i, 2

  sc.scan_until( /(str)/ )
  assert sc[0], 'str'
  assert sc[1], 'str'

  sc.clear
  assert sc.empty?, true
  assert sc.rest?, false
end


main