* transcode.c (econv_primitive_convert): add output_byteoffset
[ruby-svn.git] / test / etc / test_etc.rb
blob6fc7c6092b42abe2b2ab06c86b2d58495abb1aae
1 require "test/unit"
2 require "etc"
4 class TestEtc < Test::Unit::TestCase
5   def test_getlogin
6     s = Etc.getlogin
7     assert(s.is_a?(String) || s == nil, "getlogin must return a String or nil")
8   end
10   def test_passwd
11     Etc.passwd do |s|
12       assert_instance_of(String, s.name)
13       assert_instance_of(String, s.passwd) if s.respond_to?(:passwd)
14       assert_kind_of(Integer, s.uid)
15       assert_kind_of(Integer, s.gid)
16       assert_instance_of(String, s.gecos) if s.respond_to?(:gecos)
17       assert_instance_of(String, s.dir)
18       assert_instance_of(String, s.shell)
19       assert_kind_of(Integer, s.change) if s.respond_to?(:change)
20       assert_kind_of(Integer, s.quota) if s.respond_to?(:quota)
21       assert(s.age.is_a?(Integer) || s.age.is_a?(String)) if s.respond_to?(:age)
22       assert_instance_of(String, s.uclass) if s.respond_to?(:uclass)
23       assert_instance_of(String, s.comment) if s.respond_to?(:comment)
24       assert_kind_of(Integer, s.expire) if s.respond_to?(:expire)
25     end
27     assert_raise(RuntimeError) { Etc.passwd { Etc.passwd { } } }
28   end
30   def test_getpwuid
31     passwd = {}
32     Etc.passwd {|s| passwd[s.uid] = s unless passwd[s.uid] }
33     passwd.values.each do |s|
34       assert_equal(s, Etc.getpwuid(s.uid))
35       assert_equal(s, Etc.getpwuid) if Etc.getlogin == s.name
36     end
37   end
39   def test_getpwnam
40     passwd = []
41     Etc.passwd {|s| passwd << s }
42     passwd.each do |s|
43       assert_equal(s, Etc.getpwnam(s.name))
44     end
45   end
47   def test_setpwent
48     a = []
49     Etc.passwd do |s|
50       a << s
51       Etc.setpwent if a.size == 3
52     end
53     assert_equal(a[0, 3], a[3, 3]) if a.size >= 6
54   end
56   def test_getpwent
57     a = []
58     Etc.passwd {|s| a << s }
59     b = []
60     Etc.passwd do |s|
61       b << s
62       s = Etc.getpwent
63       break unless s
64       b << s
65     end
66     assert_equal(a, b)
67   end
69   def test_endpwent
70     a = []
71     Etc.passwd do |s|
72       a << s
73       Etc.endpwent if a.size == 3
74     end
75     assert_equal(a[0, 3], a[3, 3]) if a.size >= 6
76   end
78   def test_group
79     Etc.group do |s|
80       assert_instance_of(String, s.name)
81       assert_instance_of(String, s.passwd) if s.respond_to?(:passwd)
82       assert_kind_of(Integer, s.gid)
83     end
85     assert_raise(RuntimeError) { Etc.group { Etc.group { } } }
86   end
88   def test_getgrgid
89     groups = []
90     Etc.group do |s|
91       groups << s
92     end
93     groups.each do |s|
94       assert_equal(s, Etc.getgrgid(s.gid))
95       assert_equal(s, Etc.getgrgid) if Etc.getlogin == s.name
96     end
97   end
99   def test_getgrnam
100     groups = []
101     Etc.group do |s|
102       groups << s
103     end
104     groups.each do |s|
105       assert_equal(s, Etc.getgrnam(s.name))
106     end
107   end
109   def test_setgrent
110     a = []
111     Etc.group do |s|
112       a << s
113       Etc.setgrent if a.size == 3
114     end
115     assert_equal(a[0, 3], a[3, 3]) if a.size >= 6
116   end
118   def test_getgrent
119     a = []
120     Etc.group {|s| a << s }
121     b = []
122     Etc.group do |s|
123       b << s
124       s = Etc.getgrent
125       break unless s
126       b << s
127     end
128     assert_equal(a, b)
129   end
131   def test_endgrent
132     a = []
133     Etc.group do |s|
134       a << s
135       Etc.endgrent if a.size == 3
136     end
137     assert_equal(a[0, 3], a[3, 3]) if a.size >= 6
138   end