Ejemplo n.º 1
0
        public void CombinedKeysAreNotMarkedIfNone()
        {
            var st = Test(":a=7 :b=8 :c=9 x/=:d :e=1", changeDetection: true);

            var d        = st.GetVariableChangeSetKey(new VariableName(":d"));
            var e        = st.GetVariableChangeSetKey(new VariableName(":e"));
            var combined = ChangeSetKey.Combine(d, e);

            var cs = st.ChangeSet;

            Assert.IsFalse(cs.Contains(combined));
        }
Ejemplo n.º 2
0
        public void CombinedKeysAreMarkedIfAny()
        {
            var st = Test(":a=7 :b=8 :c=9 x/=:d :e=1", changeDetection: true);

            var a        = st.GetVariableChangeSetKey(new VariableName(":a"));
            var b        = st.GetVariableChangeSetKey(new VariableName(":b"));
            var c        = st.GetVariableChangeSetKey(new VariableName(":c"));
            var d        = st.GetVariableChangeSetKey(new VariableName(":c"));
            var combined = ChangeSetKey.Combine(a, ChangeSetKey.Combine(b, ChangeSetKey.Combine(c, d)));

            var cs = st.ChangeSet;

            Assert.IsTrue(cs.Contains(combined));
        }
Ejemplo n.º 3
0
 public static ChangeSetKey Combine(ChangeSetKey a, ChangeSetKey b)
 {
     return(new ChangeSetKey(a.Flag | b.Flag));
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Run the program for multiple ticks
        /// </summary>
        /// <param name="internals"></param>
        /// <param name="externals"></param>
        /// <param name="maxTicks">Maximum number of ticks to run</param>
        /// <param name="changed">Execution will end if any of the variables represented by this key are changed</param>
        /// <returns>Total ticks executed</returns>
        public int Run(ArraySegment <Value> internals, ArraySegment <Value> externals, int maxTicks, ChangeSetKey changed)
        {
            var ticks = 0;

            for (int i = 0; i < maxTicks; i++)
            {
                Tick(internals, externals);
                ticks++;

                if (ChangeSet.Contains(changed))
                {
                    break;
                }
            }

            return(ticks);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Test if this set contains the given key. May returns false positives. Will not return false negatives.
 /// </summary>
 /// <param name="key"></param>
 /// <returns></returns>
 public bool Contains(ChangeSetKey key)
 {
     return((_bits & key.Flag) != 0);
 }