예제 #1
0
        /// <summary>
        /// Gets current value of the register.
        /// </summary>
        /// <returns>Current value</returns>
        public T GetValue()
        {
            var currentMachine = this.Runtime.GetCurrentMachine();

            this.Runtime.SendEvent(this.RegisterMachine, SharedRegisterEvent.GetEvent(currentMachine.Id));
            var e = currentMachine.Receive(typeof(SharedRegisterResponseEvent <T>)).Result as SharedRegisterResponseEvent <T>;

            return(e.Value);
        }
예제 #2
0
        /// <summary>
        /// Reads and updates the register.
        /// </summary>
        /// <param name="func">Update function</param>
        /// <returns>Resulting value of the register</returns>
        public T Update(Func <T, T> func)
        {
            var currentMachine = this.Runtime.GetCurrentMachine();

            this.Runtime.SendEvent(this.RegisterMachine, SharedRegisterEvent.UpdateEvent(func, currentMachine.Id));
            var e = currentMachine.Receive(typeof(SharedRegisterResponseEvent <T>)).Result as SharedRegisterResponseEvent <T>;

            return(e.Value);
        }
예제 #3
0
 /// <summary>
 /// Sets current value of the register.
 /// </summary>
 /// <param name="value">Value</param>
 public void SetValue(T value)
 {
     this.Runtime.SendEvent(this.RegisterMachine, SharedRegisterEvent.SetEvent(value));
 }
예제 #4
0
 /// <summary>
 /// Initializes the shared register.
 /// </summary>
 /// <param name="value">Initial value</param>
 /// <param name="runtime">this.Runtime</param>
 public MockSharedRegister(T value, TestingRuntime runtime)
 {
     this.Runtime         = runtime;
     this.RegisterMachine = this.Runtime.CreateMachine(typeof(SharedRegisterMachine <T>));
     this.Runtime.SendEvent(this.RegisterMachine, SharedRegisterEvent.SetEvent(value));
 }
예제 #5
0
 /// <summary>
 /// Initializes the shared register.
 /// </summary>
 /// <param name="value">Initial value</param>
 /// <param name="Runtime">Runtime</param>
 public MockSharedRegister(T value, BugFindingRuntime Runtime)
 {
     this.Runtime    = Runtime;
     registerMachine = Runtime.CreateMachine(typeof(SharedRegisterMachine <T>));
     Runtime.SendEvent(registerMachine, SharedRegisterEvent.SetEvent(value));
 }