Пример #1
0
        public void TestFlagUnset()
        {
            var ex = Assert.Throws <ArgumentException>(() => EnumCode.AnyFlagUnset(FileAccess.ReadWrite, "arg00", FileAccess.Write));

            Assert.That(ex.Message, Does.Contain("arg00"));
            Assert.That(ex.Message, Does.Contain("The value of the arg00 argument "));
            Assert.That(ex.Message, Does.Contain(" should not include flag "));

            Assert.DoesNotThrow(() => EnumCode.AnyFlagUnset(FileAccess.Read, "arg00", FileAccess.Write));
        }
Пример #2
0
        public void TestEnumUseCase()
        {
            var permissions = PermittedActions.None;
            var readOrOwner = PermittedActions.Read | PermittedActions.SetOwner;

            Assert.AreEqual(permissions, PermittedActions.None);

            permissions = permissions.SetFlag(PermittedActions.Read);
            Assert.AreEqual(permissions, PermittedActions.Read);

            permissions = permissions.SetFlag(PermittedActions.Write);
            Assert.AreEqual(permissions, PermittedActions.ReadWrite);

            permissions = permissions.ClearFlag(PermittedActions.Write);
            Assert.AreEqual(permissions, PermittedActions.Read);

            // conditional set or clear
            permissions = permissions.SetFlag(PermittedActions.ReadContent, enabled: false);
            Assert.AreEqual(permissions, PermittedActions.ReadMetadata);

            permissions = permissions.SetFlag(PermittedActions.ReadWrite, enabled: true);
            Assert.AreEqual(permissions, PermittedActions.ReadWrite);

            // Checks that entire bit combination is set
            Assert.IsFalse(permissions.IsFlagSet(readOrOwner));
            Assert.IsTrue(permissions.IsFlagSet(PermittedActions.Read));
            Assert.IsFalse(permissions.IsFlagSet(PermittedActions.SetOwner));

            // Checks that any bit is NOT set
            Assert.IsTrue(permissions.IsAnyFlagUnset(readOrOwner));
            Assert.IsFalse(permissions.IsAnyFlagUnset(PermittedActions.Read));
            Assert.IsTrue(permissions.IsAnyFlagUnset(PermittedActions.SetOwner));

            // Checks that any bit is set
            Assert.IsTrue(permissions.IsAnyFlagSet(readOrOwner));
            Assert.IsTrue(permissions.IsAnyFlagSet(PermittedActions.Read));
            Assert.IsFalse(permissions.IsAnyFlagSet(PermittedActions.SetOwner));

            // Checks that entire bit combination is NOT set
            Assert.IsFalse(permissions.IsFlagUnset(readOrOwner));
            Assert.IsFalse(permissions.IsFlagUnset(PermittedActions.Read));
            Assert.IsTrue(permissions.IsFlagUnset(PermittedActions.SetOwner));

            // Assertions
            Assert.DoesNotThrow(() => EnumCode.FlagSet(permissions, nameof(permissions), PermittedActions.Read));
            Assert.DoesNotThrow(() => EnumCode.AnyFlagUnset(permissions, nameof(permissions), readOrOwner));
            Assert.DoesNotThrow(() => EnumCode.AnyFlagSet(permissions, nameof(permissions), PermittedActions.Read));
            Assert.DoesNotThrow(() => EnumCode.FlagUnset(permissions, nameof(permissions), PermittedActions.SetOwner));
        }
Пример #3
0
        public void TestAnyFlagUnset()
        {
            // Arg assertion
            Exception ex = Assert.Throws <ArgumentException>(
                () => EnumCode.AnyFlagUnset(FileAccess.ReadWrite, "arg00", FileAccess.Write));

            Assert.That(ex.Message, Does.Contain("arg00"));
            Assert.That(ex.Message, Does.Contain("The value of the arg00 argument "));
            Assert.That(ex.Message, Does.Contain(" should not include flag "));

            Assert.DoesNotThrow(() => EnumCode.AnyFlagUnset(FileAccess.Read, "arg00", FileAccess.Write));

            // State assertion
            ex = Assert.Throws <InvalidOperationException>(
                () => EnumCode.AnyStateFlagUnset(FileAccess.ReadWrite, FileAccess.Write, "someUniqueMessage"));
            Assert.AreEqual(ex.Message, "someUniqueMessage");

            ex = Assert.Throws <InvalidOperationException>(
                () => EnumCode.AnyStateFlagUnset(FileAccess.ReadWrite, FileAccess.Write, "someUniqueMessage {0}", "someUniqueFormatArg"));
            Assert.AreEqual(ex.Message, "someUniqueMessage someUniqueFormatArg");

            Assert.DoesNotThrow(() => EnumCode.AnyStateFlagUnset(FileAccess.Read, FileAccess.Write, "someUniqueMessage"));
        }