public void TestIsAsSafeOrSaferThan() { var safeConf = UnsafeSandboxConfigurationExtensions.SafeDefaults; var unsafeConf = new UnsafeSandboxConfiguration() { MonitorFileAccesses = !safeConf.MonitorFileAccesses }; var moreUnsafeConf = new UnsafeSandboxConfiguration() { MonitorFileAccesses = !safeConf.MonitorFileAccesses, SandboxKind = SandboxKind.None }; // assert reflexivity XAssert.IsTrue(safeConf.IsAsSafeOrSaferThan(safeConf)); XAssert.IsTrue(unsafeConf.IsAsSafeOrSaferThan(unsafeConf)); XAssert.IsTrue(moreUnsafeConf.IsAsSafeOrSaferThan(moreUnsafeConf)); // assert order XAssert.IsTrue(safeConf.IsAsSafeOrSaferThan(unsafeConf)); XAssert.IsTrue(safeConf.IsAsSafeOrSaferThan(moreUnsafeConf)); XAssert.IsTrue(unsafeConf.IsAsSafeOrSaferThan(moreUnsafeConf)); // assert reverse order XAssert.IsFalse(unsafeConf.IsAsSafeOrSaferThan(safeConf)); XAssert.IsFalse(moreUnsafeConf.IsAsSafeOrSaferThan(safeConf)); XAssert.IsFalse(moreUnsafeConf.IsAsSafeOrSaferThan(unsafeConf)); }
public void TestIsAsSafeOrSaferDynamicWriteOnAbsentProbePolicy(DynamicWriteOnAbsentProbePolicy lhs, DynamicWriteOnAbsentProbePolicy rhs, bool expectedOutcome) { XAssert.AreEqual(expectedOutcome, UnsafeSandboxConfigurationExtensions.IsAsSafeOrSafer(lhs, rhs)); var lhsConf = new UnsafeSandboxConfiguration { IgnoreDynamicWritesOnAbsentProbes = lhs }; var rhsConf = new UnsafeSandboxConfiguration { IgnoreDynamicWritesOnAbsentProbes = rhs }; XAssert.AreEqual(expectedOutcome, lhsConf.IsAsSafeOrSaferThan(rhsConf)); }
public void TestIsAsSafeOrSaferThanPreloaded() { var safeConf = new UnsafeSandboxConfiguration() { IgnorePreloadedDlls = false }; var unsafeConf = new UnsafeSandboxConfiguration() { IgnorePreloadedDlls = true }; XAssert.IsTrue(safeConf.IsAsSafeOrSaferThan(unsafeConf)); XAssert.IsFalse(unsafeConf.IsAsSafeOrSaferThan(safeConf)); }
public void TestIsAsSafeOrSaferThanByProperty(PropertyInfo propertyInfo, object value1, object value2) { Func <object> failFn = () => { XAssert.Fail($"Expected at lease one of the 2 values returned for property '{propertyInfo.Name}' to be different from the value in 'SafeDefaults'"); return(null); }; var safeConf = UnsafeSandboxConfigurationExtensions.SafeDefaults; var safePropertyValue = propertyInfo.GetValue(safeConf); var unsafePropertyValue = !EqualityComparer <object> .Default.Equals(value1, safePropertyValue) ? value1 : !EqualityComparer <object> .Default.Equals(value2, safePropertyValue) ? value2 : failFn(); var unsafeConf = new UnsafeSandboxConfiguration(); propertyInfo.SetValue(unsafeConf, unsafePropertyValue); var msg = $"prop: '{propertyInfo.Name}'; safe value: '{safePropertyValue}'; unsafe property value: '{unsafePropertyValue}'"; XAssert.IsTrue(safeConf.IsAsSafeOrSaferThan(unsafeConf), msg); XAssert.IsFalse(unsafeConf.IsAsSafeOrSaferThan(safeConf), msg); }