示例#1
0
        /// <summary>
        /// Ensure that when manually specifying permission modes we get
        /// the expected values back out for all combinations
        /// </summary>
        public virtual void TestConvertingPermissions()
        {
            for (short s = 0; s <= 0x3ff; s++)
            {
                Assert.Equal(s, new FsPermission(s).ToShort());
            }
            short s_1 = 0;

            foreach (bool sb in new bool[] { false, true })
            {
                foreach (FsAction u in FsAction.Values())
                {
                    foreach (FsAction g in FsAction.Values())
                    {
                        foreach (FsAction o in FsAction.Values())
                        {
                            // Cover constructor with sticky bit.
                            FsPermission f = new FsPermission(u, g, o, sb);
                            Assert.Equal(s_1, f.ToShort());
                            FsPermission f2 = new FsPermission(f);
                            Assert.Equal(s_1, f2.ToShort());
                            s_1++;
                        }
                    }
                }
            }
        }
示例#2
0
 public virtual void TestFsAction()
 {
     //implies
     foreach (FsAction a in FsAction.Values())
     {
         Assert.True(FsAction.All.Implies(a));
     }
     foreach (FsAction a_1 in FsAction.Values())
     {
         Assert.True(a_1 == FsAction.None ? FsAction.None.Implies(a_1) :
                     !FsAction.None.Implies(a_1));
     }
     foreach (FsAction a_2 in FsAction.Values())
     {
         Assert.True(a_2 == FsAction.ReadExecute || a_2 == FsAction.Read ||
                     a_2 == FsAction.Execute || a_2 == FsAction.None ? FsAction.ReadExecute.Implies
                         (a_2) : !FsAction.ReadExecute.Implies(a_2));
     }
     //masks
     Assert.Equal(FsAction.Execute, FsAction.Execute.And(FsAction.ReadExecute
                                                         ));
     Assert.Equal(FsAction.Read, FsAction.Read.And(FsAction.ReadExecute
                                                   ));
     Assert.Equal(FsAction.None, FsAction.Write.And(FsAction.ReadExecute
                                                    ));
     Assert.Equal(FsAction.Read, FsAction.ReadExecute.And(FsAction.
                                                          ReadWrite));
     Assert.Equal(FsAction.None, FsAction.ReadExecute.And(FsAction.
                                                          Write));
     Assert.Equal(FsAction.WriteExecute, FsAction.All.And(FsAction.
                                                          WriteExecute));
 }
示例#3
0
        /// <exception cref="System.IO.IOException"/>
        public virtual void TestUMaskParser()
        {
            Configuration conf = new Configuration();

            // Ensure that we get the right octal values back for all legal values
            foreach (FsAction u in FsAction.Values())
            {
                foreach (FsAction g in FsAction.Values())
                {
                    foreach (FsAction o in FsAction.Values())
                    {
                        FsPermission f       = new FsPermission(u, g, o);
                        string       asOctal = string.Format("%1$03o", f.ToShort());
                        conf.Set(FsPermission.UmaskLabel, asOctal);
                        FsPermission fromConf = FsPermission.GetUMask(conf);
                        Assert.Equal(f, fromConf);
                    }
                }
            }
        }
示例#4
0
 public virtual void TestSpecialBitsToString()
 {
     foreach (bool sb in new bool[] { false, true })
     {
         foreach (FsAction u in FsAction.Values())
         {
             foreach (FsAction g in FsAction.Values())
             {
                 foreach (FsAction o in FsAction.Values())
                 {
                     FsPermission f       = new FsPermission(u, g, o, sb);
                     string       fString = f.ToString();
                     // Check that sticky bit is represented correctly.
                     if (f.GetStickyBit() && f.GetOtherAction().Implies(FsAction.Execute))
                     {
                         Assert.Equal('t', fString[8]);
                     }
                     else
                     {
                         if (f.GetStickyBit() && !f.GetOtherAction().Implies(FsAction.Execute))
                         {
                             Assert.Equal('T', fString[8]);
                         }
                         else
                         {
                             if (!f.GetStickyBit() && f.GetOtherAction().Implies(FsAction.Execute))
                             {
                                 Assert.Equal('x', fString[8]);
                             }
                             else
                             {
                                 Assert.Equal('-', fString[8]);
                             }
                         }
                     }
                     Assert.Equal(9, fString.Length);
                 }
             }
         }
     }
 }