[Category("AndroidNotWorking")] // API 21 conditionally has setgrent in the NDK headers, but bionic doesn't export it public void NonReentrantSyscalls() { var seen = new Dictionary <string, object> (); foreach (UnixGroupInfo group in UnixGroupInfo.GetLocalGroups()) { if (seen.ContainsKey(group.GroupName)) { continue; } seen.Add(group.GroupName, null); try { Group byName = Syscall.getgrnam(group.GroupName); Group byId = Syscall.getgrgid((uint)group.GroupId); Assert.IsNotNull(byName, "#TNRS: access by name"); Assert.IsNotNull(byId, "#TNRS: access by gid"); UnixGroupInfo n = new UnixGroupInfo(byName); UnixGroupInfo u = new UnixGroupInfo(byId); Assert.AreEqual(group, n, "#TNRS: construct by name"); Assert.AreEqual(group, u, "#TNRS: construct by gid"); Assert.AreEqual(n, u, "#TNRS: name == gid?"); } catch (Exception e) { Assert.Fail( string.Format("#TRC: Exception constructing UnixGroupInfo: {0}", e.ToString())); } } }
public void NonReentrantSyscalls() { foreach (UnixGroupInfo group in UnixGroupInfo.GetLocalGroups()) { try { Group byName = Syscall.getgrnam(group.GroupName); Group byId = Syscall.getgrgid((uint)group.GroupId); Assert.IsNotNull(byName, "#TNRS: access by name"); Assert.IsNotNull(byId, "#TNRS: access by gid"); UnixGroupInfo n = new UnixGroupInfo(byName); UnixGroupInfo u = new UnixGroupInfo(byId); Assert.AreEqual(group, n, "#TNRS: construct by name"); Assert.AreEqual(group, u, "#TNRS: construct by gid"); Assert.AreEqual(n, u, "#TNRS: name == gid?"); } catch (Exception e) { Assert.Fail( string.Format("#TRC: Exception constructing UnixGroupInfo: {0}", e.ToString())); } } }
public void Equality() { Group orig = new Group(); Group mod = new Group(); mod.gr_name = orig.gr_name = "some name"; mod.gr_passwd = orig.gr_passwd = "some passwd"; mod.gr_gid = orig.gr_gid = 500; mod.gr_mem = orig.gr_mem = new string[] { "foo", "bar" }; Assert.AreEqual(orig, mod, "#TE: copies should be equal"); mod.gr_name = "another name"; Assert.IsFalse(orig.Equals(mod), "#TE: changes should be reflected"); }
public void InvalidGroups_Syscall_Name() { string[] badGroups = new string[] { "i'm bad", "so am i", "does-not-exist" }; foreach (string u in badGroups) { try { Group pw = Syscall.getgrnam(u); Assert.IsNull(pw, "#TIUSN: invalid groups should return null!"); } catch (Exception e) { Assert.Fail(string.Format("#TIUCN: invalid exception thrown: " + "expected null return, got {0}: {1}", e.GetType().FullName, e.Message)); } } }
public void Equality () { Group orig = new Group (); Group mod = new Group (); mod.gr_name = orig.gr_name = "some name"; mod.gr_passwd = orig.gr_passwd = "some passwd"; mod.gr_gid = orig.gr_gid = 500; mod.gr_mem = orig.gr_mem = new string[]{"foo", "bar"}; Assert.AreEqual (orig, mod, "#TE: copies should be equal"); mod.gr_name = "another name"; Assert.IsFalse (orig.Equals (mod), "#TE: changes should be reflected"); }