예제 #1
0
        public void Test_Observer_Collection_Constructor_Int()
        {
            // ReSharper disable once CollectionNeverUpdated.Local
            var sut = new ObserverCollection(20);

            Assert.True(sut.Count == 0);
        }
        public void Follows_observed_collection()
        {
            var subject = new ObservableCollection<int>(new[] { 11, 12, 13, 14, 15, 16 });

            var observer = new ObserverCollection<int>();

            observer.Observe(subject);
            EnumerableAssert.AreEqual(subject, observer);

            subject.Insert(3, 77);
            EnumerableAssert.AreEqual(subject, observer);

            subject.Add(21);
            EnumerableAssert.AreEqual(subject, observer);

            subject.RemoveAt(0);
            EnumerableAssert.AreEqual(subject, observer);

            subject.RemoveAt(subject.Count - 1);
            EnumerableAssert.AreEqual(subject, observer);

            subject.Move(3, 0);
            EnumerableAssert.AreEqual(subject, observer);

            subject.Move(1, 5);
            EnumerableAssert.AreEqual(subject, observer);

            subject[4] = 777;
            EnumerableAssert.AreEqual(subject, observer);
        }
        public void Follows_observed_collection()
        {
            var subject = new ObservableCollection <int>(new[] { 11, 12, 13, 14, 15, 16 });

            var observer = new ObserverCollection <int>();

            observer.Observe(subject);
            EnumerableAssert.AreEqual(subject, observer);

            subject.Insert(3, 77);
            EnumerableAssert.AreEqual(subject, observer);

            subject.Add(21);
            EnumerableAssert.AreEqual(subject, observer);

            subject.RemoveAt(0);
            EnumerableAssert.AreEqual(subject, observer);

            subject.RemoveAt(subject.Count - 1);
            EnumerableAssert.AreEqual(subject, observer);

            subject.Move(3, 0);
            EnumerableAssert.AreEqual(subject, observer);

            subject.Move(1, 5);
            EnumerableAssert.AreEqual(subject, observer);

            subject[4] = 777;
            EnumerableAssert.AreEqual(subject, observer);
        }
예제 #4
0
 private void OnEnable()
 {
     AttackComp = GetComponentInChildren <AttackAnimator>();
     GetComponentInChildren <Animator>().runtimeAnimatorController = AnimationController;
     weapons.ForEach(t => t.SetActive(true));
     ObserverCollection.Call(StateEventLibrary.SUBSTATE_ENABLED);
 }
예제 #5
0
        private void Test(ObserverCollection <int> observerCollection)
        {
            var observer     = new Observer();
            var unSubscriber = observerCollection.Subscribe(observer);

            try
            {
                observerCollection.Subscribe(observer);
                Assert.Fail("重复订阅;");
            }
            catch (ArgumentException)
            {
            }

            observerCollection.NotifyNext(1);
            observerCollection.NotifyNext(2);
            observerCollection.NotifyNext(3);
            observerCollection.NotifyError(null);
            observerCollection.NotifyCompleted();

            Assert.AreEqual(1, observer.Queue.Dequeue());
            Assert.AreEqual(2, observer.Queue.Dequeue());
            Assert.AreEqual(3, observer.Queue.Dequeue());
            Assert.AreEqual(int.MinValue, observer.Queue.Dequeue());
            Assert.AreEqual(int.MaxValue, observer.Queue.Dequeue());

            unSubscriber.Dispose();
            observerCollection.NotifyNext(4);

            Assert.AreEqual(0, observer.Queue.Count);
        }
 public void NotifyObservers(Parity parity)
 {
     ObserverCollection.ForEach(sub =>
     {
         sub.Update(parity);
     });
 }
        public void RegisterObserver(IObserver subscriber)
        {
            ObserverCollection.Add(subscriber);

            if (Parity != null)
            {
                NotifyObservers(Parity);
            }
        }
예제 #8
0
 public NodeHealthMonitor( INodeConfiguration configuration, IEnumerable<INodeHealthBroadcaster> broadcasters )
 {
     Observers = new ObserverCollection<NodeHealth>();
     Configuration = configuration;
     UpdateTimer = new Timer( Configuration.HealthMonitorFrequency.TotalMilliseconds );
     UpdateTimer.Elapsed += UpdateHealth;
     broadcasters
         .ForEach( x => Subscribe( x ) );
 }
예제 #9
0
 public NodeHealthMonitor(INodeConfiguration configuration, IEnumerable <INodeHealthBroadcaster> broadcasters)
 {
     Observers            = new ObserverCollection <NodeHealth>();
     Configuration        = configuration;
     UpdateTimer          = new Timer(Configuration.HealthMonitorFrequency.TotalMilliseconds);
     UpdateTimer.Elapsed += UpdateHealth;
     broadcasters
     .ForEach(x => Subscribe(x));
 }
예제 #10
0
 private void Update()
 {
     if (Target != null && !isMoving)
     {
         Target = null;
         print(gameObject.name);
         ObserverCollection.Call(StateEventLibrary.DESTINATION_REACHED);
     }
     UnitComponent.Animator.SetFloat("Speed", navMeshAgent.velocity.magnitude);
 }
예제 #11
0
        private void FilterFirstType_Click(object sender, RoutedEventArgs e)
        {
            var listSource = new ObserverCollection<double>();

            var typeSensors = from s in sensor
                              where s.SensorType == "2"
                              select s.SensorValue;
          
            FilteredList.ItemsSource = listSource;

            typeSensors.ObserveOnDispatcher().Subscribe(listSource);
  
        }
예제 #12
0
        public void Handle(Join cmd)
        {
            var firstTimeJoined = members.Add(cmd.User);
            if (firstTimeJoined)
                Send(cmd.User, string.Format("{1} joined the room {0} ...", Id, cmd.User));

            IObserverCollection connections;
            if (!online.TryGetValue(cmd.User, out connections))
            {
                connections = new ObserverCollection();
                online.Add(cmd.User, connections);
            }

            connections.Add(cmd.Client);
        }
예제 #13
0
        public void Handle(Join cmd)
        {
            var firstTimeJoined = members.Add(cmd.User);

            if (firstTimeJoined)
            {
                Send(cmd.User, string.Format("{1} joined the room {0} ...", Id, cmd.User));
            }

            IObserverCollection connections;

            if (!online.TryGetValue(cmd.User, out connections))
            {
                connections = new ObserverCollection();
                online.Add(cmd.User, connections);
            }

            connections.Add(cmd.Client);
        }
예제 #14
0
        public MainViewModel()
        {
            _collection   = new FixMoveObservableCollection <int>();
            _newItemValue = _collection.Count + 1;

            _dataOptions = new List <DataOption>(new[]
            {
                new DataOption("Original", _collection),
                new DataOption("Distinct", _collection.ToQueryable().Distinct().ToObservable()),
                new DataOption("Ordered Ascending", _collection.ToQueryable().OrderBy(x => x).ToObservable()),
                new DataOption("Ordered Descending", _collection.ToQueryable().OrderByDescending(x => x).ToObservable()),
                new DataOption("Even Numbers", _collection.ToQueryable().Where(x => x % 2 == 0).ToObservable()),
                new DataOption("Ordered Even Numbers", _collection.ToQueryable().Where(x => x % 2 == 0).OrderBy(x => x).ToObservable()),
                new DataOption("Squares", _collection.ToQueryable().Select(x => x * x).ToObservable()),
            });

            _observer      = new ObserverCollection <int>();
            SelectedOption = _dataOptions.First();
        }
        public void Switches_to_new_observable()
        {
            var subject1 = new ObservableCollection <int>(new[] { 11, 12, 13, 14, 15, 16 });
            var subject2 = new ObservableCollection <int>(new[] { 13, 14, 15, 16, 17, 18 });

            var observer = new ObserverCollection <int>();

            observer.Observe(subject1);
            EnumerableAssert.AreEqual(subject1, observer);

            subject1.Insert(3, 77);
            EnumerableAssert.AreEqual(subject1, observer);

            observer.Observe(subject2);
            EnumerableAssert.AreEqual(subject2, observer);

            subject2.Insert(3, 77);
            EnumerableAssert.AreEqual(subject2, observer);
        }
        public void Switches_to_new_observable()
        {
            var subject1 = new ObservableCollection<int>(new[] { 11, 12, 13, 14, 15, 16 });
            var subject2 = new ObservableCollection<int>(new[] { 13, 14, 15, 16, 17, 18 });

            var observer = new ObserverCollection<int>();

            observer.Observe(subject1);
            EnumerableAssert.AreEqual(subject1, observer);

            subject1.Insert(3, 77);
            EnumerableAssert.AreEqual(subject1, observer);

            observer.Observe(subject2);
            EnumerableAssert.AreEqual(subject2, observer);

            subject2.Insert(3, 77);
            EnumerableAssert.AreEqual(subject2, observer);
        }
예제 #17
0
 public Map(IDictionary <TKey, MapNode> dictionary, ObserverCollection <MapEvent <TKey> > observers)
 {
     this.dictionary = dictionary;
     this.observers  = observers;
 }
예제 #18
0
 public Map(ObserverCollection <MapEvent <TKey> > observers) : this(new Dictionary <TKey, MapNode>(), observers)
 {
 }
예제 #19
0
 public void Awake()
 {
     ObserverCollection = new ObserverCollection(this);
 }
 public void UnregisterObserver(IObserver subscriber)
 {
     ObserverCollection.Remove(subscriber);
 }