public void Count () { Bitmask<long> x = new Bitmask<long> (); Assert.AreEqual (0, x.Count (), "0"); x.SetAll (); Assert.AreEqual (64, x.Count (), "64"); for (int i = 63; i >= 0; i--) { x.Clear (i); Assert.AreEqual (i, x.Count (), i.ToString ()); } }
public void Count() { Bitmask <long> x = new Bitmask <long> (); Assert.AreEqual(0, x.Count(), "0"); x.SetAll(); Assert.AreEqual(64, x.Count(), "64"); for (int i = 63; i >= 0; i--) { x.Clear(i); Assert.AreEqual(i, x.Count(), i.ToString()); } }
public RuleResult CheckMethod(MethodDefinition method) { // p/invoke, abstract methods and method without parameters if (!method.HasBody || !method.HasParameters || !method.IsVisible()) { return(RuleResult.DoesNotApply); } has_null_check.ClearAll(); int parameters = method.Parameters.Count; // check foreach (Instruction ins in method.Body.Instructions) { if (ins.IsLoadArgument()) { CheckArgument(method, ins); } else if (OpCodeBitmask.Calls.Get(ins.OpCode.Code)) { CheckCall(method, ins); } else if (check.Get(ins.OpCode.Code)) { Instruction owner = ins; // fields (no need to check static fields), ldind, ldelem, ldlen while ((owner != null) && check.Get(owner.OpCode.Code)) { owner = owner.TraceBack(method); } CheckParameter(owner.GetParameter(method)); } // stop processing instructions once all parameters are validated if (has_null_check.Count() == parameters) { break; } } return(Runner.CurrentRuleResult); }